+
+Learn how to build a flow starting with the **Tool calling agent** component, and see how it can help you solve problems.
+
+## Prerequisites
+
+- [An OpenAI API key](https://platform.openai.com/)
+- [A Search API key](https://www.searchapi.io/)
+
+## Create a problem-solving agent with AgentComponent
+
+Create a problem-solving agent in Langflow, starting with the **Tool calling agent**.
+
+1. Click **New Flow**, and then click **Blank Flow**.
+2. Click and drag an **Agent** component to your workspace.
+The default settings are acceptable for now, so this guide assumes you're using **Open AI** for the LLM.
+3. Add your **Open AI API Key** to the **Agent** component.
+4. Add **Chat input** and **Chat output** components to your flow, and connect them to the tool calling agent.
+
+
+
+This basic flow enables you to chat with the agent with the **Playground** after you've connected some **Tools**.
+
+5. Connect the **Search API** tool component to your agent.
+6. Add your **Search API key** to the component.
+Your agent can now query the Search API for information.
+7. Connect a **Calculator** tool for solving basic math problems.
+8. Connect an **API Request** component to the agent.
+This component is not in the **Tools** category, but the agent can still use it as a tool by enabling **Tool Mode**.
+**Tool Mode** makes a component into a tool by adding a **Toolset** port that can be connected to an agent's **Tools** port.
+To enable **Tool Mode** on the component, click **Tool Mode**.
+The component's fields change dynamically based on the mode it's in.
+
+
+
+## Solve problems with the agent
+
+Your agent now has tools for performing a web search, doing basic math, and performing API requests. You can solve many problems with just these capabilities.
+
+* Your tabletop game group cancelled, and you're stuck at home.
+Point **API Request** to an online rules document, tell your agent `You are a fun game organizer who uses the tools at your disposal`, and play a game.
+* You need to learn a new software language quickly.
+Point **API Request** to some docs, tell your agent `You are a knowledgeable software developer who uses the tools at your disposal`, and start learning.
+
+See what problems you can solve with this flow. As your problem becomes more specialized, add a tool. For example, the [simple agent starter project](/starter-projects-simple-agent) adds a Python REPL component to solve math problems that are too challenging for the calculator.
+
+## Use an agent as a tool
+
+The agent component itself also supports **Tool Mode** for creating multi-agent flows.
+
+Add an agent to your problem-solving flow that uses a different OpenAI model for more specialized problem solving.
+
+1. Click and drag an **Agent** component to your workspace.
+2. Add your **Open AI API Key** to the **Agent** component.
+3. In the **Model Name** field, select `gpt-4o`.
+4. Click **Tool Mode** to use this new agent as a tool.
+5. Connect the new agent's **Toolset** port to the previously created agent's **Tools** port.
+6. Connect **Search API** and **API Request** to the new agent.
+The new agent will use `gpt-4o` for the larger tasks of scraping and searching information that requires large context windows.
+The problem-solving agent will now use this agent as a tool, with its unique LLM and toolset.
+
+
+
+## Add custom components as tools {#components-as-tools}
+
+An agent can use custom components as tools.
+
+1. To add a custom component to the problem-solving agent flow, click **New Custom Component**.
+
+2. Add custom Python code to the custom component.
+Here's an example text analyzer for sentiment analysis.
+
+```python
+from langflow.custom import Component
+from langflow.io import MessageTextInput, Output
+from langflow.schema import Data
+import re
+
+class TextAnalyzerComponent(Component):
+ display_name = "Text Analyzer"
+ description = "Analyzes and transforms input text."
+ documentation: str = "http://docs.langflow.org/components/custom"
+ icon = "chart-bar"
+ name = "TextAnalyzerComponent"
+
+ inputs = [
+ MessageTextInput(
+ name="input_text",
+ display_name="Input Text",
+ info="Enter text to analyze",
+ value="Hello, World!",
+ tool_mode=True,
+ ),
+ ]
+
+ outputs = [
+ Output(display_name="Analysis Result", name="output", method="analyze_text"),
+ ]
+
+ def analyze_text(self) -> Data:
+ text = self.input_text
+
+ # Perform text analysis
+ word_count = len(text.split())
+ char_count = len(text)
+ sentence_count = len(re.findall(r'\w+[.!?]', text))
+
+ # Transform text
+ reversed_text = text[::-1]
+ uppercase_text = text.upper()
+
+ analysis_result = {
+ "original_text": text,
+ "word_count": word_count,
+ "character_count": char_count,
+ "sentence_count": sentence_count,
+ "reversed_text": reversed_text,
+ "uppercase_text": uppercase_text
+ }
+
+ data = Data(value=analysis_result)
+ self.status = data
+ return data
+```
+
+3. To enable the custom component as a tool, click **Tool Mode**.
+4. Connect the tool output to the agent's tools input.
+5. Ask the agent, `What tools are you using to answer my questions?`
+Your response will be similar to the following, and will include your custom component.
+```plain
+I have access to several tools that assist me in answering your questions, including:
+Search API: This allows me to search for recent information or results on the web.
+HTTP Requests: I can make HTTP requests to various URLs to retrieve data or interact with APIs.
+Calculator: I can evaluate basic arithmetic expressions.
+Text Analyzer: I can analyze and transform input text.
+Current Date and Time: I can retrieve the current date and time in various time zones.
+```
+
+## Make any component a tool
+
+These components support **Tool Mode**:
+
+* **URL**
+* **API request**
+* **Calculator**
+* **Current date**
+
+If the component you want to use as a tool doesn't have a **Tool Mode** button, add `tool_mode=True` to the component's code under `MessageTextInput`.
+
+For example, in the [components as tools](#components-as-tools) example above, `tool_mode=True,` is added so the custom component can be used as a tool.
+
+**Tool Mode** supports the `MessageTextInput` type.
+
+```python
+inputs = [
+ MessageTextInput(
+ name="input_text",
+ display_name="Input Text",
+ info="Enter text to analyze",
+ value="Hello, World!",
+ tool_mode=True,
+ ),
+]
+```
+
+## Add flows as tools
+
+An agent can use flows that are saved in your workspace as tools with the [Flow as Tool](/components-logic#flow-as-tool) component.
+
+1. To add a **Flow as Tool** component, click and drag a **Flow as Tool** component to your workspace.
+2. Select the flow you want the agent to use as a tool.
+3. Connect the tool output to the agent's tools input.
+4. Ask the agent, `What tools are you using to answer my questions?`
+Your **Flow as Tool** flow should be visible in the response.
+
+
diff --git a/docs/docs/Agents/agents-overview.md b/docs/docs/Agents/agents-overview.md
new file mode 100644
index 0000000000000000000000000000000000000000..d8901eb76ba059d1e6a9f255d02891dc818c95ec
--- /dev/null
+++ b/docs/docs/Agents/agents-overview.md
@@ -0,0 +1,15 @@
+---
+title: Agents overview
+sidebar_position: 1
+slug: /agents-overview
+---
+
+**Agents** are AI systems that use LLMs as a brain to analyze problems and select external tools.
+
+Instead of developers having to create logical statements to direct every possible path of a program, an agent can operate with autonomy. An agent can leverage external tools and APIs to gather information and take action, demonstrate chain-of-thought reasoning, and generate tailored text for specific purposes.
+
+To simplify the development of agents, Langflow created a custom [Tool calling agent](/components-agents#agent-component) component that simplifies configuration and lets developers focus on solving problems with agents.
+
+
+
+To get started, see [Create a problem solving agent](/agents-tool-calling-agent-component).
\ No newline at end of file
diff --git a/docs/docs/Components/_category_.json b/docs/docs/Components/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..62531e49ed926298413598e9615ded1745de85c4
--- /dev/null
+++ b/docs/docs/Components/_category_.json
@@ -0,0 +1 @@
+{"position":6, "label":"Components"}
\ No newline at end of file
diff --git a/docs/docs/Components/components-agents.md b/docs/docs/Components/components-agents.md
new file mode 100644
index 0000000000000000000000000000000000000000..53b73768fb9f0dd7116af47353ad6439b81d06e8
--- /dev/null
+++ b/docs/docs/Components/components-agents.md
@@ -0,0 +1,309 @@
+---
+title: Agents
+sidebar_position: 12
+slug: /components-agents
+---
+
+# Agent components in Langflow
+
+Agent components are used to define the behavior and capabilities of AI agents in your flow. Agents can interact with APIs, databases, and other services and use LLMs as a reasoning engine to decide which course to take in your flow.
+
+## Agent component {#agent-component}
+
+This component creates an agent that can use tools to answer questions and perform tasks based on given instructions.
+
+For more information on this component, see the [tool calling agent documentation](/agents-tool-calling-agent-component).
+
+### Inputs
+
+| Name | Type | Description |
+|----------------------|----------|-------------------------------------------------------------------------------------------------|
+| agent_llm | Dropdown | The provider of the language model that the agent will use to generate responses. |
+| system_prompt | String | Initial instructions and context provided to guide the agent's behavior. |
+| tools | List | List of tools available for the agent to use. |
+| input_value | String | The input task or question for the agent to process. |
+| add_current_date_tool| Boolean | If true, adds a tool to the agent that returns the current date. |
+
+### Outputs
+
+| Name | Type | Description |
+|----------|---------|-------------------------------------------------|
+| response | Message | The agent's response to the given input task. |
+
+## CSV Agent
+
+This component creates a CSV agent from a CSV file and LLM.
+
+### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| llm | LanguageModel | Language model to use for the agent |
+| path | File | Path to the CSV file |
+| agent_type | String | Type of agent to create (zero-shot-react-description, openai-functions, or openai-tools) |
+
+### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| agent | AgentExecutor | CSV agent instance |
+
+## CrewAI Agent
+
+This component represents an Agent of CrewAI, allowing for the creation of specialized AI agents with defined roles, goals, and capabilities within a crew.
+
+For more information, see the [CrewAI documentation](https://docs.crewai.com/core-concepts/Agents/).
+
+### Inputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| role | Role | The role of the agent |
+| goal | Goal | The objective of the agent |
+| backstory | Backstory | The backstory of the agent |
+| tools | Tools | Tools at agent's disposal |
+| llm | Language Model | Language model that will run the agent |
+| memory | Memory | Whether the agent should have memory or not |
+| verbose | Verbose | Enables verbose output |
+| allow_delegation | Allow Delegation | Whether the agent is allowed to delegate tasks to other agents |
+| allow_code_execution | Allow Code Execution | Whether the agent is allowed to execute code |
+| kwargs | kwargs | Additional keyword arguments for the agent |
+
+### Outputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| output | Agent | The constructed CrewAI Agent object |
+
+## Hierarchical Crew
+
+This component represents a group of agents, managing how they should collaborate and the tasks they should perform in a hierarchical structure. This component allows for the creation of a crew with a manager overseeing the task execution.
+
+For more information, see the [CrewAI documentation](https://docs.crewai.com/how-to/Hierarchical/).
+
+### Inputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| agents | Agents | List of Agent objects representing the crew members |
+| tasks | Tasks | List of HierarchicalTask objects representing the tasks to be executed |
+| manager_llm | Manager LLM | Language model for the manager agent (optional) |
+| manager_agent | Manager Agent | Specific agent to act as the manager (optional) |
+| verbose | Verbose | Enables verbose output for detailed logging |
+| memory | Memory | Specifies the memory configuration for the crew |
+| use_cache | Use Cache | Enables caching of results |
+| max_rpm | Max RPM | Sets the maximum requests per minute |
+| share_crew | Share Crew | Determines if the crew information is shared among agents |
+| function_calling_llm | Function Calling LLM | Specifies the language model for function calling |
+
+### Outputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| crew | Crew | The constructed Crew object with hierarchical task execution |
+
+## JSON Agent
+
+This component creates a JSON agent from a JSON or YAML file and an LLM.
+
+### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| llm | LanguageModel | Language model to use for the agent |
+| path | File | Path to the JSON or YAML file |
+
+### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| agent | AgentExecutor | JSON agent instance |
+
+## OpenAI Tools Agent
+
+This component creates an OpenAI Tools Agent using LangChain.
+
+For more information, see the [LangChain documentation](https://python.langchain.com/v0.1/docs/modules/agents/agent_types/openai_tools/).
+
+### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| llm | LanguageModel | Language model to use for the agent (must be tool-enabled) |
+| system_prompt | String | System prompt for the agent |
+| user_prompt | String | User prompt template (must contain 'input' key) |
+| chat_history | List[Data] | Optional chat history for the agent |
+| tools | List[Tool] | List of tools available to the agent |
+
+### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| agent | AgentExecutor | OpenAI Tools Agent instance |
+
+## OpenAPI Agent
+
+This component creates an OpenAPI Agent to interact with APIs defined by OpenAPI specifications.
+
+For more information, see the LangChain documentation on OpenAPI Agents.
+
+### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| llm | LanguageModel | Language model to use for the agent |
+| path | File | Path to the OpenAPI specification file (JSON or YAML) |
+| allow_dangerous_requests | Boolean | Whether to allow potentially dangerous API requests |
+
+### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| agent | AgentExecutor | OpenAPI Agent instance |
+
+## SQL Agent
+
+This component creates a SQL Agent to interact with SQL databases.
+
+### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| llm | LanguageModel | Language model to use for the agent |
+| database_uri | String | URI of the SQL database to connect to |
+| extra_tools | List[Tool] | Additional tools to provide to the agent (optional) |
+
+### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| agent | AgentExecutor | SQL Agent instance |
+
+## Sequential Crew
+
+This component represents a group of agents with tasks that are executed sequentially. This component allows for the creation of a crew that performs tasks in a specific order.
+
+For more information, see the [CrewAI documentation](https://docs.crewai.com/how-to/Sequential/).
+
+### Inputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| tasks | Tasks | List of SequentialTask objects representing the tasks to be executed |
+| verbose | Verbose | Enables verbose output for detailed logging |
+| memory | Memory | Specifies the memory configuration for the crew |
+| use_cache | Use Cache | Enables caching of results |
+| max_rpm | Max RPM | Sets the maximum requests per minute |
+| share_crew | Share Crew | Determines if the crew information is shared among agents |
+| function_calling_llm | Function Calling LLM | Specifies the language model for function calling |
+
+### Outputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| crew | Crew | The constructed Crew object with sequential task execution |
+
+## Sequential task agent
+
+This component creates a CrewAI Task and its associated Agent, allowing for the definition of sequential tasks with specific agent roles and capabilities.
+
+For more information, see the [CrewAI documentation](https://docs.crewai.com/how-to/Sequential/).
+
+### Inputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| role | Role | The role of the agent |
+| goal | Goal | The objective of the agent |
+| backstory | Backstory | The backstory of the agent |
+| tools | Tools | Tools at agent's disposal |
+| llm | Language Model | Language model that will run the agent |
+| memory | Memory | Whether the agent should have memory or not |
+| verbose | Verbose | Enables verbose output |
+| allow_delegation | Allow Delegation | Whether the agent is allowed to delegate tasks to other agents |
+| allow_code_execution | Allow Code Execution | Whether the agent is allowed to execute code |
+| agent_kwargs | Agent kwargs | Additional kwargs for the agent |
+| task_description | Task Description | Descriptive text detailing task's purpose and execution |
+| expected_output | Expected Task Output | Clear definition of expected task outcome |
+| async_execution | Async Execution | Boolean flag indicating asynchronous task execution |
+| previous_task | Previous Task | The previous task in the sequence (for chaining) |
+
+### Outputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| task_output | Sequential Task | List of SequentialTask objects representing the created task(s) |
+
+## Tool Calling Agent
+
+This component creates a Tool Calling Agent using LangChain.
+
+### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| llm | LanguageModel | Language model to use for the agent |
+| system_prompt | String | System prompt for the agent |
+| user_prompt | String | User prompt template (must contain 'input' key) |
+| chat_history | List[Data] | Optional chat history for the agent |
+| tools | List[Tool] | List of tools available to the agent |
+
+### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| agent | AgentExecutor | Tool Calling Agent instance |
+
+## Vector Store Agent
+
+This component creates a Vector Store Agent using LangChain.
+
+### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| llm | LanguageModel | Language model to use for the agent |
+| vectorstore | VectorStoreInfo | Vector store information for the agent to use |
+
+### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| agent | AgentExecutor | Vector Store Agent instance |
+
+## Vector Store Router Agent
+
+This component creates a Vector Store Router Agent using LangChain.
+
+### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| llm | LanguageModel | Language model to use for the agent |
+| vectorstores | List[VectorStoreInfo] | List of vector store information for the agent to route between |
+
+### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| agent | AgentExecutor | Vector Store Router Agent instance |
+
+## XML Agent
+
+This component creates an XML Agent using LangChain.
+
+The agent uses XML formatting for tool instructions to the Language Model.
+
+### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| llm | LanguageModel | Language model to use for the agent |
+| user_prompt | String | Custom prompt template for the agent (includes XML formatting instructions) |
+| tools | List[Tool] | List of tools available to the agent |
+
+### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| agent | AgentExecutor | XML Agent instance |
\ No newline at end of file
diff --git a/docs/docs/Components/components-custom-components.md b/docs/docs/Components/components-custom-components.md
new file mode 100644
index 0000000000000000000000000000000000000000..8b5ef11a576130dd69f64dace027ff18c0b8e247
--- /dev/null
+++ b/docs/docs/Components/components-custom-components.md
@@ -0,0 +1,494 @@
+---
+title: Custom Components
+sidebar_position: 8
+slug: /components-custom-components
+---
+
+# Custom Components
+
+Custom components are created within Langflow and extend the platform's functionality with custom, resusable Python code.
+
+Since Langflow operates with Python behind the scenes, you can implement any Python function within a Custom Component. This means you can leverage the power of libraries such as Pandas, Scikit-learn, Numpy, and thousands of other packages to create components that handle data processing in unlimited ways. You can use any type as long as the type is properly annotated in the output methods (e.g., `> list[int]`).
+
+Custom Components create reusable and configurable components to enhance the capabilities of Langflow, making it a powerful tool for developing complex processing between user and AI messages.
+
+## How to Create Custom Components
+
+Creating custom components in Langflow involves creating a Python class that defines the component's functionality, inputs, and outputs.
+The default code provides a working structure for your custom component.
+```python
+# from langflow.field_typing import Data
+from langflow.custom import Component
+from langflow.io import MessageTextInput, Output
+from langflow.schema import Data
+
+
+class CustomComponent(Component):
+ display_name = "Custom Component"
+ description = "Use as a template to create your own component."
+ documentation: str = "http://docs.langflow.org/components/custom"
+ icon = "custom_components"
+ name = "CustomComponent"
+
+ inputs = [
+ MessageTextInput(name="input_value", display_name="Input Value", value="Hello, World!"),
+ ]
+
+ outputs = [
+ Output(display_name="Output", name="output", method="build_output"),
+ ]
+
+ def build_output(self) -> Data:
+ data = Data(value=self.input_value)
+ self.status = data
+ return data
+
+```
+
+You can create your class in your favorite text editor outside of Langflow and paste it in later, or just follow along in the code pane.
+
+1. In Langflow, from under **Helpers**, drag a **Custom Component** into the workspace.
+2. Open the component's code pane.
+3. Import dependencies.
+Your custom component inherits from the langflow `Component` class so you need to include it.
+```python
+from langflow.custom import Component
+from langflow.io import MessageTextInput, Output
+from langflow.schema import Data
+```
+4. **Define the Class**: Start by defining a Python class that inherits from `Component`. This class will encapsulate the functionality of your custom component.
+
+```python
+class CustomComponent(Component):
+ display_name = "Custom Component"
+ description = "Use as a template to create your own component."
+ documentation: str = "http://docs.langflow.org/components/custom"
+ icon = "custom_components"
+ name = "CustomComponent"
+```
+5. **Specify Inputs and Outputs**: Use Langflow's input and output classes to define the inputs and outputs of your component. They should be declared as class attributes.
+```python
+ inputs = [
+ MessageTextInput(name="input_value", display_name="Input Value", value="Hello, World!"),
+ ]
+
+ outputs = [
+ Output(display_name="Output", name="output", method="build_output"),
+ ]
+```
+6. **Implement Output Methods**: Implement methods for each output, which contains the logic of your component. These methods can access input values using `self.
+
+
+On the top right corner of the component, you'll find the a play button to run a component. Once it runs, a status icon appears and you can hover over that to visualize success or error messages. Start interacting with your AI by clicking the **Playground** at the bottom right of the workspace.
+
+
+## Component menu {#7e3f2f8ff5074b2fb3eee97c9cfaabe7}
+
+
+Each component is unique, but they all have a menu bar at the top that looks something like this.
+
+
+
+
+
+It consists of options such as:
+
+- **Code**Â â Modify the component's Python code and save it.
+- **Controls**Â â Adjust all parameters of a component.
+- **Freeze Path**Â â After a component runs, lock its previous output state to prevent it from re-running.
+
+Click **All** (the "..." button) to see all options.
+
+
+## Output preview {#ed7b3c34e0774b8a916b0e68821c9a7a}
+
+
+Langflow includes an output visualizer for components that opens a pop-up screen. This allows you to easily inspect and monitor transmissions between components, providing instant feedback on your workflows.
+
+
+## Advanced settings {#b6430d4903df44f0ba4618a558c83d7b}
+
+
+Langflow components can be edited by clicking the **Advanced Settings** button.
+
+
+Hide parameters with the **Show** button to reduce complexity and keep the workspace clean and intuitive for experimentation.
+
+
+You can also double-click a component's name and description to modify those. Component descriptions accept markdown syntax.
+
+
+## Group components {#c3f5ed818e3b40ceb6534dc358e1a5f2}
+
+
+Multiple components can be grouped into a single component for reuse. This is useful when combining large flows into single components (like RAG with a vector database, for example) and saving space.
+
+1. Hold **Shift** and drag to select components.
+2. Select **Group**.
+3. The components merge into a single component.
+4. Double-click the name and description to change them.
+5. Save your grouped component to in the sidebar for later use!
+
+## Component version {#887fd587589448dc8c27336d1c235b9b}
+
+A component's state is stored in a database, while sidebar components are like starter templates. As soon as you drag a component from the sidebar to the workspace, the two components are no longer in parity.
+
+
+The component will keep the version number it was initialized to the workspace with. Click the **Update Component** icon (exclamation mark) to bring the component up to the `latest` version. This will change the code of the component in place so you can validate that the component was updated by checking its Python code before and after updating it.
diff --git a/docs/docs/Components/components-prompts.md b/docs/docs/Components/components-prompts.md
new file mode 100644
index 0000000000000000000000000000000000000000..55ff7d7473623be9d00e280a298b58bcab0a5160
--- /dev/null
+++ b/docs/docs/Components/components-prompts.md
@@ -0,0 +1,46 @@
+---
+title: Prompts
+sidebar_position: 2
+slug: /components-prompts
+---
+
+# Prompts
+
+A prompt serves as the input to a language model, comprising multiple components that can be parameterized using prompt templates.
+
+Prompt templates provide a systematic approach for generating prompts, allowing for reproducible customization through defined input variables.
+
+### Parameters
+
+#### Inputs
+
+| Name | Display Name | Info |
+|----------|--------------|-------------------------------------------------------------------|
+| template | Template | Create a prompt template with dynamic variables. |
+
+#### Outputs
+
+| Name | Display Name | Info |
+|--------|----------------|--------------------------------------------------------|
+| prompt | Prompt Message | The built prompt message returned by the `build_prompt` method. |
+
+## Langchain Hub Prompt Template
+
+This component fetches prompts from the [Langchain Hub](https://docs.smith.langchain.com/old/category/prompt-hub).
+
+When a prompt is loaded, the component generates input fields for custom variables. For example, the default prompt "efriis/my-first-prompt" generates fields for `profession` and `question`.
+
+### Parameters
+
+#### Inputs
+
+| Name | Display Name | Info |
+|--------------------|---------------------------|------------------------------------------|
+| langchain_api_key | Your LangChain API Key | The LangChain API Key to use. |
+| langchain_hub_prompt| LangChain Hub Prompt | The LangChain Hub prompt to use. |
+
+#### Outputs
+
+| Name | Display Name | Info |
+|--------|--------------|-------------------------------------------------------------------|
+| prompt | Build Prompt | The built prompt message returned by the `build_prompt` method. |
diff --git a/docs/docs/Components/components-rag.md b/docs/docs/Components/components-rag.md
new file mode 100644
index 0000000000000000000000000000000000000000..9af9468fbfa4d27dbdcf6f7049949496e93fef59
--- /dev/null
+++ b/docs/docs/Components/components-rag.md
@@ -0,0 +1,36 @@
+---
+title: RAG
+sidebar_position: 9
+slug: /components-rag
+---
+
+RAG (Retrieval-Augmented Generation) components process a user query by retrieving relevant documents and generating a concise summary that addresses the user's question.
+
+## Vectara RAG
+
+This component leverages Vectara's Retrieval Augmented Generation (RAG) capabilities to search and summarize documents based on the provided input. For more information, see the [Vectara documentation](https://docs.vectara.com/docs/).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-----------------------|--------------|------------------------------------------------------------|
+| vectara_customer_id | String | Vectara customer ID |
+| vectara_corpus_id | String | Vectara corpus ID |
+| vectara_api_key | SecretString | Vectara API key |
+| search_query | String | The query to receive an answer on |
+| lexical_interpolation | Float | Hybrid search factor (0.005 to 0.1) |
+| filter | String | Metadata filters to narrow the search |
+| reranker | String | Reranker type (mmr, rerank_multilingual_v1, none) |
+| reranker_k | Integer | Number of results to rerank (1 to 100) |
+| diversity_bias | Float | Diversity bias for MMR reranker (0 to 1) |
+| max_results | Integer | Maximum number of search results to summarize (1 to 100) |
+| response_lang | String | Language code for the response (e.g., "eng", "auto") |
+| prompt | String | Prompt name for summarization |
+
+#### Outputs
+
+| Name | Type | Description |
+|--------|---------|-----------------------|
+| answer | Message | Generated RAG response|
\ No newline at end of file
diff --git a/docs/docs/Components/components-tools.md b/docs/docs/Components/components-tools.md
new file mode 100644
index 0000000000000000000000000000000000000000..0a6d95a5108b48248e59c0fe6f1a90f179943fcd
--- /dev/null
+++ b/docs/docs/Components/components-tools.md
@@ -0,0 +1,366 @@
+# Tools
+
+Tool components are used to interact with external services, APIs, and tools. They can be used to search the web, query databases, and perform other tasks.
+
+## Bing Search API
+
+This component allows you to call the Bing Search API.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|------------------------|--------------|---------------------------------------|
+| bing_subscription_key | SecretString | Bing API subscription key |
+| input_value | String | Search query input |
+| bing_search_url | String | Custom Bing Search URL (optional) |
+| k | Integer | Number of search results to return |
+
+#### Outputs
+
+| Name | Type | Description |
+|---------|-----------|--------------------------------------|
+| results | List[Data]| List of search results |
+| tool | Tool | Bing Search tool for use in LangChain|
+
+## Calculator Tool
+
+This component creates a tool for performing basic arithmetic operations on a given expression.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|------------|--------|--------------------------------------------------------------------|
+| expression | String | The arithmetic expression to evaluate (e.g., `4*4*(33/22)+12-20`). |
+
+#### Outputs
+
+| Name | Type | Description |
+|--------|------|-------------------------------------------------|
+| result | Tool | Calculator tool for use in LangChain |
+
+This component allows you to evaluate basic arithmetic expressions. It supports addition, subtraction, multiplication, division, and exponentiation. The tool uses a secure evaluation method that prevents the execution of arbitrary Python code.
+
+## Combinatorial Reasoner
+
+This component runs Icosa's Combinatorial Reasoning (CR) pipeline on an input to create an optimized prompt with embedded reasons. Sign up for access here: https://forms.gle/oWNv2NKjBNaqqvCx6
+
+### Parameters
+
+#### Inputs
+| Name | Display Name | Description |
+|------------------------|--------------|---------------------------------------|
+| prompt | Prompt | Input to run CR on |
+| openai_api_key | OpenAI API Key | OpenAI API key for authentication |
+| username | Username | Username for Icosa API authentication |
+| password | Password | Password for Icosa API authentication |
+| model_name | Model Name | OpenAI LLM to use for reason generation|
+
+#### Outputs
+
+| Name | Display Name | Description |
+|---------|-----------|--------------------------------------|
+| optimized_prompt | Optimized Prompt| A message object containing the optimized prompt |
+| reasons | Selected Reasons| A list of the selected reasons that are embedded in the optimized prompt|
+
+## Glean Search API
+
+This component allows you to call the Glean Search API.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|------------------------|--------------|---------------------------------------|
+| glean_api_url | String | URL of the Glean API |
+| glean_access_token | SecretString | Access token for Glean API authentication |
+| query | String | Search query input |
+| page_size | Integer | Number of results per page (default: 10) |
+| request_options | Dict | Additional options for the API request (optional) |
+
+#### Outputs
+
+| Name | Type | Description |
+|---------|-----------|--------------------------------------|
+| results | List[Data]| List of search results |
+| tool | Tool | Glean Search tool for use in LangChain|
+
+## Google Search API
+
+This component allows you to call the Google Search API.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|------------------------|--------------|---------------------------------------|
+| google_api_key | SecretString | Google API key for authentication |
+| google_cse_id | SecretString | Google Custom Search Engine ID |
+| input_value | String | Search query input |
+| k | Integer | Number of search results to return |
+
+#### Outputs
+
+| Name | Type | Description |
+|---------|-----------|--------------------------------------|
+| results | List[Data]| List of search results |
+| tool | Tool | Google Search tool for use in LangChain|
+
+## Google Serper API
+
+This component allows you to call the Serper.dev Google Search API.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|------------------------|--------------|---------------------------------------|
+| serper_api_key | SecretString | API key for Serper.dev authentication |
+| input_value | String | Search query input |
+| k | Integer | Number of search results to return |
+
+#### Outputs
+
+| Name | Type | Description |
+|---------|-----------|--------------------------------------|
+| results | List[Data]| List of search results |
+| tool | Tool | Google Serper search tool for use in LangChain|
+
+## Python Code Structured Tool
+
+This component creates a structured tool from Python code using a dataclass.
+
+The component dynamically updates its configuration based on the provided Python code, allowing for custom function arguments and descriptions.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|------------------------|--------------|---------------------------------------|
+| tool_code | String | Python code for the tool's dataclass |
+| tool_name | String | Name of the tool |
+| tool_description | String | Description of the tool |
+| return_direct | Boolean | Whether to return the function output directly |
+| tool_function | String | Selected function for the tool |
+| global_variables | Dict | Global variables or data for the tool |
+
+#### Outputs
+
+| Name | Type | Description |
+|-------------|-------|-----------------------------------------|
+| result_tool | Tool â Structured tool created from the Python code |
+
+## Python REPL Tool
+
+This component creates a Python REPL (Read-Eval-Print Loop) tool for executing Python code.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-----------------|--------------|--------------------------------------------------------|
+| name | String | The name of the tool (default: "python_repl") |
+| description | String | A description of the tool's functionality |
+| global_imports | List[String] | List of modules to import globally (default: ["math"]) |
+
+#### Outputs
+
+| Name | Type | Description |
+|------|------|--------------------------------------------|
+| tool | Tool | Python REPL tool for use in LangChain |
+
+## Retriever Tool
+
+This component creates a tool for interacting with a retriever in LangChain.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-------------|---------------|---------------------------------------------|
+| retriever | BaseRetriever | The retriever to interact with |
+| name | String | The name of the tool |
+| description | String | A description of the tool's functionality |
+
+#### Outputs
+
+| Name | Type | Description |
+|------|------|--------------------------------------------|
+| tool | Tool | Retriever tool for use in LangChain |
+
+## SearXNG Search Tool
+
+This component creates a tool for searching using SearXNG, a metasearch engine.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-------------|--------------|---------------------------------------|
+| url | String | The URL of the SearXNG instance |
+| max_results | Integer | Maximum number of results to return |
+| categories | List[String] | Categories to search in |
+| language | String | Language for the search results |
+
+#### Outputs
+
+| Name | Type | Description |
+|-------------|------|--------------------------------------------|
+| result_tool | Tool | SearXNG search tool for use in LangChain |
+
+## Search API
+
+This component calls the `searchapi.io` API. It can be used to search the web for information.
+
+For more information, see the [SearchAPI documentation](https://www.searchapi.io/docs/google).
+
+### Parameters
+
+#### Inputs
+
+| Name | Display Name | Info |
+|----------------|---------------------|-----------------------------------------------------|
+| engine | Engine | The search engine to use (default: "google") |
+| api_key | SearchAPI API Key | The API key for authenticating with SearchAPI |
+| input_value | Input | The search query or input for the API call |
+| search_params | Search parameters | Additional parameters for customizing the search |
+
+#### Outputs
+
+| Name | Display Name | Info |
+|------|-----------------|------------------------------------------------------|
+| data | Search Results | List of Data objects containing search results |
+| tool | Search API Tool | A Tool object for use in LangChain workflows |
+
+## Serp Search API
+
+This component creates a tool for searching using the Serp API.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|------------------|--------------|---------------------------------------------|
+| serpapi_api_key | SecretString | API key for Serp API authentication |
+| input_value | String | Search query input |
+| search_params | Dict | Additional search parameters (optional) |
+
+#### Outputs
+
+| Name | Type | Description |
+|---------|-----------|---------------------------------------------|
+| results | List[Data]| List of search results |
+| tool | Tool | Serp API search tool for use in LangChain |
+
+## Wikipedia API
+
+This component creates a tool for searching and retrieving information from Wikipedia.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-------------------------|---------|-----------------------------------------------------------|
+| input_value | String | Search query input |
+| lang | String | Language code for Wikipedia (default: "en") |
+| k | Integer | Number of results to return |
+| load_all_available_meta | Boolean | Whether to load all available metadata (advanced) |
+| doc_content_chars_max | Integer | Maximum number of characters for document content (advanced)|
+
+#### Outputs
+
+| Name | Type | Description |
+|---------|-----------|---------------------------------------|
+| results | List[Data]| List of Wikipedia search results |
+| tool | Tool | Wikipedia search tool for use in LangChain |
+
+## Wolfram Alpha API
+
+This component creates a tool for querying the Wolfram Alpha API.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-------------|--------------|--------------------------------|
+| input_value | String | Query input for Wolfram Alpha |
+| app_id | SecretString | Wolfram Alpha API App ID |
+
+#### Outputs
+
+| Name | Type | Description |
+|---------|-----------|------------------------------------------------|
+| results | List[Data]| List containing the Wolfram Alpha API response |
+| tool | Tool | Wolfram Alpha API tool for use in LangChain |
+
+## Yahoo Finance News Tool
+
+This component creates a tool for retrieving news from Yahoo Finance.
+
+### Parameters
+
+This component does not have any input parameters.
+
+#### Outputs
+
+| Name | Type | Description |
+|------|------|----------------------------------------------|
+| tool | Tool | Yahoo Finance News tool for use in LangChain |
+
+
+## Astra DB Tool
+
+The `Astra DB Tool` allows agents to connect to and query data from Astra DB Collections.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-------------------|--------|----------------------------------------------------------------------------------------------------------------------------------|
+| Tool Name | String | The name used to reference the tool in the agent's prompt. |
+| Tool Description | String | A brief description of the tool. This helps the model decide when to use it. |
+| Collection Name | String | The name of the Astra DB collection to query. |
+| Token | SecretString | The authentication token for accessing Astra DB. |
+| API Endpoint | String | The Astra DB API endpoint. |
+| Projection Fields | String | The attributes to return, separated by commas. Default: "*". |
+| Tool Parameters | Dict | Parameters the model needs to fill to execute the tool. For required parameters, use an exclamation mark (e.g., "!customer_id"). |
+| Static Filters | Dict | Attribute-value pairs used to filter query results. |
+| Limit | String | The number of documents to return. |
+
+
+
+## Astra DB CQL Tool
+
+The `Astra DB CQL Tool` allows agents to query data from CQL Tables in Astra DB.
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-------------------|--------|----------------------------------------------------------------------------------------------------------------------------------------------------|
+| Tool Name | String | The name used to reference the tool in the agent's prompt. |
+| Tool Description | String | A brief description of the tool to guide the model in using it. |
+| Keyspace | String | The name of the keyspace. |
+| Table Name | String | The name of the Astra DB CQL table to query. |
+| Token | SecretString | The authentication token for Astra DB. |
+| API Endpoint | String | The Astra DB API endpoint. |
+| Projection Fields | String | The attributes to return, separated by commas. Default: "*". |
+| Partition Keys | Dict | Required parameters that the model must fill to query the tool. |
+| Clustering Keys | Dict | Optional parameters the model can fill to refine the query. Required parameters should be marked with an exclamation mark (e.g., "!customer_id"). |
+| Static Filters | Dict | Attribute-value pairs used to filter query results. |
+| Limit | String | The number of records to return. |
diff --git a/docs/docs/Components/components-vector-stores.md b/docs/docs/Components/components-vector-stores.md
new file mode 100644
index 0000000000000000000000000000000000000000..da8c181d1ee785eec24e5388019d1ce34274238e
--- /dev/null
+++ b/docs/docs/Components/components-vector-stores.md
@@ -0,0 +1,621 @@
+---
+title: Vector Stores
+sidebar_position: 7
+slug: /components-vector-stores
+---
+# Vector Stores
+
+Vector databases are used to store and search for vectors. They can be used to store embeddings, search for similar vectors, and perform other vector operations.
+
+## Astra DB Vector Store
+
+This component implements a Vector Store using Astra DB with search capabilities.
+
+For more information, see the [DataStax documentation](https://docs.datastax.com/en/astra-db-serverless/databases/create-database.html).
+
+### Parameters
+
+#### Inputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| collection_name | Collection Name | The name of the collection within Astra DB where the vectors will be stored (required) |
+| token | Astra DB Application Token | Authentication token for accessing Astra DB (required) |
+| api_endpoint | API Endpoint | API endpoint URL for the Astra DB service (required) |
+| search_input | Search Input | Query string for similarity search |
+| ingest_data | Ingest Data | Data to be ingested into the vector store |
+| namespace | Namespace | Optional namespace within Astra DB to use for the collection |
+| embedding_choice | Embedding Model or Astra Vectorize | Determines whether to use an Embedding Model or Astra Vectorize for the collection |
+| embedding | Embedding Model | Allows an embedding model configuration (when using Embedding Model) |
+| provider | Vectorize Provider | Provider for Astra Vectorize (when using Astra Vectorize) |
+| metric | Metric | Optional distance metric for vector comparisons |
+| batch_size | Batch Size | Optional number of data to process in a single batch |
+| setup_mode | Setup Mode | Configuration mode for setting up the vector store (options: "Sync", "Async", "Off", default: "Sync") |
+| pre_delete_collection | Pre Delete Collection | Boolean flag to determine whether to delete the collection before creating a new one |
+| number_of_results | Number of Results | Number of results to return in similarity search (default: 4) |
+| search_type | Search Type | Search type to use (options: "Similarity", "Similarity with score threshold", "MMR (Max Marginal Relevance)") |
+| search_score_threshold | Search Score Threshold | Minimum similarity score threshold for search results |
+| search_filter | Search Metadata Filter | Optional dictionary of filters to apply to the search query |
+
+#### Outputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| vector_store | Vector Store | Built Astra DB vector store |
+| search_results | Search Results | Results of the similarity search as a list of Data objects |
+
+## Cassandra
+
+This component creates a Cassandra Vector Store with search capabilities.
+For more information, see the [Cassandra documentation](https://cassandra.apache.org/doc/latest/cassandra/vector-search/overview.html).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| database_ref | String | Contact points for the database or AstraDB database ID |
+| username | String | Username for the database (leave empty for AstraDB) |
+| token | SecretString | User password for the database or AstraDB token |
+| keyspace | String | Table Keyspace or AstraDB namespace |
+| table_name | String | Name of the table or AstraDB collection |
+| ttl_seconds | Integer | Time-to-live for added texts |
+| batch_size | Integer | Number of data to process in a single batch |
+| setup_mode | String | Configuration mode for setting up the Cassandra table |
+| cluster_kwargs | Dict | Additional keyword arguments for the Cassandra cluster |
+| search_query | String | Query for similarity search |
+| ingest_data | Data | Data to be ingested into the vector store |
+| embedding | Embeddings | Embedding function to use |
+| number_of_results | Integer | Number of results to return in search |
+| search_type | String | Type of search to perform |
+| search_score_threshold | Float | Minimum similarity score for search results |
+| search_filter | Dict | Metadata filters for search query |
+| body_search | String | Document textual search terms |
+| enable_body_search | Boolean | Flag to enable body search |
+
+#### Outputs
+
+| Name | Type | Description |
+|------|------|-------------|
+| vector_store | Cassandra | Cassandra vector store instance |
+| search_results | List[Data] | Results of similarity search |
+
+## Cassandra Graph Vector Store
+
+This component implements a Cassandra Graph Vector Store with search capabilities.
+
+### Parameters
+
+#### Inputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| database_ref | Contact Points / Astra Database ID | Contact points for the database or AstraDB database ID (required) |
+| username | Username | Username for the database (leave empty for AstraDB) |
+| token | Password / AstraDB Token | User password for the database or AstraDB token (required) |
+| keyspace | Keyspace | Table Keyspace or AstraDB namespace (required) |
+| table_name | Table Name | The name of the table or AstraDB collection where vectors will be stored (required) |
+| setup_mode | Setup Mode | Configuration mode for setting up the Cassandra table (options: "Sync", "Off", default: "Sync") |
+| cluster_kwargs | Cluster arguments | Optional dictionary of additional keyword arguments for the Cassandra cluster |
+| search_query | Search Query | Query string for similarity search |
+| ingest_data | Ingest Data | Data to be ingested into the vector store (list of Data objects) |
+| embedding | Embedding | Embedding model to use |
+| number_of_results | Number of Results | Number of results to return in similarity search (default: 4) |
+| search_type | Search Type | Search type to use (options: "Traversal", "MMR traversal", "Similarity", "Similarity with score threshold", "MMR (Max Marginal Relevance)", default: "Traversal") |
+| depth | Depth of traversal | The maximum depth of edges to traverse (for "Traversal" or "MMR traversal" search types, default: 1) |
+| search_score_threshold | Search Score Threshold | Minimum similarity score threshold for search results (for "Similarity with score threshold" search type) |
+| search_filter | Search Metadata Filter | Optional dictionary of filters to apply to the search query |
+
+#### Outputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| vector_store | Vector Store | Built Cassandra Graph vector store |
+| search_results | Search Results | Results of the similarity search as a list of Data objects |
+
+## Chroma DB
+
+This component creates a Chroma Vector Store with search capabilities.
+For more information, see the [Chroma documentation](https://docs.trychroma.com/).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|------------------------------|---------------|--------------------------------------------------|
+| collection_name | String | The name of the Chroma collection. Default: "langflow". |
+| persist_directory | String | The directory to persist the Chroma database. |
+| search_query | String | The query to search for in the vector store. |
+| ingest_data | Data | The data to ingest into the vector store (list of Data objects). |
+| embedding | Embeddings | The embedding function to use for the vector store. |
+| chroma_server_cors_allow_origins | String | CORS allow origins for the Chroma server. |
+| chroma_server_host | String | Host for the Chroma server. |
+| chroma_server_http_port | Integer | HTTP port for the Chroma server. |
+| chroma_server_grpc_port | Integer | gRPC port for the Chroma server. |
+| chroma_server_ssl_enabled | Boolean | Enable SSL for the Chroma server. |
+| allow_duplicates | Boolean | Allow duplicate documents in the vector store. |
+| search_type | String | Type of search to perform: "Similarity" or "MMR". |
+| number_of_results | Integer | Number of results to return from the search. Default: 10. |
+| limit | Integer | Limit the number of records to compare when Allow Duplicates is False. |
+
+#### Outputs
+
+| Name | Type | Description |
+|----------------|---------------|--------------------------------|
+| vector_store | Chroma | Chroma vector store instance |
+| search_results | List[Data] | Results of similarity search |
+
+## Clickhouse
+
+This component implements a Clickhouse Vector Store with search capabilities.
+For more information, see the [CLickhouse Documentation](https://clickhouse.com/docs/en/intro).
+
+### Parameters
+
+#### Inputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| host | hostname | Clickhouse server hostname (required, default: "localhost") |
+| port | port | Clickhouse server port (required, default: 8123) |
+| database | database | Clickhouse database name (required) |
+| table | Table name | Clickhouse table name (required) |
+| username | The ClickHouse user name. | Username for authentication (required) |
+| password | The password for username. | Password for authentication (required) |
+| index_type | index_type | Type of the index (options: "annoy", "vector_similarity", default: "annoy") |
+| metric | metric | Metric to compute distance (options: "angular", "euclidean", "manhattan", "hamming", "dot", default: "angular") |
+| secure | Use https/TLS | Overrides inferred values from the interface or port arguments (default: false) |
+| index_param | Param of the index | Index parameters (default: "'L2Distance',100") |
+| index_query_params | index query params | Additional index query parameters |
+| search_query | Search Query | Query string for similarity search |
+| ingest_data | Ingest Data | Data to be ingested into the vector store |
+| embedding | Embedding | Embedding model to use |
+| number_of_results | Number of Results | Number of results to return in similarity search (default: 4) |
+| score_threshold | Score threshold | Threshold for similarity scores |
+
+#### Outputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| vector_store | Vector Store | Built Clickhouse vector store |
+| search_results | Search Results | Results of the similarity search as a list of Data objects |
+
+## Couchbase
+
+This component creates a Couchbase Vector Store with search capabilities.
+For more information, see the [Couchbase documentation](https://docs.couchbase.com/home/index.html).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-------------------------|---------------|--------------------------------------------------|
+| couchbase_connection_string | SecretString | Couchbase Cluster connection string (required). |
+| couchbase_username | String | Couchbase username (required). |
+| couchbase_password | SecretString | Couchbase password (required). |
+| bucket_name | String | Name of the Couchbase bucket (required). |
+| scope_name | String | Name of the Couchbase scope (required). |
+| collection_name | String | Name of the Couchbase collection (required). |
+| index_name | String | Name of the Couchbase index (required). |
+| search_query | String | The query to search for in the vector store. |
+| ingest_data | Data | The data to ingest into the vector store (list of Data objects). |
+| embedding | Embeddings | The embedding function to use for the vector store. |
+| number_of_results | Integer | Number of results to return from the search. Default: 4 (advanced). |
+
+#### Outputs
+
+| Name | Type | Description |
+|----------------|------------------------|--------------------------------|
+| vector_store | CouchbaseVectorStore | A Couchbase vector store instance configured with the specified parameters. |
+
+## FAISS
+
+This component creates a FAISS Vector Store with search capabilities.
+For more information, see the [FAISS documentation](https://faiss.ai/index.html).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|---------------------------|---------------|--------------------------------------------------|
+| index_name | String | The name of the FAISS index. Default: "langflow_index". |
+| persist_directory | String | Path to save the FAISS index. It will be relative to where Langflow is running. |
+| search_query | String | The query to search for in the vector store. |
+| ingest_data | Data | The data to ingest into the vector store (list of Data objects or documents). |
+| allow_dangerous_deserialization | Boolean | Set to True to allow loading pickle files from untrusted sources. Default: True (advanced). |
+| embedding | Embeddings | The embedding function to use for the vector store. |
+| number_of_results | Integer | Number of results to return from the search. Default: 4 (advanced). |
+
+#### Outputs
+
+| Name | Type | Description |
+|----------------|------------------------|--------------------------------|
+| vector_store | FAISS | A FAISS vector store instance configured with the specified parameters. |
+
+## Hyper-Converged Database (HCD) Vector Store
+
+This component implements a Vector Store using HCD.
+
+### Parameters
+
+#### Inputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| collection_name | Collection Name | The name of the collection within HCD where the vectors will be stored (required) |
+| username | HCD Username | Authentication username for accessing HCD (default: "hcd-superuser", required) |
+| password | HCD Password | Authentication password for accessing HCD (required) |
+| api_endpoint | HCD API Endpoint | API endpoint URL for the HCD service (required) |
+| search_input | Search Input | Query string for similarity search |
+| ingest_data | Ingest Data | Data to be ingested into the vector store |
+| namespace | Namespace | Optional namespace within HCD to use for the collection (default: "default_namespace") |
+| ca_certificate | CA Certificate | Optional CA certificate for TLS connections to HCD |
+| metric | Metric | Optional distance metric for vector comparisons (options: "cosine", "dot_product", "euclidean") |
+| batch_size | Batch Size | Optional number of data to process in a single batch |
+| bulk_insert_batch_concurrency | Bulk Insert Batch Concurrency | Optional concurrency level for bulk insert operations |
+| bulk_insert_overwrite_concurrency | Bulk Insert Overwrite Concurrency | Optional concurrency level for bulk insert operations that overwrite existing data |
+| bulk_delete_concurrency | Bulk Delete Concurrency | Optional concurrency level for bulk delete operations |
+| setup_mode | Setup Mode | Configuration mode for setting up the vector store (options: "Sync", "Async", "Off", default: "Sync") |
+| pre_delete_collection | Pre Delete Collection | Boolean flag to determine whether to delete the collection before creating a new one |
+| metadata_indexing_include | Metadata Indexing Include | Optional list of metadata fields to include in the indexing |
+| embedding | Embedding or Astra Vectorize | Allows either an embedding model or an Astra Vectorize configuration |
+| metadata_indexing_exclude | Metadata Indexing Exclude | Optional list of metadata fields to exclude from the indexing |
+| collection_indexing_policy | Collection Indexing Policy | Optional dictionary defining the indexing policy for the collection |
+| number_of_results | Number of Results | Number of results to return in similarity search (default: 4) |
+| search_type | Search Type | Search type to use (options: "Similarity", "Similarity with score threshold", "MMR (Max Marginal Relevance)", default: "Similarity") |
+| search_score_threshold | Search Score Threshold | Minimum similarity score threshold for search results (default: 0) |
+| search_filter | Search Metadata Filter | Optional dictionary of filters to apply to the search query |
+
+#### Outputs
+
+| Name | Display Name | Info |
+|------|--------------|------|
+| vector_store | Vector Store | Built HCD vector store instance |
+| search_results | Search Results | Results of similarity search as a list of Data objects |
+
+## Milvus
+
+This component creates a Milvus Vector Store with search capabilities.
+For more information, see the [Milvus documentation](https://milvus.io/docs).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|-------------------------|---------------|--------------------------------------------------|
+| collection_name | String | Name of the Milvus collection |
+| collection_description | String | Description of the Milvus collection |
+| uri | String | Connection URI for Milvus |
+| password | SecretString | Password for Milvus |
+| username | SecretString | Username for Milvus |
+| batch_size | Integer | Number of data to process in a single batch |
+| search_query | String | Query for similarity search |
+| ingest_data | Data | Data to be ingested into the vector store |
+| embedding | Embeddings | Embedding function to use |
+| number_of_results | Integer | Number of results to return in search |
+| search_type | String | Type of search to perform |
+| search_score_threshold | Float | Minimum similarity score for search results |
+| search_filter | Dict | Metadata filters for search query |
+| setup_mode | String | Configuration mode for setting up the vector store |
+| vector_dimensions | Integer | Number of dimensions of the vectors |
+| pre_delete_collection | Boolean | Whether to delete the collection before creating a new one |
+
+#### Outputs
+
+| Name | Type | Description |
+|----------------|------------------------|--------------------------------|
+| vector_store | Milvus | A Milvus vector store instance configured with the specified parameters. |
+
+## MongoDB Atlas
+
+This component creates a MongoDB Atlas Vector Store with search capabilities.
+For more information, see the [MongoDB Atlas documentation](https://www.mongodb.com/docs/atlas/atlas-vector-search/tutorials/vector-search-quick-start/).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+| ------------------------ | ------------ | ----------------------------------------- |
+| mongodb_atlas_cluster_uri | SecretString | MongoDB Atlas Cluster URI |
+| db_name | String | Database name |
+| collection_name | String | Collection name |
+| index_name | String | Index name |
+| search_query | String | Query for similarity search |
+| ingest_data | Data | Data to be ingested into the vector store |
+| embedding | Embeddings | Embedding function to use |
+| number_of_results | Integer | Number of results to return in search |
+
+#### Outputs
+
+| Name | Type | Description |
+| ------------- | ---------------------- | ----------------------------------------- |
+| vector_store | MongoDBAtlasVectorSearch| MongoDB Atlas vector store instance |
+| search_results| List[Data] | Results of similarity search |
+
+
+## PGVector
+
+This component creates a PGVector Vector Store with search capabilities.
+For more information, see the [PGVector documentation](https://github.com/pgvector/pgvector).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+| --------------- | ------------ | ----------------------------------------- |
+| pg_server_url | SecretString | PostgreSQL server connection string |
+| collection_name | String | Table name for the vector store |
+| search_query | String | Query for similarity search |
+| ingest_data | Data | Data to be ingested into the vector store |
+| embedding | Embeddings | Embedding function to use |
+| number_of_results | Integer | Number of results to return in search |
+
+#### Outputs
+
+| Name | Type | Description |
+| ------------- | ----------- | ----------------------------------------- |
+| vector_store | PGVector | PGVector vector store instance |
+| search_results| List[Data] | Results of similarity search |
+
+
+## Pinecone
+
+This component creates a Pinecone Vector Store with search capabilities.
+For more information, see the [Pinecone documentation](https://docs.pinecone.io/home).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+| ----------------- | ------------ | ----------------------------------------- |
+| index_name | String | Name of the Pinecone index |
+| namespace | String | Namespace for the index |
+| distance_strategy | String | Strategy for calculating distance between vectors |
+| pinecone_api_key | SecretString | API key for Pinecone |
+| text_key | String | Key in the record to use as text |
+| search_query | String | Query for similarity search |
+| ingest_data | Data | Data to be ingested into the vector store |
+| embedding | Embeddings | Embedding function to use |
+| number_of_results | Integer | Number of results to return in search |
+
+#### Outputs
+
+| Name | Type | Description |
+| ------------- | ---------- | ----------------------------------------- |
+| vector_store | Pinecone | Pinecone vector store instance |
+| search_results| List[Data] | Results of similarity search |
+
+
+## Qdrant
+
+This component creates a Qdrant Vector Store with search capabilities.
+For more information, see the [Qdrant documentation](https://qdrant.tech/documentation/).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+| -------------------- | ------------ | ----------------------------------------- |
+| collection_name | String | Name of the Qdrant collection |
+| host | String | Qdrant server host |
+| port | Integer | Qdrant server port |
+| grpc_port | Integer | Qdrant gRPC port |
+| api_key | SecretString | API key for Qdrant |
+| prefix | String | Prefix for Qdrant |
+| timeout | Integer | Timeout for Qdrant operations |
+| path | String | Path for Qdrant |
+| url | String | URL for Qdrant |
+| distance_func | String | Distance function for vector similarity |
+| content_payload_key | String | Key for content payload |
+| metadata_payload_key | String | Key for metadata payload |
+| search_query | String | Query for similarity search |
+| ingest_data | Data | Data to be ingested into the vector store |
+| embedding | Embeddings | Embedding function to use |
+| number_of_results | Integer | Number of results to return in search |
+
+#### Outputs
+
+| Name | Type | Description |
+| ------------- | -------- | ----------------------------------------- |
+| vector_store | Qdrant | Qdrant vector store instance |
+| search_results| List[Data] | Results of similarity search |
+
+
+## Redis
+
+This component creates a Redis Vector Store with search capabilities.
+For more information, see the [Redis documentation](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/vectors/).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+| ----------------- | ------------ | ----------------------------------------- |
+| redis_server_url | SecretString | Redis server connection string |
+| redis_index_name | String | Name of the Redis index |
+| code | String | Custom code for Redis (advanced) |
+| schema | String | Schema for Redis index |
+| search_query | String | Query for similarity search |
+| ingest_data | Data | Data to be ingested into the vector store |
+| number_of_results | Integer | Number of results to return in search |
+| embedding | Embeddings | Embedding function to use |
+
+#### Outputs
+
+| Name | Type | Description |
+| ------------- | -------- | ----------------------------------------- |
+| vector_store | Redis | Redis vector store instance |
+| search_results| List[Data]| Results of similarity search |
+
+
+## Supabase
+
+This component creates a connection to a Supabase Vector Store with search capabilities.
+For more information, see the [Supabase documentation](https://supabase.com/docs/guides/ai).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+| ------------------- | ------------ | ----------------------------------------- |
+| supabase_url | String | URL of the Supabase instance |
+| supabase_service_key| SecretString | Service key for Supabase authentication |
+| table_name | String | Name of the table in Supabase |
+| query_name | String | Name of the query to use |
+| search_query | String | Query for similarity search |
+| ingest_data | Data | Data to be ingested into the vector store |
+| embedding | Embeddings | Embedding function to use |
+| number_of_results | Integer | Number of results to return in search |
+
+#### Outputs
+
+| Name | Type | Description |
+| ------------- | ------------------ | ----------------------------------------- |
+| vector_store | SupabaseVectorStore | Supabase vector store instance |
+| search_results| List[Data] | Results of similarity search |
+
+
+## Upstash
+
+This component creates an Upstash Vector Store with search capabilities.
+For more information, see the [Upstash documentation](https://upstash.com/docs/introduction).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+| --------------- | ------------ | ----------------------------------------- |
+| index_url | String | The URL of the Upstash index |
+| index_token | SecretString | The token for the Upstash index |
+| text_key | String | The key in the record to use as text |
+| namespace | String | Namespace for the index |
+| search_query | String | Query for similarity search |
+| metadata_filter | String | Filters documents by metadata |
+| ingest_data | Data | Data to be ingested into the vector store |
+| embedding | Embeddings | Embedding function to use (optional) |
+| number_of_results | Integer | Number of results to return in search |
+
+#### Outputs
+
+| Name | Type | Description |
+| ------------- | ---------------- | ----------------------------------------- |
+| vector_store | UpstashVectorStore| Upstash vector store instance |
+| search_results| List[Data] | Results of similarity search |
+
+
+## Vectara
+
+This component creates a Vectara Vector Store with search capabilities.
+For more information, see the [Vectara documentation](https://docs.vectara.com/docs/).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+| ---------------- | ------------ | ----------------------------------------- |
+| vectara_customer_id | String | Vectara customer ID |
+| vectara_corpus_id | String | Vectara corpus ID |
+| vectara_api_key | SecretString | Vectara API key |
+| embedding | Embeddings | Embedding function to use (optional) |
+| ingest_data | List[Document/Data] | Data to be ingested into the vector store |
+| search_query | String | Query for similarity search |
+| number_of_results | Integer | Number of results to return in search |
+
+#### Outputs
+
+| Name | Type | Description |
+| ------------- | ----------------- | ----------------------------------------- |
+| vector_store | VectaraVectorStore | Vectara vector store instance |
+| search_results| List[Data] | Results of similarity search |
+
+## Vectara Search
+
+This component searches a Vectara Vector Store for documents based on the provided input.
+For more information, see the [Vectara documentation](https://docs.vectara.com/docs/).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|---------------------|--------------|-------------------------------------------|
+| search_type | String | Type of search, such as "Similarity" or "MMR" |
+| input_value | String | Search query |
+| vectara_customer_id | String | Vectara customer ID |
+| vectara_corpus_id | String | Vectara corpus ID |
+| vectara_api_key | SecretString | Vectara API key |
+| files_url | List[String] | Optional URLs for file initialization |
+
+#### Outputs
+
+| Name | Type | Description |
+|----------------|------------|----------------------------|
+| search_results | List[Data] | Results of similarity search |
+
+## Weaviate
+
+This component facilitates a Weaviate Vector Store setup, optimizing text and document indexing and retrieval.
+For more information, see the [Weaviate Documentation](https://weaviate.io/developers/weaviate).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|---------------|--------------|-------------------------------------------|
+| weaviate_url | String | Default instance URL |
+| search_by_text| Boolean | Indicates whether to search by text |
+| api_key | SecretString | Optional API key for authentication |
+| index_name | String | Optional index name |
+| text_key | String | Default text extraction key |
+| input | Document | Document or record |
+| embedding | Embeddings | Model used |
+| attributes | List[String] | Optional additional attributes |
+
+#### Outputs
+
+| Name | Type | Description |
+|--------------|------------------|-------------------------------|
+| vector_store | WeaviateVectorStore | Weaviate vector store instance |
+
+**Note:** Ensure Weaviate instance is running and accessible. Verify API key, index name, text key, and attributes are set correctly.
+
+## Weaviate Search
+
+This component searches a Weaviate Vector Store for documents similar to the input.
+For more information, see the [Weaviate Documentation](https://weaviate.io/developers/weaviate).
+
+### Parameters
+
+#### Inputs
+
+| Name | Type | Description |
+|---------------|--------------|-------------------------------------------|
+| search_type | String | Type of search, such as "Similarity" or "MMR" |
+| input_value | String | Search query |
+| weaviate_url | String | Default instance URL |
+| search_by_text| Boolean | Indicates whether to search by text |
+| api_key | SecretString | Optional API key for authentication |
+| index_name | String | Optional index name |
+| text_key | String | Default text extraction key |
+| embedding | Embeddings | Model used |
+| attributes | List[String] | Optional additional attributes |
+
+#### Outputs
+
+| Name | Type | Description |
+|----------------|------------|----------------------------|
+| search_results | List[Data] | Results of similarity search |
diff --git a/docs/docs/Configuration/_category_.json b/docs/docs/Configuration/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..27519db0b01cf2a7c6120110c8358c5a7dae15e4
--- /dev/null
+++ b/docs/docs/Configuration/_category_.json
@@ -0,0 +1 @@
+{"position":8, "label":"Configuration"}
\ No newline at end of file
diff --git a/docs/docs/Configuration/configuration-api-keys.md b/docs/docs/Configuration/configuration-api-keys.md
new file mode 100644
index 0000000000000000000000000000000000000000..68ce60752158102f6b8e280119494708ca82e9e9
--- /dev/null
+++ b/docs/docs/Configuration/configuration-api-keys.md
@@ -0,0 +1,193 @@
+---
+title: API keys
+sidebar_position: 1
+slug: /configuration-api-keys
+---
+
+Langflow provides an API key functionality that allows users to access their individual components and flows without traditional login authentication. The API key is a user-specific token that can be included in the request header, query parameter, or as a command line argument to authenticate API calls. This documentation outlines how to generate, use, and manage API keys in Langflow.
+
+:::info
+
+The default user and password are set using the LANGFLOW_SUPERUSER and LANGFLOW_SUPERUSER_PASSWORD environment variables. The default values are `langflow` and `langflow`, respectively.
+
+:::
+
+## Generate an API key
+
+Generate a user-specific token to use with Langflow.
+
+### Generate an API key with the Langflow UI
+
+1. Click your user icon and select **Settings**.
+2. Click **Langflow API**, and then click **Add New**.
+3. Name your key, and then click **Create Secret Key**.
+4. Copy the API key and store it in a secure location.
+
+### Generate an API key with the Langflow CLI
+
+```shell
+langflow api-key
+# or
+python -m langflow api-key
+âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââŽ
+â API Key Created Successfully: â
+â â
+â sk-O0elzoWID1izAH8RUKrnnvyyMwIzHi2Wk-uXWoNJ2Ro â
+â â
+â This is the only time the API key will be displayed. â
+â Make sure to store it in a secure location. â
+â â
+â The API key has been copied to your clipboard. Cmd + V to paste it. â
+â°ââââââââââââââââââââââââââââââ
+
+```
+
+## Authenticate requests with the Langflow API key
+
+Include your API key in API requests to authenticate requests to Langflow.
+
+### Include the API key in the HTTP header
+
+To use the API key when making API requests with cURL, include the API key in the HTTP header.
+
+```shell
+curl -X POST \
+ "http://127.0.0.1:7860/api/v1/run/*`YOUR_FLOW_ID`*?stream=false" \
+ -H 'Content-Type: application/json' \
+ -H 'x-api-key: *`YOUR_API_KEY`*' \
+ -d '{"inputs": {"text":""}, "tweaks": {}}'
+```
+
+To instead pass the API key as a query parameter, do the following:
+
+```shell
+curl -X POST \
+ "http://127.0.0.1:7860/api/v1/run/*`YOUR_FLOW_ID`*?x-api-key=*`YOUR_API_KEY`*?stream=false" \
+ -H 'Content-Type: application/json' \
+ -d '{"inputs": {"text":""}, "tweaks": {}}'
+```
+
+To use the API key when making API requests with the Python `requests` library, include the API key as a variable string.
+
+```python
+import argparse
+import json
+from argparse import RawTextHelpFormatter
+import requests
+from typing import Optional
+import warnings
+try:
+ from langflow.load import upload_file
+except ImportError:
+ warnings.warn("Langflow provides a function to help you upload files to the flow. Please install langflow to use it.")
+ upload_file = None
+
+BASE_API_URL = "http://127.0.0.1:7860"
+FLOW_ID = "*`YOUR_FLOW_ID`*"
+ENDPOINT = "" # You can set a specific endpoint name in the flow settings
+
+# You can tweak the flow by adding a tweaks dictionary
+# e.g {"OpenAI-XXXXX": {"model_name": "gpt-4"}}
+TWEAKS = {
+ "ChatInput-8a86T": {},
+ "Prompt-pKfl9": {},
+ "ChatOutput-WcGpD": {},
+ "OpenAIModel-5UyvQ": {}
+}
+
+def run_flow(message: str,
+ endpoint: str,
+ output_type: str = "chat",
+ input_type: str = "chat",
+ tweaks: Optional[dict] = None,
+ api_key: Optional[str] = None) -> dict:
+ """
+ Run a flow with a given message and optional tweaks.
+
+ :param message: The message to send to the flow
+ :param endpoint: The ID or the endpoint name of the flow
+ :param tweaks: Optional tweaks to customize the flow
+ :return: The JSON response from the flow
+ """
+ api_url = f"{BASE_API_URL}/api/v1/run/{endpoint}"
+
+ payload = {
+ "input_value": message,
+ "output_type": output_type,
+ "input_type": input_type,
+ }
+ headers = None
+ if tweaks:
+ payload["tweaks"] = tweaks
+ if api_key:
+ headers = {"x-api-key": api_key}
+ response = requests.post(api_url, json=payload, headers=headers)
+ return response.json()
+
+def main():
+ parser = argparse.ArgumentParser(description="""Run a flow with a given message and optional tweaks.
+Run it like: python
+
+## Playground
+
+The **Playground** executes the current flow in the workspace.
+
+Chat with your flow, view inputs and outputs, and modify your AI's memories to tune your responses in real time.
+
+Either the **Chat Input** or **Chat Output** component can be opened in the **Playground** and tested in real time.
+
+For more information, see the [Playground documentation](/workspace-playground).
+
+
+
+## API
+
+The **API** pane provides code templates to integrate your flows into external applications.
+
+For more information, see the [API documentation](/workspace-api).
+
+
+
+## Projects and folders
+
+The **My Projects** page displays all the flows and components you've created in the Langflow workspace.
+
+
+
+**My Projects** is the default folder where all new projects and components are initially stored.
+
+Projects, folders, and flows are exchanged as JSON objects.
+
+* To create a new folder, click đ **New Folder**.
+
+* To rename a folder, double-click the folder name.
+
+* To download a folder, click đĨ **Download**.
+
+* To upload a folder, click đ¤ **Upload**. The default maximum file upload size is 100 MB.
+
+* To move a flow or component, drag and drop it into the desired folder.
+
+## Options menu
+
+The dropdown menu labeled with the project name offers several management and customization options for the current flow in the Langflow workspace.
+
+* **New**: Create a new flow from scratch.
+* **Settings**: Adjust settings specific to the current flow, such as its name, description, and endpoint name.
+* **Logs**: View logs for the current project, including execution history, errors, and other runtime events.
+* **Import**: Import a flow or component from a JSON file into the workspace.
+* **Export**: Export the current flow as a JSON file.
+* **Undo (âZ)**: Revert the last action taken in the project.
+* **Redo (âY)**: Reapply a previously undone action.
+* **Refresh All**: Refresh all components and delete cache.
+
+## Settings
+
+Click âī¸ **Settings** to access **Global variables**, **Langflow API**, **Shortcuts**, and **Messages**.
+
+
+
diff --git a/docs/docs/Workspace/workspace-playground.md b/docs/docs/Workspace/workspace-playground.md
new file mode 100644
index 0000000000000000000000000000000000000000..cfd914bce606e7cd05784426ce3a9642905b0793
--- /dev/null
+++ b/docs/docs/Workspace/workspace-playground.md
@@ -0,0 +1,79 @@
+---
+title: Playground
+sidebar_position: 2
+slug: /workspace-playground
+---
+
+import ReactPlayer from "react-player";
+
+The **Playground** is a dynamic interface designed for real-time interaction with AIs, allowing users to chat, access memories and monitor inputs and outputs. Here, users can directly prototype and their models, making adjustments and observing different outcomes.
+
+
+As long as you have an [Input or Output](/components-io) component working, you can open it up by clicking the **Playground** button.
+
+
+
+
+
+:::tip
+
+Notice how the **Playground's** window arrangement changes depending on what components are being used. Langflow can be used for applications that go beyond chat-based interfaces.
+
+:::
+
+
+## Memory Management {#821a5ee2a8a44d35b49943cba630511c}
+
+
+---
+
+When you send a message from the **Playground** interface, the interactions for that session are stored in the **Message Logs**.
+
+Langflow allows every chat message to be stored, and a single flow can have multiple chat sessions.
+
+Chat conversations store messages categorized by a Session ID. A single flow can host multiple Session IDs, and different flows can share the same Session ID.
+
+To view messages by session ID, from the Playground, click the Options menu of any session, and then select Message Logs.
+
+Individual messages in chat memory can be edited or deleted. Modifying these memories will influence the behavior of the chatbot responses.
+
+To learn more about memories in Langflow, see [Chat Memory](/guides-chat-memory).
+
+## Use custom Session IDs for multiple user interactions
+
+Session ID values are used to track user interactions in a flow. They can be configured in the Advanced Settings of the Chat Input and Chat Output components.
+
+By default, if the Session ID value is empty, it is set to the same value as the Flow ID. This means every API call will use the same Session ID, and youâll effectively have one session.
+
+To have more than one session in a single flow, pass a specific Session ID to a flow with the `session_id` parameter in the URL. All the components in the flow will automatically use this `session_id` value.
+
+Post a message to a flow with a specific Session ID with curl:
+
+```bash
+curl -X POST \
+ "http://127.0.0.1:7860/api/v1/run/4017e9f2-1fec-4643-bb05-165a8b50c4b3?stream=false" \
+ -H 'Content-Type: application/json' \
+ -d '{"input_value": "message",
+ "output_type": "chat",
+ "input_type": "chat",
+ "session_id": "YOUR_SESSION_ID"
+}'
+```
+
+Check your flow's **Playground**. In addition to the messages stored for the Default Session, a new session is started with your new Session ID.
+
+**Chat Input** and **Chat Output** components can also store a `session_id` parameter as a **Tweak** for specific sessions. The Playground will still display all available sessions, but the flow will use the value stored in the `session_id` tweak.
+
+```bash
+curl -X POST \
+ "http://127.0.0.1:7860/api/v1/run/4017e9f2-1fec-4643-bb05-165a8b50c4b3?stream=false" \
+ -H 'Content-Type: application/json' \
+ -d '{"input_value": "message",
+ "output_type": "chat",
+ "input_type": "chat",
+ "tweaks": {
+ "session_id": "YOUR_SESSION_ID"
+ }
+}'
+```
+
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
new file mode 100644
index 0000000000000000000000000000000000000000..00dc90662933720e22bc78e232dc1fa6f88501da
--- /dev/null
+++ b/docs/docusaurus.config.js
@@ -0,0 +1,212 @@
+// @ts-check
+// Note: type annotations allow type checking and IDEs autocompletion
+
+const lightCodeTheme = require("prism-react-renderer/themes/github");
+const darkCodeTheme = require("prism-react-renderer/themes/dracula");
+const { remarkCodeHike } = require("@code-hike/mdx");
+
+/** @type {import('@docusaurus/types').Config} */
+const config = {
+ title: "Langflow Documentation",
+ tagline:
+ "Langflow is a low-code app builder for RAG and multi-agent AI applications.",
+ favicon: "img/favicon.ico",
+ url: "https://docs.langflow.org",
+ baseUrl: "/",
+ onBrokenLinks: "throw",
+ onBrokenMarkdownLinks: "warn",
+ organizationName: "langflow-ai",
+ projectName: "langflow",
+ trailingSlash: false,
+ staticDirectories: ["static"],
+ customFields: {
+ mendableAnonKey: "b7f52734-297c-41dc-8737-edbd13196394", // Mendable Anon Client-side key, safe to expose to the public
+ },
+ i18n: {
+ defaultLocale: "en",
+ locales: ["en"],
+ },
+
+ presets: [
+ [
+ "docusaurus-preset-openapi",
+ /** @type {import('@docusaurus/preset-classic').Options} */
+ ({
+ api: {
+ path: "openapi.json", // Path to your OpenAPI file
+ routeBasePath: "/api", // The base URL for your API docs
+ },
+ docs: {
+ routeBasePath: "/", // Serve the docs at the site's root
+ sidebarPath: require.resolve("./sidebars.js"), // Use sidebars.js file
+ sidebarCollapsed: false,
+ beforeDefaultRemarkPlugins: [
+ [
+ remarkCodeHike,
+ {
+ theme: "github-dark",
+ showCopyButton: true,
+ lineNumbers: true,
+ },
+ ],
+ ],
+ },
+ sitemap: {
+ // https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-sitemap
+ // https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap
+ lastmod: "datetime",
+ changefreq: null,
+ priority: null,
+ },
+ gtag: {
+ trackingID: "G-XHC7G628ZP",
+ anonymizeIP: true,
+ },
+ googleTagManager: {
+ containerId: "GTM-NK5M4ZT8",
+ },
+ blog: false,
+ theme: {
+ customCss: [
+ require.resolve("@code-hike/mdx/styles.css"),
+ require.resolve("./css/custom.css"),
+ require.resolve("./css/docu-notion-styles.css"),
+ require.resolve(
+ "./css/gifplayer.css"
+ //"./node_modules/react-gif-player/dist/gifplayer.css" // this gave a big red compile warning which is seaming unrelated " Replace Autoprefixer browsers option to Browserslist config..."
+ ),
+ ],
+ },
+ }),
+ ],
+ ],
+ plugins: [
+ ["docusaurus-node-polyfills", { excludeAliases: ["console"] }],
+ "docusaurus-plugin-image-zoom",
+ [
+ "@docusaurus/plugin-client-redirects",
+ {
+ redirects: [
+ {
+ to: "/",
+ from: [
+ "/whats-new-a-new-chapter-langflow",
+ "/đ Welcome-to-Langflow",
+ "/getting-started-welcome-to-langflow"
+ ],
+ },
+ {
+ to: "/get-started-installation",
+ from: [
+ "/getting-started-installation",
+ "/getting-started-common-installation-issues",
+ ],
+ },
+ {
+ to: "/get-started-quickstart",
+ from: "/getting-started-quickstart",
+ },
+ {
+ to: "/starter-projects-travel-planning-agent",
+ from: "/starter-projects-dynamic-agent/",
+ },
+ {
+ to: "/workspace-overview",
+ from: [
+ "/365085a8-a90a-43f9-a779-f8769ec7eca1",
+ "/My-Collection",
+ "/workspace",
+ "/settings-project-general-settings",
+ ],
+ },
+ {
+ to: "/components-overview",
+ from: "/components",
+ },
+ {
+ to: "/configuration-global-variables",
+ from: "/settings-global-variables",
+ },
+ // add more redirects like this
+ // {
+ // to: '/docs/anotherpage',
+ // from: ['/docs/legacypage1', '/docs/legacypage2'],
+ // },
+ ],
+ },
+ ],
+ // ....
+ async function myPlugin(context, options) {
+ return {
+ name: "docusaurus-tailwindcss",
+ configurePostCss(postcssOptions) {
+ // Appends TailwindCSS and AutoPrefixer.
+ postcssOptions.plugins.push(require("tailwindcss"));
+ postcssOptions.plugins.push(require("autoprefixer"));
+ return postcssOptions;
+ },
+ };
+ },
+ ],
+ themeConfig:
+ /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
+ ({
+ navbar: {
+ hideOnScroll: true,
+ logo: {
+ alt: "Langflow",
+ src: "img/langflow-logo-black.svg",
+ srcDark: "img/langflow-logo-white.svg",
+ },
+ items: [
+ // right
+ {
+ position: "right",
+ href: "https://github.com/langflow-ai/langflow",
+ className: "header-github-link",
+ target: "_blank",
+ rel: null,
+ },
+ {
+ position: "right",
+ href: "https://twitter.com/langflow_ai",
+ className: "header-twitter-link",
+ target: "_blank",
+ rel: null,
+ },
+ {
+ position: "right",
+ href: "https://discord.gg/EqksyE2EX9",
+ className: "header-discord-link",
+ target: "_blank",
+ rel: null,
+ },
+ ],
+ },
+ colorMode: {
+ defaultMode: "light",
+ /* Allow users to chose light or dark mode. */
+ disableSwitch: false,
+ /* Respect user preferences, such as low light mode in the evening */
+ respectPrefersColorScheme: true,
+ },
+ prism: {
+ theme: lightCodeTheme,
+ darkTheme: darkCodeTheme,
+ },
+ zoom: {
+ selector: ".markdown :not(a) > img:not(.no-zoom)",
+ background: {
+ light: "rgba(240, 240, 240, 0.9)",
+ },
+ config: {},
+ },
+ docs: {
+ sidebar: {
+ hideable: true,
+ },
+ },
+ }),
+};
+
+module.exports = config;
diff --git a/docs/i18n/es/docusaurus-plugin-content-docs/current/Examples/527257662.png b/docs/i18n/es/docusaurus-plugin-content-docs/current/Examples/527257662.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5019a448c3daf99a4e429c035cb120fefae08ce
--- /dev/null
+++ b/docs/i18n/es/docusaurus-plugin-content-docs/current/Examples/527257662.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d70ce200765ed59b64a33e22acfcc1ab160cc89565c3d033827ffc30a35068af
+size 8450
diff --git a/docs/i18n/fr/docusaurus-plugin-content-docs/current/Examples/527257662.png b/docs/i18n/fr/docusaurus-plugin-content-docs/current/Examples/527257662.png
new file mode 100644
index 0000000000000000000000000000000000000000..85fb8774b494a2252579e4e9e080ac329d908490
--- /dev/null
+++ b/docs/i18n/fr/docusaurus-plugin-content-docs/current/Examples/527257662.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fa37f4ed0e72665de96e9d1c292147533846535e8894b0508322aacc36bfc33
+size 1091
diff --git a/docs/index.d.ts b/docs/index.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..686a5df6a926bc2f9a6c9c473c7e96c705614e09
--- /dev/null
+++ b/docs/index.d.ts
@@ -0,0 +1,10 @@
+declare module "*.module.scss" {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
+
+declare module "@theme/*";
+
+declare module "@components/*";
+
+declare module "@docusaurus/*";
diff --git a/docs/openapi.json b/docs/openapi.json
new file mode 100644
index 0000000000000000000000000000000000000000..eac0a54d606d1755ef197cfb762f47ddbac2125d
--- /dev/null
+++ b/docs/openapi.json
@@ -0,0 +1,9323 @@
+{
+ "openapi": "3.1.0",
+ "info": {
+ "title": "Langflow",
+ "version": "1.1.0"
+ },
+ "paths": {
+ "/api/v1/build/{flow_id}/vertices": {
+ "post": {
+ "tags": [
+ "Chat"
+ ],
+ "summary": "Retrieve Vertices Order",
+ "description": "Retrieve the vertices order for a given flow.\n\nArgs:\n flow_id (str): The ID of the flow.\n background_tasks (BackgroundTasks): The background tasks.\n data (Optional[FlowDataRequest], optional): The flow data. Defaults to None.\n stop_component_id (str, optional): The ID of the stop component. Defaults to None.\n start_component_id (str, optional): The ID of the start component. Defaults to None.\n session (AsyncSession, optional): The session dependency.\n\nReturns:\n VerticesOrderResponse: The response containing the ordered vertex IDs and the run ID.\n\nRaises:\n HTTPException: If there is an error checking the build status.",
+ "operationId": "retrieve_vertices_order_api_v1_build__flow_id__vertices_post",
+ "parameters": [
+ {
+ "name": "flow_id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid",
+ "title": "Flow Id"
+ }
+ },
+ {
+ "name": "data",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/FlowDataRequest"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "title": "Data"
+ }
+ },
+ {
+ "name": "stop_component_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "title": "Stop Component Id"
+ }
+ },
+ {
+ "name": "start_component_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "title": "Start Component Id"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/VerticesOrderResponse"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Validation Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HTTPValidationError"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/build/{flow_id}/flow": {
+ "post": {
+ "tags": [
+ "Chat"
+ ],
+ "summary": "Build Flow",
+ "operationId": "build_flow_api_v1_build__flow_id__flow_post",
+ "security": [
+ {
+ "OAuth2PasswordBearer": []
+ },
+ {
+ "API key query": []
+ },
+ {
+ "API key header": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "flow_id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid",
+ "title": "Flow Id"
+ }
+ },
+ {
+ "name": "stop_component_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "title": "Stop Component Id"
+ }
+ },
+ {
+ "name": "start_component_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "title": "Start Component Id"
+ }
+ },
+ {
+ "name": "log_builds",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": true,
+ "title": "Log Builds"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Body_build_flow_api_v1_build__flow_id__flow_post"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Successful Response",
+ "content": {
+ "application/json": {
+ "schema": {}
+ }
+ }
+ },
+ "422": {
+ "description": "Validation Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HTTPValidationError"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/build/{flow_id}/vertices/{vertex_id}": {
+ "post": {
+ "tags": [
+ "Chat"
+ ],
+ "summary": "Build Vertex",
+ "description": "Build a vertex instead of the entire graph.\n\nArgs:\n flow_id (str): The ID of the flow.\n vertex_id (str): The ID of the vertex to build.\n background_tasks (BackgroundTasks): The background tasks dependency.\n inputs (Optional[InputValueRequest], optional): The input values for the vertex. Defaults to None.\n files (List[str], optional): The files to use. Defaults to None.\n current_user (Any, optional): The current user dependency. Defaults to Depends(get_current_active_user).\n\nReturns:\n VertexBuildResponse: The response containing the built vertex information.\n\nRaises:\n HTTPException: If there is an error building the vertex.",
+ "operationId": "build_vertex_api_v1_build__flow_id__vertices__vertex_id__post",
+ "security": [
+ {
+ "OAuth2PasswordBearer": []
+ },
+ {
+ "API key query": []
+ },
+ {
+ "API key header": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "flow_id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid",
+ "title": "Flow Id"
+ }
+ },
+ {
+ "name": "vertex_id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "title": "Vertex Id"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Body_build_vertex_api_v1_build__flow_id__vertices__vertex_id__post"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Successful Response",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/VertexBuildResponse"
+ }
+ }
+ }
+ },
+ "422": {
+ "description": "Validation Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HTTPValidationError"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/build/{flow_id}/{vertex_id}/stream": {
+ "get": {
+ "tags": [
+ "Chat"
+ ],
+ "summary": "Build Vertex Stream",
+ "description": "Build a vertex instead of the entire graph.\n\nThis function is responsible for building a single vertex instead of the entire graph.\nIt takes the `flow_id` and `vertex_id` as required parameters, and an optional `session_id`.\nIt also depends on the `ChatService` and `SessionService` services.\n\nIf `session_id` is not provided, it retrieves the graph from the cache using the `chat_service`.\nIf `session_id` is provided, it loads the session data using the `session_service`.\n\nOnce the graph is obtained, it retrieves the specified vertex using the `vertex_id`.\nIf the vertex does not support streaming, an error is raised.\nIf the vertex has a built result, it sends the result as a chunk.\nIf the vertex is not frozen or not built, it streams the vertex data.\nIf the vertex has a result, it sends the result as a chunk.\nIf none of the above conditions are met, an error is raised.\n\nIf any exception occurs during the process, an error message is sent.\nFinally, the stream is closed.\n\nReturns:\n A `StreamingResponse` object with the streamed vertex data in text/event-stream format.\n\nRaises:\n HTTPException: If an error occurs while building the vertex.",
+ "operationId": "build_vertex_stream_api_v1_build__flow_id___vertex_id__stream_get",
+ "parameters": [
+ {
+ "name": "flow_id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid",
+ "title": "Flow Id"
+ }
+ },
+ {
+ "name": "vertex_id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "title": "Vertex Id"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful Response"
+ },
+ "422": {
+ "description": "Validation Error",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HTTPValidationError"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/all": {
+ "get": {
+ "tags": [
+ "Base"
+ ],
+ "summary": "Get All",
+ "operationId": "get_all_api_v1_all_get",
+ "responses": {
+ "200": {
+ "description": "Successful Response",
+ "content": {
+ "application/json": {
+ "schema": {}
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "OAuth2PasswordBearer": []
+ },
+ {
+ "API key query": []
+ },
+ {
+ "API key header": []
+ }
+ ]
+ }
+ },
+ "/api/v1/run/{flow_id_or_name}": {
+ "post": {
+ "tags": [
+ "Base"
+ ],
+ "summary": "Simplified Run Flow",
+ "description": "Executes a specified flow by ID.\n\nExecutes a specified flow by ID with input customization, performance enhancements through caching,\nand optional data streaming.\n\n### Parameters:\n- `db` (Session): Database session for executing queries.\n- `flow_id_or_name` (str): ID or endpoint name of the flow to run.\n- `input_request` (SimplifiedAPIRequest): Request object containing input values, types, output selection, tweaks,\n and session ID.\n- `api_key_user` (User): User object derived from the provided API key, used for authentication.\n- `session_service` (SessionService): Service for managing flow sessions, essential for session reuse and caching.\n\n### SimplifiedAPIRequest:\n- `input_value` (Optional[str], default=\"\"): Input value to pass to the flow.\n- `input_type` (Optional[Literal[\"chat\", \"text\", \"any\"]], default=\"chat\"): Type of the input value,\n determining how the input is interpreted.\n- `output_type` (Optional[Literal[\"chat\", \"text\", \"any\", \"debug\"]], default=\"chat\"): Desired type of output,\n affecting which components' outputs are included in the response. If set to \"debug\", all outputs are returned.\n- `output_component` (Optional[str], default=None): Specific component output to retrieve. If provided,\n only the output of the specified component is returned. This overrides the `output_type` parameter.\n- `tweaks` (Optional[Tweaks], default=None): Adjustments to the flow's behavior, allowing for custom execution\n parameters.\n- `session_id` (Optional[str], default=None): An identifier for reusing session data, aiding in performance for\n subsequent requests.\n\n\n### Tweaks\nA dictionary of tweaks to customize the flow execution.\nThe tweaks can be used to modify the flow's parameters and components.\nTweaks can be overridden by the input values.\nYou can use Component's `id` or Display Name as key to tweak a specific component\n(e.g., `{\"Component Name\": {\"parameter_name\": \"value\"}}`).\nYou can also use the parameter name as key to tweak all components with that parameter\n(e.g., `{\"parameter_name\": \"value\"}`).\n\n### Returns:\n- A `RunResponse` object containing the execution results, including selected (or all, based on `output_type`)\n outputs of the flow and the session ID, facilitating result retrieval and further interactions in a session\n context.\n\n### Raises:\n- HTTPException: 404 if the specified flow ID curl -X 'POST' \n### Example:\n```bash\ncurl -X 'POST' 'http://+ {line} +
+ ))} ++ {t(dropItem.title)} +
+
+ {dropItem.link ? (
+
+ {title} +
+
+ {link && (
+
{title}
++ Sorry, we found an unexpected error! +
+
+ Please report errors with detailed tracebacks on the{" "}
+
+ GitHub Issues
+ {" "}
+ page.
+
+ Thank you!
+
{description}
++ + Enable auto-saving + {" "} + to avoid losing progress. +
+
+ {content}
+
+ );
+ }
+ },
+ }}
+ >
+ {String(content.text)}
+
+ {children}
+
+ );
+ },
+ }}
+ >
+ {output}
+