docs: concepts-flows page (#6907)
* flow-nodes-and-edges * code-review --------- Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
This commit is contained in:
parent
14d3b02ecd
commit
8215008633
1 changed files with 129 additions and 0 deletions
|
|
@ -10,6 +10,135 @@ If you've already got a Langflow JSON file, import it into Langflow by clicking
|
||||||
|
|
||||||
Once imported, your flow is ready to use.
|
Once imported, your flow is ready to use.
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
You can drag and drop Langflow JSON files directly from your file system into the Langflow window to import a flow, even into the initial Langflow splash screen.
|
||||||
|
:::
|
||||||
|
|
||||||
## Export Flow
|
## Export Flow
|
||||||
|
|
||||||
The option to export a flow is available in the same menu as shown above. Once exported as JSON, you can import your flow into another Langflow instance.
|
The option to export a flow is available in the same menu as shown above. Once exported as JSON, you can import your flow into another Langflow instance.
|
||||||
|
|
||||||
|
## Langflow JSON file contents
|
||||||
|
|
||||||
|
Langflow JSON files contain [nodes](#nodes) and [edges](#edges) that describe components and connections, and [additional metadata](#additional-metadata-and-project-information) that describe the flow.
|
||||||
|
|
||||||
|
For an example Langflow JSON file, examine the [Basic Prompting.json](https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/initial_setup/starter_projects/Basic%20Prompting.json) file in the Langflow repository.
|
||||||
|
|
||||||
|
### Nodes
|
||||||
|
|
||||||
|
**Nodes** represent the components that make up the flow.
|
||||||
|
|
||||||
|
The `ChatInput` node is the entry point of the flow. It's the first node that will be executed.
|
||||||
|
|
||||||
|
`ChatInput-jFwUm` is a unique identifier for the node.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"description": "Get chat inputs from the Playground.",
|
||||||
|
"display_name": "Chat Input",
|
||||||
|
"id": "ChatInput-jFwUm",
|
||||||
|
"node": {
|
||||||
|
"base_classes": ["Message"],
|
||||||
|
"description": "Get chat inputs from the Playground.",
|
||||||
|
"display_name": "Chat Input",
|
||||||
|
"icon": "MessagesSquare",
|
||||||
|
"template": {
|
||||||
|
"input_value": {
|
||||||
|
"display_name": "Text",
|
||||||
|
"info": "Message to be passed as input.",
|
||||||
|
"value": "Hello"
|
||||||
|
},
|
||||||
|
"sender": {
|
||||||
|
"value": "User",
|
||||||
|
"options": ["Machine", "User"]
|
||||||
|
},
|
||||||
|
"sender_name": {
|
||||||
|
"value": "User"
|
||||||
|
},
|
||||||
|
"should_store_message": {
|
||||||
|
"value": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "ChatInput"
|
||||||
|
},
|
||||||
|
"position": {
|
||||||
|
"x": 689.5720422421635,
|
||||||
|
"y": 765.155834131403
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Edges
|
||||||
|
|
||||||
|
**Edges** represent the connections between nodes.
|
||||||
|
|
||||||
|
The connection between the `ChatInput` node and the `OpenAIModel` node is represented as an edge:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"className": "",
|
||||||
|
"data": {
|
||||||
|
"sourceHandle": {
|
||||||
|
"dataType": "ChatInput",
|
||||||
|
"id": "ChatInput-jFwUm",
|
||||||
|
"name": "message",
|
||||||
|
"output_types": ["Message"]
|
||||||
|
},
|
||||||
|
"targetHandle": {
|
||||||
|
"fieldName": "input_value",
|
||||||
|
"id": "OpenAIModel-OcXkl",
|
||||||
|
"inputTypes": ["Message"],
|
||||||
|
"type": "str"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"id": "reactflow__edge-ChatInput-jFwUm{œdataTypeœ:œChatInputœ,œidœ:œChatInput-jFwUmœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-OpenAIModel-OcXkl{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-OcXklœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}",
|
||||||
|
"source": "ChatInput-jFwUm",
|
||||||
|
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-jFwUmœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}",
|
||||||
|
"target": "OpenAIModel-OcXkl",
|
||||||
|
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œOpenAIModel-OcXklœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This edge shows that the `ChatInput` component outputs a `Message` type to the `target` node, which is the `OpenAIModel` node.
|
||||||
|
The `OpenAIModel` component accepts the `Message` type at the `input_value` field.
|
||||||
|
|
||||||
|
### Additional metadata and project information
|
||||||
|
|
||||||
|
Additional information about the flow is stored in the root `data` object.
|
||||||
|
|
||||||
|
* Metadata and project information including the name, description, and `last_tested_version` of the flow.
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "Basic Prompting",
|
||||||
|
"description": "Perform basic prompting with an OpenAI model.",
|
||||||
|
"tags": ["chatbots"],
|
||||||
|
"id": "1511c230-d446-43a7-bfc3-539e69ce05b8",
|
||||||
|
"last_tested_version": "1.0.19.post2",
|
||||||
|
"gradient": "2",
|
||||||
|
"icon": "Braces"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
* Visual information about the flow defining the initial position of the flow in the workspace.
|
||||||
|
```json
|
||||||
|
"viewport": {
|
||||||
|
"x": -37.61270157375441,
|
||||||
|
"y": -155.91266341888854,
|
||||||
|
"zoom": 0.7575251406952855
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Notes** are like comments to help you understand the flow within the workspace.
|
||||||
|
They may contain links, code snippets, and other information.
|
||||||
|
Notes are written in Markdown and stored as `node` objects.
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "undefined-kVLkG",
|
||||||
|
"node": {
|
||||||
|
"description": "## 📖 README\nPerform basic prompting with an OpenAI model.\n\n#### Quick Start\n- Add your **OpenAI API key** to the **OpenAI Model**\n- Open the **Playground** to chat with your bot.\n..."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue