import ThemedImage from "@theme/ThemedImage"; import useBaseUrl from "@docusaurus/useBaseUrl"; import ZoomableImage from "/src/theme/ZoomableImage.js"; import ReactPlayer from "react-player"; import Admonition from "@theme/Admonition"; # 🎨 Langflow Canvas The **Langflow canvas** is the central hub of Langflow, where you'll assemble new flows from components, run them, and see the results. To get a feel for the canvas, we'll examine a basic prompting flow. You can either build this flow yourself, or select **New Project** > **Basic prompting** to open a canvas with the flow pre-built. ## Flows, components, collections, and projects A [flow](#flow) is a pipeline of components connected together in the Langflow canvas. A [component](#component) is a single building block within a flow. A component has inputs, outputs, and parameters that define its functionality. A [collection](#collection) is a snapshot of the flows available in your database. Collections can be downloaded to local storage and uploaded for future use. A [project](#project) can be a component or a flow. Projects are saved as part of your collection. For example, the **OpenAI LLM** is a **component** of the **Basic prompting** flow, and the **flow** is stored in a **collection**. ## Flow A **flow** is a pipeline of components connected together in the Langflow canvas. For example, the [Basic prompting](../starter-projects/basic-prompting) flow is a pipeline of four components: In this flow, the **OpenAI LLM component** receives input (left side) and produces output (right side) - in this case, receiving input from the **Chat Input** and **Prompt** components and producing output to the **Chat Output** component. ## Component Components are the building blocks of flows. They consist of inputs, outputs, and parameters that define their functionality. These elements provide a convenient and straightforward way to compose LLM-based applications. Learn more about components and how they work in the LangChain [documentation](https://python.langchain.com/docs/integrations/components).
During the flow creation process, you will notice handles (colored circles) attached to one or both sides of a component. These handles represent the availability to connect to other components. Hover over a handle to see connection details.
For example, if you select a ConversationChain component, you will see orange o and purple{" "} o input handles. They indicate that this component accepts an LLM and a Memory component as inputs. The red asterisk * means that at least one input of that type is required.
{" "}
In the top right corner of the component, you'll find the component status icon (![Status icon](/logos/playbutton.svg)). Build the flow by clicking the **![Playground icon](/logos/botmessage.svg)Playground** at the bottom right of the canvas. Once the validation is complete, the status of each validated component should turn green (![Status icon](/logos/greencheck.svg)). To debug, hover over the component status to see the outputs.
--- ### Component Parameters Langflow components can be edited by clicking the component settings button.
Hide parameters with the **SHOW** button to reduce complexity and keep the canvas clean and intuitive for experimentation. Double-click the component name to rename it. ### Component menu Each component is a little unique, but they will all have a menu bar on top that looks something like this. The menu options are **Code**, **Save**, **Duplicate**, and **More**. ### Code menu The **Code** button displays your component's Python code. You can modify the code and save it. #### Save Save your component to the **Saved** components folder for reuse. #### Duplicate Duplicate your component in the canvas. #### More **Advanced** - modify the parameters of your component.
**Copy** - copy your component. **Share** - share your component to the Langflow store. **Docs** - view documentation for your component. **Delete** - delete your component. ### Group multiple components Components without input or output nodes can be grouped into a single component for reuse. This is useful for combining large flows into single components (like RAG with a vector database, for example) and saves space in the canvas. 1. Hold **Shift** and drag to select the **Prompt** and **OpenAI** components. 2. Select **Group**. 3. The components merge into a single component. 4. To save the new component, select **Save**. It can now be reused from the **Saved** components folder. ## Playground Run your flow by clicking the **![Playground icon](/logos/botmessage.svg)Playground** button. For more, see [Playground](../administration/playground). ## API The **API** button opens the API window, where Langflow presents code for integrating your flow into external applications. Modify the call's parameters in the **Tweaks** window, click the **Copy Code** or **Download** buttons, and paste your code where you want to use it. ### curl The **curl** tab displays sample code for posting a query to your flow. Modify the `input_value` to change your input message. Copy the code and run it to post a query to your flow and get the result. ```curl curl -X POST \ http://127.0.0.1:7863/api/v1/run/f2eefd80-bb91-4190-9279-0d6ffafeaac4\?stream\=false \ -H 'Content-Type: application/json'\ -d '{"input_value": "is anybody there?", "output_type": "chat", "input_type": "chat", "tweaks": { "Prompt-uxBqP": {}, "OpenAIModel-k39HS": {}, "ChatOutput-njtka": {}, "ChatInput-P3fgL": {} }}' ``` Result: ``` {"session_id":"f2eefd80-bb91-4190-9279-0d6ffafeaac4:53856a772b8e1cfcb3dd2e71576b5215399e95bae318d3c02101c81b7c252da3","outputs":[{"inputs":{"input_value":"is anybody there?"},"outputs":[{"results":{"result":"Arrr, me hearties! Aye, this be Captain [Your Name] speakin'. What be ye needin', matey?"},"artifacts":{"message":"Arrr, me hearties! Aye, this be Captain [Your Name] speakin'. What be ye needin', matey?","sender":"Machine","sender_name":"AI"},"messages":[{"message":"Arrr, me hearties! Aye, this be Captain [Your Name] speakin'. What be ye needin', matey?","sender":"Machine","sender_name":"AI","component_id":"ChatOutput-njtka"}],"component_display_name":"Chat Output","component_id":"ChatOutput-njtka"}]}]}% ``` ### Python API The **Python API** tab displays code to interact with your flow using the Python HTTP requests library. ### Python Code The **Python Code** tab displays code to interact with your flow's `.json` file using the Langflow runtime. ### Chat Widget HTML The **Chat Widget HTML** tab displays code that can be inserted in the `` of your HTML to interact with your flow. For more, see the [Chat widget documentation](../administration/chat-widget). ### Tweaks The **Tweaks** tab displays the available parameters for your flow. Modifying the parameters changes the code parameters across all windows. For example, changing the **Chat Input** component's `input_value` will change that value across all API calls.
## Collection A collection is a snapshot of flows available in a database. Collections can be downloaded to local storage and uploaded for future use.
## Project A **Project** can be a flow or a component. To view your saved projects, select **My Collection**. Your **Projects** are displayed. Click the **![Playground icon](/logos/botmessage.svg) Playground** button to run a flow from the **My Collection** screen. In the top left corner of the screen are options for **Download Collection**, **Upload Collection**, and **New Project**. Select **Download Collection** to save your project to your local machine. This downloads all flows and components as a `.json` file. Select **Upload Collection** to upload a flow or component `.json` file from your local machine. Select **New Project** to create a new project. In addition to a blank canvas, [starter projects](../starter-projects/basic-prompting) are also available. ## Project options menu To see options for your project, in the upper left corner of the canvas, select the dropdown menu. **New** - Start a new project. **Duplicate** - Duplicate the current flow as a new project. **Settings** - Modify the project's **Name** or **Description**. **Import** - Upload a flow `.json` file from your local machine. **Export** - Download your current project to your local machine as a `.json` file. **Undo** or **Redo** - Undo or redo your last action.import ThemedImage from "@theme/ThemedImage"; import useBaseUrl from "@docusaurus/useBaseUrl"; import ZoomableImage from "/src/theme/ZoomableImage.js"; import ReactPlayer from "react-player"; import Admonition from "@theme/Admonition";