diff --git a/.env.example b/.env.example index a63a9b4b1..2725e3b67 100644 --- a/.env.example +++ b/.env.example @@ -4,6 +4,19 @@ # Do not commit .env file to git # Do not change .env.example file +# Config directory +# Directory where files, logs and database will be stored +# Example: LANGFLOW_CONFIG_DIR=~/.langflow +LANGFLOW_CONFIG_DIR= + +# Save database in the config directory +# Values: true, false +# If false, the database will be saved in Langflow's root directory +# This means that the database will be deleted when Langflow is uninstalled +# and that the database will not be shared between different virtual environments +# Example: LANGFLOW_SAVE_DB_IN_CONFIG_DIR=true +LANGFLOW_SAVE_DB_IN_CONFIG_DIR= + # Database URL # Postgres example: LANGFLOW_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/langflow # SQLite example: @@ -56,7 +69,6 @@ LANGFLOW_REMOVE_API_KEYS= # LANGFLOW_REDIS_CACHE_EXPIRE (default: 3600) LANGFLOW_CACHE_TYPE= - # Set AUTO_LOGIN to false if you want to disable auto login # and use the login form to login. LANGFLOW_SUPERUSER and LANGFLOW_SUPERUSER_PASSWORD # must be set if AUTO_LOGIN is set to false diff --git a/Makefile b/Makefile index 7053ef8cb..d056654f9 100644 --- a/Makefile +++ b/Makefile @@ -141,7 +141,7 @@ backend: @echo 'Setting up the environment' @make setup_env make install_backend - @-kill -9 `lsof -t -i:7860` + @-kill -9 $(lsof -t -i:7860) ifdef login @echo "Running backend autologin is $(login)"; LANGFLOW_AUTO_LOGIN=$(login) poetry run uvicorn --factory langflow.main:create_app --host 0.0.0.0 --port 7860 --reload --env-file .env --loop asyncio diff --git a/README.md b/README.md index d7c7014aa..a753ea830 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,12 @@ Alternatively, click the **"Open in Cloud Shell"** button below to launch Google ## Deploy on Railway +Use this template to deploy Langflow 1.0 Preview on Railway: + +[![Deploy 1.0 Preview on Railway](https://railway.app/button.svg)](https://railway.app/template/UsJ1uB?referralCode=MnPSdg) + +Or this one to deploy Langflow 0.6.x: + [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/JMXEWp?referralCode=MnPSdg) ## Deploy on Render diff --git a/build_and_push.Dockerfile b/build_and_push.Dockerfile index f552dd695..3e9e18dab 100644 --- a/build_and_push.Dockerfile +++ b/build_and_push.Dockerfile @@ -10,7 +10,7 @@ # PYTHON-BASE # Sets up all our shared environment variables ################################ -FROM python:3.10-slim as python-base +FROM python:3.12-slim as python-base # python ENV PYTHONUNBUFFERED=1 \ @@ -47,7 +47,7 @@ ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH" # Used to build deps + create our virtual environment ################################ FROM python-base as builder-base -RUN + RUN apt-get update \ && apt-get install --no-install-recommends -y \ # deps for installing poetry @@ -55,7 +55,12 @@ RUN apt-get update \ # deps for building python deps build-essential \ # npm - npm + npm \ + # gcc + gcc \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + # Now we need to copy the entire project into the image @@ -70,15 +75,12 @@ RUN --mount=type=cache,target=/root/.cache \ RUN python -m pip install requests && cd ./scripts && python update_dependencies.py RUN $POETRY_HOME/bin/poetry lock RUN $POETRY_HOME/bin/poetry build -# Final stage for the application -FROM python-base as final # Copy virtual environment and built .tar.gz from builder base RUN useradd -m -u 1000 user -COPY --from=builder-base /app/dist/*.tar.gz ./ +USER user # Install the package from the .tar.gz -RUN python -m pip install *.tar.gz --user +RUN python -m pip install /app/dist/*.tar.gz -WORKDIR /app ENTRYPOINT ["python", "-m", "langflow", "run"] -CMD ["--host", "0.0.0.0", "--port", "7860"] \ No newline at end of file +CMD ["--host", "0.0.0.0", "--port", "7860"] diff --git a/build_and_push_base.Dockerfile b/build_and_push_base.Dockerfile index db6d0cf58..2c7cc2a07 100644 --- a/build_and_push_base.Dockerfile +++ b/build_and_push_base.Dockerfile @@ -10,7 +10,7 @@ # PYTHON-BASE # Sets up all our shared environment variables ################################ -FROM python:3.10-slim as python-base +FROM python:3.12-slim as python-base # python ENV PYTHONUNBUFFERED=1 \ @@ -55,6 +55,8 @@ RUN apt-get update \ build-essential \ # npm npm \ + # gcc + gcc \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* @@ -76,17 +78,14 @@ RUN cd src/frontend && npm run build COPY src/backend ./src/backend RUN cp -r src/frontend/build src/backend/base/langflow/frontend RUN rm -rf src/backend/base/dist -RUN cd src/backend/base && $POETRY_HOME/bin/poetry build --format sdist - -# Final stage for the application -FROM python-base as final +RUN cd src/backend/base && $POETRY_HOME/bin/poetry build # Copy virtual environment and built .tar.gz from builder base RUN useradd -m -u 1000 user -COPY --from=builder-base /app/src/backend/base/dist/*.tar.gz ./ +USER user # Install the package from the .tar.gz -RUN pip install *.tar.gz --user +RUN python -m pip install /app/src/backend/base/dist/*.tar.gz + -WORKDIR /app ENTRYPOINT ["python", "-m", "langflow", "run"] -CMD ["--host", "0.0.0.0", "--port", "7860"] \ No newline at end of file +CMD ["--host", "0.0.0.0", "--port", "7860"] diff --git a/docs/docs/administration/global-env.mdx b/docs/docs/administration/global-env.mdx new file mode 100644 index 000000000..fca7ec16a --- /dev/null +++ b/docs/docs/administration/global-env.mdx @@ -0,0 +1,45 @@ +import ZoomableImage from "/src/theme/ZoomableImage.js"; +import Admonition from "@theme/Admonition"; + +# Global environment variables + +Langflow 1.0 alpha includes the option to add **Global Environment Variables** for your application. + +## Add a global variable to a project + +In this example, you'll add the `openai_api_key` credential as a global environment variable to the **Basic Prompting** starter project. + +For more information on the starter flow, see [Basic prompting](../starter-projects/basic-prompting.mdx). + +1. From the Langflow dashboard, click **New Project**. +2. Select **Basic Prompting**. + +The **Basic Prompting** flow is created. + +3. To create an environment variable for the **OpenAI** component: + 1. In the **OpenAI API Key** field, click the **Globe** button, and then click **Add New Variable**. + 2. In the **Variable Name** field, enter `openai_api_key`. + 3. In the **Value** field, paste your OpenAI API Key (`sk-...`). + 4. For the variable **Type**, select **Credential**. + 5. In the **Apply to Fields** field, select **OpenAI API Key** to apply this variable to all fields named **OpenAI API Key**. + 6. Click **Save Variable**. + +You now have a `openai_api_key` global environment variable for your Langflow project. + + + You can also create global variables in **Settings** > **Variables and + Secrets**. + + + + +4. To view and manage your project's global environment variables, visit **Settings** > **Variables and Secrets**. + +For more on variables in HuggingFace Spaces, see [Managing Secrets](https://huggingface.co/docs/hub/spaces-overview#managing-secrets). diff --git a/docs/docs/administration/playground.mdx b/docs/docs/administration/playground.mdx new file mode 100644 index 000000000..57f3f2de0 --- /dev/null +++ b/docs/docs/administration/playground.mdx @@ -0,0 +1,29 @@ +import ThemedImage from "@theme/ThemedImage"; +import useBaseUrl from "@docusaurus/useBaseUrl"; +import ZoomableImage from "/src/theme/ZoomableImage.js"; +import ReactPlayer from "react-player"; +import Admonition from "@theme/Admonition"; + +# Playground + +In Langflow 1.0 alpha, the **Playground** replaces the **Interaction Panel**. + +The **Playground** provides an interface for interacting with flows without opening them in the flow editor. + +It even works for flows hosted on the Langflow store! + +As long as you have a flow's environment variables set, you can run it by clicking the **Playground** button. + +1. From your **Collections** page, click **Playground** in one of your flows. + The **Playground** window opens. + + + +2. Chat with your bot as you normally would, all without having to open the editor. diff --git a/docs/docs/components/vector-stores.mdx b/docs/docs/components/vector-stores.mdx index 66d6685a1..7e21f1021 100644 --- a/docs/docs/components/vector-stores.mdx +++ b/docs/docs/components/vector-stores.mdx @@ -26,7 +26,8 @@ The `Astra DB` initializes a vector store using Astra DB from records. It create - **Collection Indexing Policy:** Indexing policy for the collection. - Ensure you configure the necessary Astra DB token and API endpoint before starting. + Ensure you configure the necessary Astra DB token and API endpoint before + starting. --- @@ -96,6 +97,44 @@ For detailed documentation and integration guides, please refer to the [Chroma C --- +### Couchbase + +`Couchbase` builds a Couchbase vector store from records, streamlining the storage and retrieval of documents. + +**Parameters:** + +- **Embedding:** Model used by Couchbase. +- **Input:** Documents or records. +- **Couchbase Cluster Connection String:** Cluster Connection string. +- **Couchbase Cluster Username:** Cluster Username. +- **Couchbase Cluster Password:** Cluster Password. +- **Bucket Name:** Bucket identifier in Couchbase. +- **Scope Name:** Scope identifier in Couchbase. +- **Collection Name:** Collection identifier in Couchbase. +- **Index Name:** Index identifier. + +For detailed documentation and integration guides, please refer to the [Couchbase Component Documentation](https://python.langchain.com/docs/integrations/vectorstores/couchbase). + +--- + +### Couchbase Search + +`CouchbaseSearch` leverages the Couchbase component to search for documents based on similarity metric. + +**Parameters:** + +- **Input:** Search query. +- **Embedding:** Model used in the Vector Store. +- **Couchbase Cluster Connection String:** Cluster Connection string. +- **Couchbase Cluster Username:** Cluster Username. +- **Couchbase Cluster Password:** Cluster Password. +- **Bucket Name:** Bucket identifier. +- **Scope Name:** Scope identifier. +- **Collection Name:** Collection identifier in Couchbase. +- **Index Name:** Index identifier. + +--- + ### FAISS The `FAISS` component manages document ingestion into a FAISS Vector Store, optimizing document indexing and retrieval. @@ -278,7 +317,8 @@ For more details, see the [PGVector Component Documentation](https://python.lang For detailed documentation, refer to the [Redis Documentation](https://python.langchain.com/docs/integrations/vectorstores/redis). - Ensure the Redis server URL and index name are configured correctly. Provide a schema if no documents are available. + Ensure the Redis server URL and index name are configured correctly. Provide a + schema if no documents are available. --- @@ -389,7 +429,8 @@ For more information, consult the [Vectara Component Documentation](https://pyth For more details, see the [Weaviate Component Documentation](https://python.langchain.com/docs/integrations/vectorstores/weaviate). - Ensure Weaviate instance is running and accessible. Verify API key, index name, text key, and attributes are set correctly. + Ensure Weaviate instance is running and accessible. Verify API key, index + name, text key, and attributes are set correctly. --- diff --git a/docs/docs/contributing/contribute-component.md b/docs/docs/contributing/contribute-component.md index 398fc3b9c..b178a5882 100644 --- a/docs/docs/contributing/contribute-component.md +++ b/docs/docs/contributing/contribute-component.md @@ -16,7 +16,7 @@ You have a new document loader called **MyCustomDocumentLoader** and it would lo 6. Add the dependency to [/documentloaders/\_\_init\_\_.py](https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/components/documentloaders/__init__.py) as `from .MyCustomDocumentLoader import MyCustomDocumentLoader`. 7. Add any new dependencies to the outer [pyproject.toml](https://github.com/langflow-ai/langflow/blob/dev/pyproject.toml#L27) file. 8. Submit documentation for your component. For this example, you'd submit documentation to the [loaders page](https://github.com/langflow-ai/langflow/blob/dev/docs/docs/components/loaders.mdx). -8. Submit your changes as a pull request. The Langflow team will have a look, suggest changes, and add your component to Langflow. +9. Submit your changes as a pull request. The Langflow team will have a look, suggest changes, and add your component to Langflow. ## User Sharing @@ -27,21 +27,19 @@ If so, you can share your component on the Langflow store. 1. [Register at the Langflow store](https://www.langflow.store/login/). 2. Undergo pre-validation before receiving an API key. 3. To deploy your amazing component directly to the Langflow store, without it being merged into the main source code, navigate to your flow, and then click **Share**. -The share window appears: + The share window appears: 5. Choose whether you want to flow to be public or private. -You can also **Export** your flow as a JSON file from this window. -When you're ready to share the flow, click **Share Flow**. -You should see a **Flow shared successfully** popup. + You can also **Export** your flow as a JSON file from this window. + When you're ready to share the flow, click **Share Flow**. + You should see a **Flow shared successfully** popup. 6. To confirm, navigate to the **Langflow Store** and filter results by **Created By Me**. You should see your new flow on the **Langflow Store**. - - diff --git a/docs/docs/tutorials/rag-with-astradb.mdx b/docs/docs/tutorials/rag-with-astradb.mdx index 09395c598..9bb813f55 100644 --- a/docs/docs/tutorials/rag-with-astradb.mdx +++ b/docs/docs/tutorials/rag-with-astradb.mdx @@ -143,7 +143,7 @@ The RAG flow is a bit more complex. It consists of: style={{ width: "80%", margin: "20px auto" }} /> -To run it all we have to do is click on the ⚡ _Run_ button and start interacting with your RAG application. +To run it all we have to do is click on the 🤖 _Playground_ button and start interacting with your RAG application. Union[Text, Record]:\n return super().build(\n sender=sender,\n sender_name=sender_name,\n input_value=input_value,\n session_id=session_id,\n return_record=return_record,\n )\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "input_value": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "input_value", - "display_name": "Message", - "advanced": false, - "input_types": [], - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "value": "what is a line" - }, - "return_record": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "return_record", - "display_name": "Return Record", - "advanced": true, - "dynamic": false, - "info": "Return the message as a record containing the sender, sender_name, and session_id.", - "load_from_db": false, - "title_case": false - }, - "sender": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "User", - "fileTypes": [], - "file_path": "", - "password": false, - "options": [ - "Machine", - "User" - ], - "name": "sender", - "display_name": "Sender Type", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "sender_name": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": "User", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "sender_name", - "display_name": "Sender Name", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "session_id": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "session_id", - "display_name": "Session ID", - "advanced": true, - "dynamic": false, - "info": "If provided, the message will be stored in the memory.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "_type": "CustomComponent" - }, - "description": "Get chat inputs from the Playground.", - "icon": "ChatInput", - "base_classes": [ - "Text", - "str", - "object", - "Record" - ], - "display_name": "Chat Input", - "documentation": "", - "custom_fields": { - "sender": null, - "sender_name": null, - "input_value": null, - "session_id": null, - "return_record": null - }, - "output_types": [ - "Text", - "Record" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false - }, - "id": "ChatInput-yxMKE" - }, - "selected": false, - "width": 384, - "height": 383 + "id": "51e2b78a-199b-4054-9f32-e288eef6924c", + "data": { + "nodes": [ + { + "id": "ChatInput-yxMKE", + "type": "genericNode", + "position": { + "x": 1195.5276981160775, + "y": 209.421875 + }, + "data": { + "type": "ChatInput", + "node": { + "template": { + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from typing import Optional, Union\n\nfrom langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n def build_config(self):\n build_config = super().build_config()\n build_config[\"input_value\"] = {\n \"input_types\": [],\n \"display_name\": \"Message\",\n \"multiline\": True,\n }\n\n return build_config\n\n def build(\n self,\n sender: Optional[str] = \"User\",\n sender_name: Optional[str] = \"User\",\n input_value: Optional[str] = None,\n session_id: Optional[str] = None,\n return_record: Optional[bool] = False,\n ) -> Union[Text, Record]:\n return super().build(\n sender=sender,\n sender_name=sender_name,\n input_value=input_value,\n session_id=session_id,\n return_record=return_record,\n )\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "input_value": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "input_value", + "display_name": "Message", + "advanced": false, + "input_types": [], + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "value": "what is a line" + }, + "return_record": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "return_record", + "display_name": "Return Record", + "advanced": true, + "dynamic": false, + "info": "Return the message as a record containing the sender, sender_name, and session_id.", + "load_from_db": false, + "title_case": false + }, + "sender": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "value": "User", + "fileTypes": [], + "file_path": "", + "password": false, + "options": ["Machine", "User"], + "name": "sender", + "display_name": "Sender Type", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "sender_name": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": "User", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "sender_name", + "display_name": "Sender Name", + "advanced": false, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "session_id": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "session_id", + "display_name": "Session ID", + "advanced": true, + "dynamic": false, + "info": "If provided, the message will be stored in the memory.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "_type": "CustomComponent" }, - { - "id": "TextOutput-BDknO", - "type": "genericNode", - "position": { - "x": 2322.600672827879, - "y": 604.9467307442569 - }, - "data": { - "type": "TextOutput", - "node": { - "template": { - "input_value": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": "", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "input_value", - "display_name": "Value", - "advanced": false, - "input_types": [ - "Record", - "Text" - ], - "dynamic": false, - "info": "Text or Record to be passed as output.", - "load_from_db": false, - "title_case": false - }, - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import Optional\n\nfrom langflow.base.io.text import TextComponent\nfrom langflow.field_typing import Text\n\n\nclass TextOutput(TextComponent):\n display_name = \"Text Output\"\n description = \"Display a text output in the Playground.\"\n icon = \"type\"\n\n def build_config(self):\n return {\n \"input_value\": {\n \"display_name\": \"Value\",\n \"input_types\": [\"Record\", \"Text\"],\n \"info\": \"Text or Record to be passed as output.\",\n },\n \"record_template\": {\n \"display_name\": \"Record Template\",\n \"multiline\": True,\n \"info\": \"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n \"advanced\": True,\n },\n }\n\n def build(self, input_value: Optional[Text] = \"\", record_template: str = \"\") -> Text:\n return super().build(input_value=input_value, record_template=record_template)\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "record_template": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "{text}", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "record_template", - "display_name": "Record Template", - "advanced": true, - "dynamic": false, - "info": "Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "_type": "CustomComponent" - }, - "description": "Display a text output in the Playground.", - "icon": "type", - "base_classes": [ - "object", - "Text", - "str" - ], - "display_name": "Extracted Chunks", - "documentation": "", - "custom_fields": { - "input_value": null, - "record_template": null - }, - "output_types": [ - "Text" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false - }, - "id": "TextOutput-BDknO" - }, - "selected": false, - "width": 384, - "height": 289, - "positionAbsolute": { - "x": 2322.600672827879, - "y": 604.9467307442569 - }, - "dragging": false + "description": "Get chat inputs from the Playground.", + "icon": "ChatInput", + "base_classes": ["Text", "str", "object", "Record"], + "display_name": "Chat Input", + "documentation": "", + "custom_fields": { + "sender": null, + "sender_name": null, + "input_value": null, + "session_id": null, + "return_record": null }, - { - "id": "OpenAIEmbeddings-ZlOk1", - "type": "genericNode", - "position": { - "x": 1183.667250865064, - "y": 687.3171828430261 - }, - "data": { - "type": "OpenAIEmbeddings", - "node": { - "template": { - "allowed_special": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": [], - "fileTypes": [], - "file_path": "", - "password": false, - "name": "allowed_special", - "display_name": "Allowed Special", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "chunk_size": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 1000, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "chunk_size", - "display_name": "Chunk Size", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "client": { - "type": "Any", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "client", - "display_name": "Client", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import Any, Dict, List, Optional\n\nfrom langchain_openai.embeddings.base import OpenAIEmbeddings\n\nfrom langflow.field_typing import Embeddings, NestedDict\nfrom langflow.interface.custom.custom_component import CustomComponent\n\n\nclass OpenAIEmbeddingsComponent(CustomComponent):\n display_name = \"OpenAI Embeddings\"\n description = \"Generate embeddings using OpenAI models.\"\n\n def build_config(self):\n return {\n \"allowed_special\": {\n \"display_name\": \"Allowed Special\",\n \"advanced\": True,\n \"field_type\": \"str\",\n \"is_list\": True,\n },\n \"default_headers\": {\n \"display_name\": \"Default Headers\",\n \"advanced\": True,\n \"field_type\": \"dict\",\n },\n \"default_query\": {\n \"display_name\": \"Default Query\",\n \"advanced\": True,\n \"field_type\": \"NestedDict\",\n },\n \"disallowed_special\": {\n \"display_name\": \"Disallowed Special\",\n \"advanced\": True,\n \"field_type\": \"str\",\n \"is_list\": True,\n },\n \"chunk_size\": {\"display_name\": \"Chunk Size\", \"advanced\": True},\n \"client\": {\"display_name\": \"Client\", \"advanced\": True},\n \"deployment\": {\"display_name\": \"Deployment\", \"advanced\": True},\n \"embedding_ctx_length\": {\n \"display_name\": \"Embedding Context Length\",\n \"advanced\": True,\n },\n \"max_retries\": {\"display_name\": \"Max Retries\", \"advanced\": True},\n \"model\": {\n \"display_name\": \"Model\",\n \"advanced\": False,\n \"options\": [\n \"text-embedding-3-small\",\n \"text-embedding-3-large\",\n \"text-embedding-ada-002\",\n ],\n },\n \"model_kwargs\": {\"display_name\": \"Model Kwargs\", \"advanced\": True},\n \"openai_api_base\": {\n \"display_name\": \"OpenAI API Base\",\n \"password\": True,\n \"advanced\": True,\n },\n \"openai_api_key\": {\"display_name\": \"OpenAI API Key\", \"password\": True},\n \"openai_api_type\": {\n \"display_name\": \"OpenAI API Type\",\n \"advanced\": True,\n \"password\": True,\n },\n \"openai_api_version\": {\n \"display_name\": \"OpenAI API Version\",\n \"advanced\": True,\n },\n \"openai_organization\": {\n \"display_name\": \"OpenAI Organization\",\n \"advanced\": True,\n },\n \"openai_proxy\": {\"display_name\": \"OpenAI Proxy\", \"advanced\": True},\n \"request_timeout\": {\"display_name\": \"Request Timeout\", \"advanced\": True},\n \"show_progress_bar\": {\n \"display_name\": \"Show Progress Bar\",\n \"advanced\": True,\n },\n \"skip_empty\": {\"display_name\": \"Skip Empty\", \"advanced\": True},\n \"tiktoken_model_name\": {\n \"display_name\": \"TikToken Model Name\",\n \"advanced\": True,\n },\n \"tiktoken_enable\": {\"display_name\": \"TikToken Enable\", \"advanced\": True},\n }\n\n def build(\n self,\n openai_api_key: str,\n default_headers: Optional[Dict[str, str]] = None,\n default_query: Optional[NestedDict] = {},\n allowed_special: List[str] = [],\n disallowed_special: List[str] = [\"all\"],\n chunk_size: int = 1000,\n client: Optional[Any] = None,\n deployment: str = \"text-embedding-ada-002\",\n embedding_ctx_length: int = 8191,\n max_retries: int = 6,\n model: str = \"text-embedding-ada-002\",\n model_kwargs: NestedDict = {},\n openai_api_base: Optional[str] = None,\n openai_api_type: Optional[str] = None,\n openai_api_version: Optional[str] = None,\n openai_organization: Optional[str] = None,\n openai_proxy: Optional[str] = None,\n request_timeout: Optional[float] = None,\n show_progress_bar: bool = False,\n skip_empty: bool = False,\n tiktoken_enable: bool = True,\n tiktoken_model_name: Optional[str] = None,\n ) -> Embeddings:\n # This is to avoid errors with Vector Stores (e.g Chroma)\n if disallowed_special == [\"all\"]:\n disallowed_special = \"all\" # type: ignore\n\n return OpenAIEmbeddings(\n tiktoken_enabled=tiktoken_enable,\n default_headers=default_headers,\n default_query=default_query,\n allowed_special=set(allowed_special),\n disallowed_special=\"all\",\n chunk_size=chunk_size,\n client=client,\n deployment=deployment,\n embedding_ctx_length=embedding_ctx_length,\n max_retries=max_retries,\n model=model,\n model_kwargs=model_kwargs,\n base_url=openai_api_base,\n api_key=openai_api_key,\n openai_api_type=openai_api_type,\n api_version=openai_api_version,\n organization=openai_organization,\n openai_proxy=openai_proxy,\n timeout=request_timeout,\n show_progress_bar=show_progress_bar,\n skip_empty=skip_empty,\n tiktoken_model_name=tiktoken_model_name,\n )\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "default_headers": { - "type": "dict", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "default_headers", - "display_name": "Default Headers", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "default_query": { - "type": "NestedDict", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": {}, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "default_query", - "display_name": "Default Query", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "deployment": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": "text-embedding-ada-002", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "deployment", - "display_name": "Deployment", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "disallowed_special": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": [ - "all" - ], - "fileTypes": [], - "file_path": "", - "password": false, - "name": "disallowed_special", - "display_name": "Disallowed Special", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "embedding_ctx_length": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 8191, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "embedding_ctx_length", - "display_name": "Embedding Context Length", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "max_retries": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 6, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "max_retries", - "display_name": "Max Retries", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "model": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "text-embedding-ada-002", - "fileTypes": [], - "file_path": "", - "password": false, - "options": [ - "text-embedding-3-small", - "text-embedding-3-large", - "text-embedding-ada-002" - ], - "name": "model", - "display_name": "Model", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "model_kwargs": { - "type": "NestedDict", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": {}, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "model_kwargs", - "display_name": "Model Kwargs", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "openai_api_base": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": true, - "name": "openai_api_base", - "display_name": "OpenAI API Base", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_api_key": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": true, - "name": "openai_api_key", - "display_name": "OpenAI API Key", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": "" - }, - "openai_api_type": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": true, - "name": "openai_api_type", - "display_name": "OpenAI API Type", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_api_version": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "openai_api_version", - "display_name": "OpenAI API Version", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_organization": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "openai_organization", - "display_name": "OpenAI Organization", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_proxy": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "openai_proxy", - "display_name": "OpenAI Proxy", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "request_timeout": { - "type": "float", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "request_timeout", - "display_name": "Request Timeout", - "advanced": true, - "dynamic": false, - "info": "", - "rangeSpec": { - "step_type": "float", - "min": -1, - "max": 1, - "step": 0.1 - }, - "load_from_db": false, - "title_case": false - }, - "show_progress_bar": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "show_progress_bar", - "display_name": "Show Progress Bar", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "skip_empty": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "skip_empty", - "display_name": "Skip Empty", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "tiktoken_enable": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": true, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "tiktoken_enable", - "display_name": "TikToken Enable", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "tiktoken_model_name": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "tiktoken_model_name", - "display_name": "TikToken Model Name", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "_type": "CustomComponent" - }, - "description": "Generate embeddings using OpenAI models.", - "base_classes": [ - "Embeddings" - ], - "display_name": "OpenAI Embeddings", - "documentation": "", - "custom_fields": { - "openai_api_key": null, - "default_headers": null, - "default_query": null, - "allowed_special": null, - "disallowed_special": null, - "chunk_size": null, - "client": null, - "deployment": null, - "embedding_ctx_length": null, - "max_retries": null, - "model": null, - "model_kwargs": null, - "openai_api_base": null, - "openai_api_type": null, - "openai_api_version": null, - "openai_organization": null, - "openai_proxy": null, - "request_timeout": null, - "show_progress_bar": null, - "skip_empty": null, - "tiktoken_enable": null, - "tiktoken_model_name": null - }, - "output_types": [ - "Embeddings" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false - }, - "id": "OpenAIEmbeddings-ZlOk1" - }, - "selected": false, - "width": 384, - "height": 383, - "dragging": false + "output_types": ["Text", "Record"], + "field_formatters": {}, + "frozen": false, + "field_order": [], + "beta": false + }, + "id": "ChatInput-yxMKE" + }, + "selected": false, + "width": 384, + "height": 383 + }, + { + "id": "TextOutput-BDknO", + "type": "genericNode", + "position": { + "x": 2322.600672827879, + "y": 604.9467307442569 + }, + "data": { + "type": "TextOutput", + "node": { + "template": { + "input_value": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": "", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "input_value", + "display_name": "Value", + "advanced": false, + "input_types": ["Record", "Text"], + "dynamic": false, + "info": "Text or Record to be passed as output.", + "load_from_db": false, + "title_case": false + }, + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from typing import Optional\n\nfrom langflow.base.io.text import TextComponent\nfrom langflow.field_typing import Text\n\n\nclass TextOutput(TextComponent):\n display_name = \"Text Output\"\n description = \"Display a text output in the Playground.\"\n icon = \"type\"\n\n def build_config(self):\n return {\n \"input_value\": {\n \"display_name\": \"Value\",\n \"input_types\": [\"Record\", \"Text\"],\n \"info\": \"Text or Record to be passed as output.\",\n },\n \"record_template\": {\n \"display_name\": \"Record Template\",\n \"multiline\": True,\n \"info\": \"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n \"advanced\": True,\n },\n }\n\n def build(self, input_value: Optional[Text] = \"\", record_template: str = \"\") -> Text:\n return super().build(input_value=input_value, record_template=record_template)\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "record_template": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "{text}", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "record_template", + "display_name": "Record Template", + "advanced": true, + "dynamic": false, + "info": "Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "_type": "CustomComponent" }, - { - "id": "OpenAIModel-EjXlN", - "type": "genericNode", - "position": { - "x": 3410.117202077183, - "y": 431.2038048137648 - }, - "data": { - "type": "OpenAIModel", - "node": { - "template": { - "input_value": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "input_value", - "display_name": "Input", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import Optional\n\nfrom langchain_openai import ChatOpenAI\n\nfrom langflow.base.constants import STREAM_INFO_TEXT\nfrom langflow.base.models.model import LCModelComponent\nfrom langflow.field_typing import NestedDict, Text\n\n\nclass OpenAIModelComponent(LCModelComponent):\n display_name = \"OpenAI\"\n description = \"Generates text using OpenAI LLMs.\"\n icon = \"OpenAI\"\n\n field_order = [\n \"max_tokens\",\n \"model_kwargs\",\n \"model_name\",\n \"openai_api_base\",\n \"openai_api_key\",\n \"temperature\",\n \"input_value\",\n \"system_message\",\n \"stream\",\n ]\n\n def build_config(self):\n return {\n \"input_value\": {\"display_name\": \"Input\"},\n \"max_tokens\": {\n \"display_name\": \"Max Tokens\",\n \"advanced\": True,\n },\n \"model_kwargs\": {\n \"display_name\": \"Model Kwargs\",\n \"advanced\": True,\n },\n \"model_name\": {\n \"display_name\": \"Model Name\",\n \"advanced\": False,\n \"options\": [\n \"gpt-4-turbo-preview\",\n \"gpt-3.5-turbo\",\n \"gpt-4-0125-preview\",\n \"gpt-4-1106-preview\",\n \"gpt-4-vision-preview\",\n \"gpt-3.5-turbo-0125\",\n \"gpt-3.5-turbo-1106\",\n ],\n \"value\": \"gpt-4-turbo-preview\",\n },\n \"openai_api_base\": {\n \"display_name\": \"OpenAI API Base\",\n \"advanced\": True,\n \"info\": (\n \"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\n\"\n \"You can change this to use other APIs like JinaChat, LocalAI and Prem.\"\n ),\n },\n \"openai_api_key\": {\n \"display_name\": \"OpenAI API Key\",\n \"info\": \"The OpenAI API Key to use for the OpenAI model.\",\n \"advanced\": False,\n \"password\": True,\n },\n \"temperature\": {\n \"display_name\": \"Temperature\",\n \"advanced\": False,\n \"value\": 0.1,\n },\n \"stream\": {\n \"display_name\": \"Stream\",\n \"info\": STREAM_INFO_TEXT,\n \"advanced\": True,\n },\n \"system_message\": {\n \"display_name\": \"System Message\",\n \"info\": \"System message to pass to the model.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n input_value: Text,\n openai_api_key: str,\n temperature: float,\n model_name: str,\n max_tokens: Optional[int] = 256,\n model_kwargs: NestedDict = {},\n openai_api_base: Optional[str] = None,\n stream: bool = False,\n system_message: Optional[str] = None,\n ) -> Text:\n if not openai_api_base:\n openai_api_base = \"https://api.openai.com/v1\"\n output = ChatOpenAI(\n max_tokens=max_tokens,\n model_kwargs=model_kwargs,\n model=model_name,\n base_url=openai_api_base,\n api_key=openai_api_key,\n temperature=temperature,\n )\n\n return self.get_chat_result(output, stream, input_value, system_message)\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "max_tokens": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 256, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "max_tokens", - "display_name": "Max Tokens", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "model_kwargs": { - "type": "NestedDict", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": {}, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "model_kwargs", - "display_name": "Model Kwargs", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "model_name": { - "type": "str", - "required": true, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "gpt-3.5-turbo", - "fileTypes": [], - "file_path": "", - "password": false, - "options": [ - "gpt-4-turbo-preview", - "gpt-3.5-turbo", - "gpt-4-0125-preview", - "gpt-4-1106-preview", - "gpt-4-vision-preview", - "gpt-3.5-turbo-0125", - "gpt-3.5-turbo-1106" - ], - "name": "model_name", - "display_name": "Model Name", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_api_base": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "openai_api_base", - "display_name": "OpenAI API Base", - "advanced": true, - "dynamic": false, - "info": "The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\n\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_api_key": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": true, - "name": "openai_api_key", - "display_name": "OpenAI API Key", - "advanced": false, - "dynamic": false, - "info": "The OpenAI API Key to use for the OpenAI model.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": "" - }, - "stream": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "stream", - "display_name": "Stream", - "advanced": true, - "dynamic": false, - "info": "Stream the response from the model. Streaming works only in Chat.", - "load_from_db": false, - "title_case": false - }, - "system_message": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "system_message", - "display_name": "System Message", - "advanced": true, - "dynamic": false, - "info": "System message to pass to the model.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "temperature": { - "type": "float", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 0.1, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "temperature", - "display_name": "Temperature", - "advanced": false, - "dynamic": false, - "info": "", - "rangeSpec": { - "step_type": "float", - "min": -1, - "max": 1, - "step": 0.1 - }, - "load_from_db": false, - "title_case": false - }, - "_type": "CustomComponent" - }, - "description": "Generates text using OpenAI LLMs.", - "icon": "OpenAI", - "base_classes": [ - "object", - "Text", - "str" - ], - "display_name": "OpenAI", - "documentation": "", - "custom_fields": { - "input_value": null, - "openai_api_key": null, - "temperature": null, - "model_name": null, - "max_tokens": null, - "model_kwargs": null, - "openai_api_base": null, - "stream": null, - "system_message": null - }, - "output_types": [ - "Text" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [ - "max_tokens", - "model_kwargs", - "model_name", - "openai_api_base", - "openai_api_key", - "temperature", - "input_value", - "system_message", - "stream" - ], - "beta": false - }, - "id": "OpenAIModel-EjXlN" - }, - "selected": true, - "width": 384, - "height": 563, - "positionAbsolute": { - "x": 3410.117202077183, - "y": 431.2038048137648 - }, - "dragging": false + "description": "Display a text output in the Playground.", + "icon": "type", + "base_classes": ["object", "Text", "str"], + "display_name": "Extracted Chunks", + "documentation": "", + "custom_fields": { + "input_value": null, + "record_template": null }, - { - "id": "Prompt-xeI6K", - "type": "genericNode", - "position": { - "x": 2969.0261961391298, - "y": 442.1613649809069 + "output_types": ["Text"], + "field_formatters": {}, + "frozen": false, + "field_order": [], + "beta": false + }, + "id": "TextOutput-BDknO" + }, + "selected": false, + "width": 384, + "height": 289, + "positionAbsolute": { + "x": 2322.600672827879, + "y": 604.9467307442569 + }, + "dragging": false + }, + { + "id": "OpenAIEmbeddings-ZlOk1", + "type": "genericNode", + "position": { + "x": 1183.667250865064, + "y": 687.3171828430261 + }, + "data": { + "type": "OpenAIEmbeddings", + "node": { + "template": { + "allowed_special": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": [], + "fileTypes": [], + "file_path": "", + "password": false, + "name": "allowed_special", + "display_name": "Allowed Special", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "chunk_size": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 1000, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "chunk_size", + "display_name": "Chunk Size", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "client": { + "type": "Any", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "client", + "display_name": "Client", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from typing import Any, Dict, List, Optional\n\nfrom langchain_openai.embeddings.base import OpenAIEmbeddings\n\nfrom langflow.field_typing import Embeddings, NestedDict\nfrom langflow.interface.custom.custom_component import CustomComponent\n\n\nclass OpenAIEmbeddingsComponent(CustomComponent):\n display_name = \"OpenAI Embeddings\"\n description = \"Generate embeddings using OpenAI models.\"\n\n def build_config(self):\n return {\n \"allowed_special\": {\n \"display_name\": \"Allowed Special\",\n \"advanced\": True,\n \"field_type\": \"str\",\n \"is_list\": True,\n },\n \"default_headers\": {\n \"display_name\": \"Default Headers\",\n \"advanced\": True,\n \"field_type\": \"dict\",\n },\n \"default_query\": {\n \"display_name\": \"Default Query\",\n \"advanced\": True,\n \"field_type\": \"NestedDict\",\n },\n \"disallowed_special\": {\n \"display_name\": \"Disallowed Special\",\n \"advanced\": True,\n \"field_type\": \"str\",\n \"is_list\": True,\n },\n \"chunk_size\": {\"display_name\": \"Chunk Size\", \"advanced\": True},\n \"client\": {\"display_name\": \"Client\", \"advanced\": True},\n \"deployment\": {\"display_name\": \"Deployment\", \"advanced\": True},\n \"embedding_ctx_length\": {\n \"display_name\": \"Embedding Context Length\",\n \"advanced\": True,\n },\n \"max_retries\": {\"display_name\": \"Max Retries\", \"advanced\": True},\n \"model\": {\n \"display_name\": \"Model\",\n \"advanced\": False,\n \"options\": [\n \"text-embedding-3-small\",\n \"text-embedding-3-large\",\n \"text-embedding-ada-002\",\n ],\n },\n \"model_kwargs\": {\"display_name\": \"Model Kwargs\", \"advanced\": True},\n \"openai_api_base\": {\n \"display_name\": \"OpenAI API Base\",\n \"password\": True,\n \"advanced\": True,\n },\n \"openai_api_key\": {\"display_name\": \"OpenAI API Key\", \"password\": True},\n \"openai_api_type\": {\n \"display_name\": \"OpenAI API Type\",\n \"advanced\": True,\n \"password\": True,\n },\n \"openai_api_version\": {\n \"display_name\": \"OpenAI API Version\",\n \"advanced\": True,\n },\n \"openai_organization\": {\n \"display_name\": \"OpenAI Organization\",\n \"advanced\": True,\n },\n \"openai_proxy\": {\"display_name\": \"OpenAI Proxy\", \"advanced\": True},\n \"request_timeout\": {\"display_name\": \"Request Timeout\", \"advanced\": True},\n \"show_progress_bar\": {\n \"display_name\": \"Show Progress Bar\",\n \"advanced\": True,\n },\n \"skip_empty\": {\"display_name\": \"Skip Empty\", \"advanced\": True},\n \"tiktoken_model_name\": {\n \"display_name\": \"TikToken Model Name\",\n \"advanced\": True,\n },\n \"tiktoken_enable\": {\"display_name\": \"TikToken Enable\", \"advanced\": True},\n }\n\n def build(\n self,\n openai_api_key: str,\n default_headers: Optional[Dict[str, str]] = None,\n default_query: Optional[NestedDict] = {},\n allowed_special: List[str] = [],\n disallowed_special: List[str] = [\"all\"],\n chunk_size: int = 1000,\n client: Optional[Any] = None,\n deployment: str = \"text-embedding-ada-002\",\n embedding_ctx_length: int = 8191,\n max_retries: int = 6,\n model: str = \"text-embedding-ada-002\",\n model_kwargs: NestedDict = {},\n openai_api_base: Optional[str] = None,\n openai_api_type: Optional[str] = None,\n openai_api_version: Optional[str] = None,\n openai_organization: Optional[str] = None,\n openai_proxy: Optional[str] = None,\n request_timeout: Optional[float] = None,\n show_progress_bar: bool = False,\n skip_empty: bool = False,\n tiktoken_enable: bool = True,\n tiktoken_model_name: Optional[str] = None,\n ) -> Embeddings:\n # This is to avoid errors with Vector Stores (e.g Chroma)\n if disallowed_special == [\"all\"]:\n disallowed_special = \"all\" # type: ignore\n\n return OpenAIEmbeddings(\n tiktoken_enabled=tiktoken_enable,\n default_headers=default_headers,\n default_query=default_query,\n allowed_special=set(allowed_special),\n disallowed_special=\"all\",\n chunk_size=chunk_size,\n client=client,\n deployment=deployment,\n embedding_ctx_length=embedding_ctx_length,\n max_retries=max_retries,\n model=model,\n model_kwargs=model_kwargs,\n base_url=openai_api_base,\n api_key=openai_api_key,\n openai_api_type=openai_api_type,\n api_version=openai_api_version,\n organization=openai_organization,\n openai_proxy=openai_proxy,\n timeout=request_timeout,\n show_progress_bar=show_progress_bar,\n skip_empty=skip_empty,\n tiktoken_model_name=tiktoken_model_name,\n )\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "default_headers": { + "type": "dict", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "default_headers", + "display_name": "Default Headers", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "default_query": { + "type": "NestedDict", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": {}, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "default_query", + "display_name": "Default Query", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "deployment": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": "text-embedding-ada-002", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "deployment", + "display_name": "Deployment", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "disallowed_special": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": ["all"], + "fileTypes": [], + "file_path": "", + "password": false, + "name": "disallowed_special", + "display_name": "Disallowed Special", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "embedding_ctx_length": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 8191, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "embedding_ctx_length", + "display_name": "Embedding Context Length", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "max_retries": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 6, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "max_retries", + "display_name": "Max Retries", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "model": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "value": "text-embedding-ada-002", + "fileTypes": [], + "file_path": "", + "password": false, + "options": [ + "text-embedding-3-small", + "text-embedding-3-large", + "text-embedding-ada-002" + ], + "name": "model", + "display_name": "Model", + "advanced": false, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "model_kwargs": { + "type": "NestedDict", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": {}, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "model_kwargs", + "display_name": "Model Kwargs", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "openai_api_base": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": true, + "name": "openai_api_base", + "display_name": "OpenAI API Base", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_api_key": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": true, + "name": "openai_api_key", + "display_name": "OpenAI API Key", + "advanced": false, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"], + "value": "" + }, + "openai_api_type": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": true, + "name": "openai_api_type", + "display_name": "OpenAI API Type", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_api_version": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "openai_api_version", + "display_name": "OpenAI API Version", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_organization": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "openai_organization", + "display_name": "OpenAI Organization", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_proxy": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "openai_proxy", + "display_name": "OpenAI Proxy", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "request_timeout": { + "type": "float", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "request_timeout", + "display_name": "Request Timeout", + "advanced": true, + "dynamic": false, + "info": "", + "rangeSpec": { + "step_type": "float", + "min": -1, + "max": 1, + "step": 0.1 }, - "data": { - "type": "Prompt", - "node": { - "template": { - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from langchain_core.prompts import PromptTemplate\n\nfrom langflow.field_typing import Prompt, TemplateField, Text\nfrom langflow.interface.custom.custom_component import CustomComponent\n\n\nclass PromptComponent(CustomComponent):\n display_name: str = \"Prompt\"\n description: str = \"Create a prompt template with dynamic variables.\"\n icon = \"prompts\"\n\n def build_config(self):\n return {\n \"template\": TemplateField(display_name=\"Template\"),\n \"code\": TemplateField(advanced=True),\n }\n\n def build(\n self,\n template: Prompt,\n **kwargs,\n ) -> Text:\n from langflow.base.prompts.utils import dict_values_to_string\n\n prompt_template = PromptTemplate.from_template(Text(template))\n kwargs = dict_values_to_string(kwargs)\n kwargs = {k: \"\\n\".join(v) if isinstance(v, list) else v for k, v in kwargs.items()}\n try:\n formated_prompt = prompt_template.format(**kwargs)\n except Exception as exc:\n raise ValueError(f\"Error formatting prompt: {exc}\") from exc\n self.status = f'Prompt:\\n\"{formated_prompt}\"'\n return formated_prompt\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "template": { - "type": "prompt", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": "{context}\n\n---\n\nGiven the context above, answer the question as best as possible.\n\nQuestion: {question}\n\nAnswer: ", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "template", - "display_name": "Template", - "advanced": false, - "input_types": [ - "Text" - ], - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "_type": "CustomComponent", - "context": { - "field_type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "context", - "display_name": "context", - "advanced": false, - "input_types": [ - "Document", - "BaseOutputParser", - "Record", - "Text" - ], - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "type": "str" - }, - "question": { - "field_type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "question", - "display_name": "question", - "advanced": false, - "input_types": [ - "Document", - "BaseOutputParser", - "Record", - "Text" - ], - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "type": "str" - } - }, - "description": "Create a prompt template with dynamic variables.", - "icon": "prompts", - "is_input": null, - "is_output": null, - "is_composition": null, - "base_classes": [ - "object", - "Text", - "str" - ], - "name": "", - "display_name": "Prompt", - "documentation": "", - "custom_fields": { - "template": [ - "context", - "question" - ] - }, - "output_types": [ - "Text" - ], - "full_path": null, - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false, - "error": null - }, - "id": "Prompt-xeI6K", - "description": "Create a prompt template with dynamic variables.", - "display_name": "Prompt" - }, - "selected": false, - "width": 384, - "height": 477, - "positionAbsolute": { - "x": 2969.0261961391298, - "y": 442.1613649809069 - }, - "dragging": false + "load_from_db": false, + "title_case": false + }, + "show_progress_bar": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "show_progress_bar", + "display_name": "Show Progress Bar", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "skip_empty": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "skip_empty", + "display_name": "Skip Empty", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "tiktoken_enable": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": true, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "tiktoken_enable", + "display_name": "TikToken Enable", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "tiktoken_model_name": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "tiktoken_model_name", + "display_name": "TikToken Model Name", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "_type": "CustomComponent" }, - { - "id": "ChatOutput-Q39I8", - "type": "genericNode", - "position": { - "x": 3887.2073667611485, - "y": 588.4801225794856 - }, - "data": { - "type": "ChatOutput", - "node": { - "template": { - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import Optional, Union\n\nfrom langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n def build(\n self,\n sender: Optional[str] = \"Machine\",\n sender_name: Optional[str] = \"AI\",\n input_value: Optional[str] = None,\n session_id: Optional[str] = None,\n return_record: Optional[bool] = False,\n record_template: Optional[str] = \"{text}\",\n ) -> Union[Text, Record]:\n return super().build(\n sender=sender,\n sender_name=sender_name,\n input_value=input_value,\n session_id=session_id,\n return_record=return_record,\n record_template=record_template,\n )\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "input_value": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "input_value", - "display_name": "Message", - "advanced": false, - "input_types": [ - "Text" - ], - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "record_template": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "{text}", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "record_template", - "display_name": "Record Template", - "advanced": true, - "dynamic": false, - "info": "In case of Message being a Record, this template will be used to convert it to text.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "return_record": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "return_record", - "display_name": "Return Record", - "advanced": true, - "dynamic": false, - "info": "Return the message as a record containing the sender, sender_name, and session_id.", - "load_from_db": false, - "title_case": false - }, - "sender": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "Machine", - "fileTypes": [], - "file_path": "", - "password": false, - "options": [ - "Machine", - "User" - ], - "name": "sender", - "display_name": "Sender Type", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "sender_name": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": "AI", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "sender_name", - "display_name": "Sender Name", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "session_id": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "session_id", - "display_name": "Session ID", - "advanced": true, - "dynamic": false, - "info": "If provided, the message will be stored in the memory.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "_type": "CustomComponent" - }, - "description": "Display a chat message in the Playground.", - "icon": "ChatOutput", - "base_classes": [ - "object", - "Text", - "Record", - "str" - ], - "display_name": "Chat Output", - "documentation": "", - "custom_fields": { - "sender": null, - "sender_name": null, - "input_value": null, - "session_id": null, - "return_record": null, - "record_template": null - }, - "output_types": [ - "Text", - "Record" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false - }, - "id": "ChatOutput-Q39I8" - }, - "selected": false, - "width": 384, - "height": 383, - "positionAbsolute": { - "x": 3887.2073667611485, - "y": 588.4801225794856 - }, - "dragging": false + "description": "Generate embeddings using OpenAI models.", + "base_classes": ["Embeddings"], + "display_name": "OpenAI Embeddings", + "documentation": "", + "custom_fields": { + "openai_api_key": null, + "default_headers": null, + "default_query": null, + "allowed_special": null, + "disallowed_special": null, + "chunk_size": null, + "client": null, + "deployment": null, + "embedding_ctx_length": null, + "max_retries": null, + "model": null, + "model_kwargs": null, + "openai_api_base": null, + "openai_api_type": null, + "openai_api_version": null, + "openai_organization": null, + "openai_proxy": null, + "request_timeout": null, + "show_progress_bar": null, + "skip_empty": null, + "tiktoken_enable": null, + "tiktoken_model_name": null }, - { - "id": "File-t0a6a", - "type": "genericNode", - "position": { - "x": 2257.233450682836, - "y": 1747.5389618367233 + "output_types": ["Embeddings"], + "field_formatters": {}, + "frozen": false, + "field_order": [], + "beta": false + }, + "id": "OpenAIEmbeddings-ZlOk1" + }, + "selected": false, + "width": 384, + "height": 383, + "dragging": false + }, + { + "id": "OpenAIModel-EjXlN", + "type": "genericNode", + "position": { + "x": 3410.117202077183, + "y": 431.2038048137648 + }, + "data": { + "type": "OpenAIModel", + "node": { + "template": { + "input_value": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "input_value", + "display_name": "Input", + "advanced": false, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from typing import Optional\n\nfrom langchain_openai import ChatOpenAI\n\nfrom langflow.base.constants import STREAM_INFO_TEXT\nfrom langflow.base.models.model import LCModelComponent\nfrom langflow.field_typing import NestedDict, Text\n\n\nclass OpenAIModelComponent(LCModelComponent):\n display_name = \"OpenAI\"\n description = \"Generates text using OpenAI LLMs.\"\n icon = \"OpenAI\"\n\n field_order = [\n \"max_tokens\",\n \"model_kwargs\",\n \"model_name\",\n \"openai_api_base\",\n \"openai_api_key\",\n \"temperature\",\n \"input_value\",\n \"system_message\",\n \"stream\",\n ]\n\n def build_config(self):\n return {\n \"input_value\": {\"display_name\": \"Input\"},\n \"max_tokens\": {\n \"display_name\": \"Max Tokens\",\n \"advanced\": True,\n },\n \"model_kwargs\": {\n \"display_name\": \"Model Kwargs\",\n \"advanced\": True,\n },\n \"model_name\": {\n \"display_name\": \"Model Name\",\n \"advanced\": False,\n \"options\": [\n \"gpt-4-turbo-preview\",\n \"gpt-3.5-turbo\",\n \"gpt-4-0125-preview\",\n \"gpt-4-1106-preview\",\n \"gpt-4-vision-preview\",\n \"gpt-3.5-turbo-0125\",\n \"gpt-3.5-turbo-1106\",\n ],\n \"value\": \"gpt-4-turbo-preview\",\n },\n \"openai_api_base\": {\n \"display_name\": \"OpenAI API Base\",\n \"advanced\": True,\n \"info\": (\n \"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\n\"\n \"You can change this to use other APIs like JinaChat, LocalAI and Prem.\"\n ),\n },\n \"openai_api_key\": {\n \"display_name\": \"OpenAI API Key\",\n \"info\": \"The OpenAI API Key to use for the OpenAI model.\",\n \"advanced\": False,\n \"password\": True,\n },\n \"temperature\": {\n \"display_name\": \"Temperature\",\n \"advanced\": False,\n \"value\": 0.1,\n },\n \"stream\": {\n \"display_name\": \"Stream\",\n \"info\": STREAM_INFO_TEXT,\n \"advanced\": True,\n },\n \"system_message\": {\n \"display_name\": \"System Message\",\n \"info\": \"System message to pass to the model.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n input_value: Text,\n openai_api_key: str,\n temperature: float,\n model_name: str,\n max_tokens: Optional[int] = 256,\n model_kwargs: NestedDict = {},\n openai_api_base: Optional[str] = None,\n stream: bool = False,\n system_message: Optional[str] = None,\n ) -> Text:\n if not openai_api_base:\n openai_api_base = \"https://api.openai.com/v1\"\n output = ChatOpenAI(\n max_tokens=max_tokens,\n model_kwargs=model_kwargs,\n model=model_name,\n base_url=openai_api_base,\n api_key=openai_api_key,\n temperature=temperature,\n )\n\n return self.get_chat_result(output, stream, input_value, system_message)\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "max_tokens": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 256, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "max_tokens", + "display_name": "Max Tokens", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "model_kwargs": { + "type": "NestedDict", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": {}, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "model_kwargs", + "display_name": "Model Kwargs", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "model_name": { + "type": "str", + "required": true, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "value": "gpt-3.5-turbo", + "fileTypes": [], + "file_path": "", + "password": false, + "options": [ + "gpt-4-turbo-preview", + "gpt-3.5-turbo", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4-vision-preview", + "gpt-3.5-turbo-0125", + "gpt-3.5-turbo-1106" + ], + "name": "model_name", + "display_name": "Model Name", + "advanced": false, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_api_base": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "openai_api_base", + "display_name": "OpenAI API Base", + "advanced": true, + "dynamic": false, + "info": "The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\n\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_api_key": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": true, + "name": "openai_api_key", + "display_name": "OpenAI API Key", + "advanced": false, + "dynamic": false, + "info": "The OpenAI API Key to use for the OpenAI model.", + "load_from_db": true, + "title_case": false, + "input_types": ["Text"], + "value": "OPENAI_API_KEY" + }, + "stream": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "stream", + "display_name": "Stream", + "advanced": true, + "dynamic": false, + "info": "Stream the response from the model. Streaming works only in Chat.", + "load_from_db": false, + "title_case": false + }, + "system_message": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "system_message", + "display_name": "System Message", + "advanced": true, + "dynamic": false, + "info": "System message to pass to the model.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "temperature": { + "type": "float", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 0.1, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "temperature", + "display_name": "Temperature", + "advanced": false, + "dynamic": false, + "info": "", + "rangeSpec": { + "step_type": "float", + "min": -1, + "max": 1, + "step": 0.1 }, - "data": { - "type": "File", - "node": { - "template": { - "path": { - "type": "file", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [ - ".txt", - ".md", - ".mdx", - ".csv", - ".json", - ".yaml", - ".yml", - ".xml", - ".html", - ".htm", - ".pdf", - ".docx" - ], - "file_path": "51e2b78a-199b-4054-9f32-e288eef6924c/Langflow conversation.pdf", - "password": false, - "name": "path", - "display_name": "Path", - "advanced": false, - "dynamic": false, - "info": "Supported file types: txt, md, mdx, csv, json, yaml, yml, xml, html, htm, pdf, docx", - "load_from_db": false, - "title_case": false, - "value": "" - }, - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from pathlib import Path\nfrom typing import Any, Dict\n\nfrom langflow.base.data.utils import TEXT_FILE_TYPES, parse_text_file_to_record\nfrom langflow.interface.custom.custom_component import CustomComponent\nfrom langflow.schema import Record\n\n\nclass FileComponent(CustomComponent):\n display_name = \"File\"\n description = \"A generic file loader.\"\n icon = \"file-text\"\n\n def build_config(self) -> Dict[str, Any]:\n return {\n \"path\": {\n \"display_name\": \"Path\",\n \"field_type\": \"file\",\n \"file_types\": TEXT_FILE_TYPES,\n \"info\": f\"Supported file types: {', '.join(TEXT_FILE_TYPES)}\",\n },\n \"silent_errors\": {\n \"display_name\": \"Silent Errors\",\n \"advanced\": True,\n \"info\": \"If true, errors will not raise an exception.\",\n },\n }\n\n def load_file(self, path: str, silent_errors: bool = False) -> Record:\n resolved_path = self.resolve_path(path)\n path_obj = Path(resolved_path)\n extension = path_obj.suffix[1:].lower()\n if extension == \"doc\":\n raise ValueError(\"doc files are not supported. Please save as .docx\")\n if extension not in TEXT_FILE_TYPES:\n raise ValueError(f\"Unsupported file type: {extension}\")\n record = parse_text_file_to_record(resolved_path, silent_errors)\n self.status = record if record else \"No data\"\n return record or Record()\n\n def build(\n self,\n path: str,\n silent_errors: bool = False,\n ) -> Record:\n record = self.load_file(path, silent_errors)\n self.status = record\n return record\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "silent_errors": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "silent_errors", - "display_name": "Silent Errors", - "advanced": true, - "dynamic": false, - "info": "If true, errors will not raise an exception.", - "load_from_db": false, - "title_case": false - }, - "_type": "CustomComponent" - }, - "description": "A generic file loader.", - "icon": "file-text", - "base_classes": [ - "Record" - ], - "display_name": "File", - "documentation": "", - "custom_fields": { - "path": null, - "silent_errors": null - }, - "output_types": [ - "Record" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false - }, - "id": "File-t0a6a" - }, - "selected": false, - "width": 384, - "height": 281, - "positionAbsolute": { - "x": 2257.233450682836, - "y": 1747.5389618367233 - }, - "dragging": false + "load_from_db": false, + "title_case": false + }, + "_type": "CustomComponent" }, - { - "id": "RecursiveCharacterTextSplitter-tR9QM", - "type": "genericNode", - "position": { - "x": 2791.013514133929, - "y": 1462.9588953494142 - }, - "data": { - "type": "RecursiveCharacterTextSplitter", - "node": { - "template": { - "inputs": { - "type": "Document", - "required": true, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "inputs", - "display_name": "Input", - "advanced": false, - "input_types": [ - "Document", - "Record" - ], - "dynamic": false, - "info": "The texts to split.", - "load_from_db": false, - "title_case": false - }, - "chunk_overlap": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 200, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "chunk_overlap", - "display_name": "Chunk Overlap", - "advanced": false, - "dynamic": false, - "info": "The amount of overlap between chunks.", - "load_from_db": false, - "title_case": false - }, - "chunk_size": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 1000, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "chunk_size", - "display_name": "Chunk Size", - "advanced": false, - "dynamic": false, - "info": "The maximum length of each chunk.", - "load_from_db": false, - "title_case": false - }, - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import Optional\n\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\nfrom langchain_core.documents import Document\n\nfrom langflow.interface.custom.custom_component import CustomComponent\nfrom langflow.schema import Record\nfrom langflow.utils.util import build_loader_repr_from_records, unescape_string\n\n\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\n display_name: str = \"Recursive Character Text Splitter\"\n description: str = \"Split text into chunks of a specified length.\"\n documentation: str = \"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\"\n\n def build_config(self):\n return {\n \"inputs\": {\n \"display_name\": \"Input\",\n \"info\": \"The texts to split.\",\n \"input_types\": [\"Document\", \"Record\"],\n },\n \"separators\": {\n \"display_name\": \"Separators\",\n \"info\": 'The characters to split on.\\nIf left empty defaults to [\"\\\\n\\\\n\", \"\\\\n\", \" \", \"\"].',\n \"is_list\": True,\n },\n \"chunk_size\": {\n \"display_name\": \"Chunk Size\",\n \"info\": \"The maximum length of each chunk.\",\n \"field_type\": \"int\",\n \"value\": 1000,\n },\n \"chunk_overlap\": {\n \"display_name\": \"Chunk Overlap\",\n \"info\": \"The amount of overlap between chunks.\",\n \"field_type\": \"int\",\n \"value\": 200,\n },\n \"code\": {\"show\": False},\n }\n\n def build(\n self,\n inputs: list[Document],\n separators: Optional[list[str]] = None,\n chunk_size: Optional[int] = 1000,\n chunk_overlap: Optional[int] = 200,\n ) -> list[Record]:\n \"\"\"\n Split text into chunks of a specified length.\n\n Args:\n separators (list[str]): The characters to split on.\n chunk_size (int): The maximum length of each chunk.\n chunk_overlap (int): The amount of overlap between chunks.\n length_function (function): The function to use to calculate the length of the text.\n\n Returns:\n list[str]: The chunks of text.\n \"\"\"\n\n if separators == \"\":\n separators = None\n elif separators:\n # check if the separators list has escaped characters\n # if there are escaped characters, unescape them\n separators = [unescape_string(x) for x in separators]\n\n # Make sure chunk_size and chunk_overlap are ints\n if isinstance(chunk_size, str):\n chunk_size = int(chunk_size)\n if isinstance(chunk_overlap, str):\n chunk_overlap = int(chunk_overlap)\n splitter = RecursiveCharacterTextSplitter(\n separators=separators,\n chunk_size=chunk_size,\n chunk_overlap=chunk_overlap,\n )\n documents = []\n for _input in inputs:\n if isinstance(_input, Record):\n documents.append(_input.to_lc_document())\n else:\n documents.append(_input)\n docs = splitter.split_documents(documents)\n records = self.to_records(docs)\n self.repr_value = build_loader_repr_from_records(records)\n return records\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "separators": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "separators", - "display_name": "Separators", - "advanced": false, - "dynamic": false, - "info": "The characters to split on.\nIf left empty defaults to [\"\\n\\n\", \"\\n\", \" \", \"\"].", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": [ - "" - ] - }, - "_type": "CustomComponent" - }, - "description": "Split text into chunks of a specified length.", - "base_classes": [ - "Record" - ], - "display_name": "Recursive Character Text Splitter", - "documentation": "https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter", - "custom_fields": { - "inputs": null, - "separators": null, - "chunk_size": null, - "chunk_overlap": null - }, - "output_types": [ - "Record" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false - }, - "id": "RecursiveCharacterTextSplitter-tR9QM" - }, - "selected": false, - "width": 384, - "height": 501, - "positionAbsolute": { - "x": 2791.013514133929, - "y": 1462.9588953494142 - }, - "dragging": false + "description": "Generates text using OpenAI LLMs.", + "icon": "OpenAI", + "base_classes": ["object", "Text", "str"], + "display_name": "OpenAI", + "documentation": "", + "custom_fields": { + "input_value": null, + "openai_api_key": null, + "temperature": null, + "model_name": null, + "max_tokens": null, + "model_kwargs": null, + "openai_api_base": null, + "stream": null, + "system_message": null }, - { - "id": "AstraDBSearch-41nRz", - "type": "genericNode", - "position": { - "x": 1723.976434815103, - "y": 277.03317407245913 - }, - "data": { - "type": "AstraDBSearch", - "node": { - "template": { - "embedding": { - "type": "Embeddings", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "embedding", - "display_name": "Embedding", - "advanced": false, - "dynamic": false, - "info": "Embedding to use", - "load_from_db": false, - "title_case": false - }, - "input_value": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "input_value", - "display_name": "Input Value", - "advanced": false, - "dynamic": false, - "info": "Input value to search", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "api_endpoint": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "api_endpoint", - "display_name": "API Endpoint", - "advanced": false, - "dynamic": false, - "info": "API endpoint URL for the Astra DB service.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": "" - }, - "batch_size": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "batch_size", - "display_name": "Batch Size", - "advanced": true, - "dynamic": false, - "info": "Optional number of records to process in a single batch.", - "load_from_db": false, - "title_case": false - }, - "bulk_delete_concurrency": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "bulk_delete_concurrency", - "display_name": "Bulk Delete Concurrency", - "advanced": true, - "dynamic": false, - "info": "Optional concurrency level for bulk delete operations.", - "load_from_db": false, - "title_case": false - }, - "bulk_insert_batch_concurrency": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "bulk_insert_batch_concurrency", - "display_name": "Bulk Insert Batch Concurrency", - "advanced": true, - "dynamic": false, - "info": "Optional concurrency level for bulk insert operations.", - "load_from_db": false, - "title_case": false - }, - "bulk_insert_overwrite_concurrency": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "bulk_insert_overwrite_concurrency", - "display_name": "Bulk Insert Overwrite Concurrency", - "advanced": true, - "dynamic": false, - "info": "Optional concurrency level for bulk insert operations that overwrite existing records.", - "load_from_db": false, - "title_case": false - }, - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import List, Optional\n\nfrom langflow.components.vectorstores.AstraDB import AstraDBVectorStoreComponent\nfrom langflow.components.vectorstores.base.model import LCVectorStoreComponent\nfrom langflow.field_typing import Embeddings, Text\nfrom langflow.schema import Record\n\n\nclass AstraDBSearchComponent(LCVectorStoreComponent):\n display_name = \"Astra DB Search\"\n description = \"Searches an existing Astra DB Vector Store.\"\n icon = \"AstraDB\"\n field_order = [\"token\", \"api_endpoint\", \"collection_name\", \"input_value\", \"embedding\"]\n\n def build_config(self):\n return {\n \"search_type\": {\n \"display_name\": \"Search Type\",\n \"options\": [\"Similarity\", \"MMR\"],\n },\n \"input_value\": {\n \"display_name\": \"Input Value\",\n \"info\": \"Input value to search\",\n },\n \"embedding\": {\"display_name\": \"Embedding\", \"info\": \"Embedding to use\"},\n \"collection_name\": {\n \"display_name\": \"Collection Name\",\n \"info\": \"The name of the collection within Astra DB where the vectors will be stored.\",\n },\n \"token\": {\n \"display_name\": \"Token\",\n \"info\": \"Authentication token for accessing Astra DB.\",\n \"password\": True,\n },\n \"api_endpoint\": {\n \"display_name\": \"API Endpoint\",\n \"info\": \"API endpoint URL for the Astra DB service.\",\n },\n \"namespace\": {\n \"display_name\": \"Namespace\",\n \"info\": \"Optional namespace within Astra DB to use for the collection.\",\n \"advanced\": True,\n },\n \"metric\": {\n \"display_name\": \"Metric\",\n \"info\": \"Optional distance metric for vector comparisons in the vector store.\",\n \"advanced\": True,\n },\n \"batch_size\": {\n \"display_name\": \"Batch Size\",\n \"info\": \"Optional number of records to process in a single batch.\",\n \"advanced\": True,\n },\n \"bulk_insert_batch_concurrency\": {\n \"display_name\": \"Bulk Insert Batch Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations.\",\n \"advanced\": True,\n },\n \"bulk_insert_overwrite_concurrency\": {\n \"display_name\": \"Bulk Insert Overwrite Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations that overwrite existing records.\",\n \"advanced\": True,\n },\n \"bulk_delete_concurrency\": {\n \"display_name\": \"Bulk Delete Concurrency\",\n \"info\": \"Optional concurrency level for bulk delete operations.\",\n \"advanced\": True,\n },\n \"setup_mode\": {\n \"display_name\": \"Setup Mode\",\n \"info\": \"Configuration mode for setting up the vector store, with options like “Sync”, “Async”, or “Off”.\",\n \"options\": [\"Sync\", \"Async\", \"Off\"],\n \"advanced\": True,\n },\n \"pre_delete_collection\": {\n \"display_name\": \"Pre Delete Collection\",\n \"info\": \"Boolean flag to determine whether to delete the collection before creating a new one.\",\n \"advanced\": True,\n },\n \"metadata_indexing_include\": {\n \"display_name\": \"Metadata Indexing Include\",\n \"info\": \"Optional list of metadata fields to include in the indexing.\",\n \"advanced\": True,\n },\n \"metadata_indexing_exclude\": {\n \"display_name\": \"Metadata Indexing Exclude\",\n \"info\": \"Optional list of metadata fields to exclude from the indexing.\",\n \"advanced\": True,\n },\n \"collection_indexing_policy\": {\n \"display_name\": \"Collection Indexing Policy\",\n \"info\": \"Optional dictionary defining the indexing policy for the collection.\",\n \"advanced\": True,\n },\n \"number_of_results\": {\n \"display_name\": \"Number of Results\",\n \"info\": \"Number of results to return.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n embedding: Embeddings,\n collection_name: str,\n input_value: Text,\n token: str,\n api_endpoint: str,\n search_type: str = \"Similarity\",\n number_of_results: int = 4,\n namespace: Optional[str] = None,\n metric: Optional[str] = None,\n batch_size: Optional[int] = None,\n bulk_insert_batch_concurrency: Optional[int] = None,\n bulk_insert_overwrite_concurrency: Optional[int] = None,\n bulk_delete_concurrency: Optional[int] = None,\n setup_mode: str = \"Sync\",\n pre_delete_collection: bool = False,\n metadata_indexing_include: Optional[List[str]] = None,\n metadata_indexing_exclude: Optional[List[str]] = None,\n collection_indexing_policy: Optional[dict] = None,\n ) -> List[Record]:\n vector_store = AstraDBVectorStoreComponent().build(\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n try:\n return self.search_with_vector_store(input_value, search_type, vector_store, k=number_of_results)\n except KeyError as e:\n if \"content\" in str(e):\n raise ValueError(\n \"You should ingest data through Langflow (or LangChain) to query it in Langflow. Your collection does not contain a field name 'content'.\"\n )\n else:\n raise e\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "collection_indexing_policy": { - "type": "dict", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "collection_indexing_policy", - "display_name": "Collection Indexing Policy", - "advanced": true, - "dynamic": false, - "info": "Optional dictionary defining the indexing policy for the collection.", - "load_from_db": false, - "title_case": false - }, - "collection_name": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "collection_name", - "display_name": "Collection Name", - "advanced": false, - "dynamic": false, - "info": "The name of the collection within Astra DB where the vectors will be stored.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": "langflow" - }, - "metadata_indexing_exclude": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "metadata_indexing_exclude", - "display_name": "Metadata Indexing Exclude", - "advanced": true, - "dynamic": false, - "info": "Optional list of metadata fields to exclude from the indexing.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "metadata_indexing_include": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "metadata_indexing_include", - "display_name": "Metadata Indexing Include", - "advanced": true, - "dynamic": false, - "info": "Optional list of metadata fields to include in the indexing.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "metric": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "metric", - "display_name": "Metric", - "advanced": true, - "dynamic": false, - "info": "Optional distance metric for vector comparisons in the vector store.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "namespace": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "namespace", - "display_name": "Namespace", - "advanced": true, - "dynamic": false, - "info": "Optional namespace within Astra DB to use for the collection.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "number_of_results": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 4, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "number_of_results", - "display_name": "Number of Results", - "advanced": true, - "dynamic": false, - "info": "Number of results to return.", - "load_from_db": false, - "title_case": false - }, - "pre_delete_collection": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "pre_delete_collection", - "display_name": "Pre Delete Collection", - "advanced": true, - "dynamic": false, - "info": "Boolean flag to determine whether to delete the collection before creating a new one.", - "load_from_db": false, - "title_case": false - }, - "search_type": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "Similarity", - "fileTypes": [], - "file_path": "", - "password": false, - "options": [ - "Similarity", - "MMR" - ], - "name": "search_type", - "display_name": "Search Type", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "setup_mode": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "Sync", - "fileTypes": [], - "file_path": "", - "password": false, - "options": [ - "Sync", - "Async", - "Off" - ], - "name": "setup_mode", - "display_name": "Setup Mode", - "advanced": true, - "dynamic": false, - "info": "Configuration mode for setting up the vector store, with options like “Sync”, “Async”, or “Off”.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "token": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": true, - "name": "token", - "display_name": "Token", - "advanced": false, - "dynamic": false, - "info": "Authentication token for accessing Astra DB.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": "" - }, - "_type": "CustomComponent" - }, - "description": "Searches an existing Astra DB Vector Store.", - "icon": "AstraDB", - "base_classes": [ - "Record" - ], - "display_name": "Astra DB Search", - "documentation": "", - "custom_fields": { - "embedding": null, - "collection_name": null, - "input_value": null, - "token": null, - "api_endpoint": null, - "search_type": null, - "number_of_results": null, - "namespace": null, - "metric": null, - "batch_size": null, - "bulk_insert_batch_concurrency": null, - "bulk_insert_overwrite_concurrency": null, - "bulk_delete_concurrency": null, - "setup_mode": null, - "pre_delete_collection": null, - "metadata_indexing_include": null, - "metadata_indexing_exclude": null, - "collection_indexing_policy": null - }, - "output_types": [ - "Record" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [ - "token", - "api_endpoint", - "collection_name", - "input_value", - "embedding" - ], - "beta": false - }, - "id": "AstraDBSearch-41nRz" - }, - "selected": false, - "width": 384, - "height": 713, - "dragging": false, - "positionAbsolute": { - "x": 1723.976434815103, - "y": 277.03317407245913 - } + "output_types": ["Text"], + "field_formatters": {}, + "frozen": false, + "field_order": [ + "max_tokens", + "model_kwargs", + "model_name", + "openai_api_base", + "openai_api_key", + "temperature", + "input_value", + "system_message", + "stream" + ], + "beta": false + }, + "id": "OpenAIModel-EjXlN" + }, + "selected": true, + "width": 384, + "height": 563, + "positionAbsolute": { + "x": 3410.117202077183, + "y": 431.2038048137648 + }, + "dragging": false + }, + { + "id": "Prompt-xeI6K", + "type": "genericNode", + "position": { + "x": 2969.0261961391298, + "y": 442.1613649809069 + }, + "data": { + "type": "Prompt", + "node": { + "template": { + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from langchain_core.prompts import PromptTemplate\n\nfrom langflow.field_typing import Prompt, TemplateField, Text\nfrom langflow.interface.custom.custom_component import CustomComponent\n\n\nclass PromptComponent(CustomComponent):\n display_name: str = \"Prompt\"\n description: str = \"Create a prompt template with dynamic variables.\"\n icon = \"prompts\"\n\n def build_config(self):\n return {\n \"template\": TemplateField(display_name=\"Template\"),\n \"code\": TemplateField(advanced=True),\n }\n\n def build(\n self,\n template: Prompt,\n **kwargs,\n ) -> Text:\n from langflow.base.prompts.utils import dict_values_to_string\n\n prompt_template = PromptTemplate.from_template(Text(template))\n kwargs = dict_values_to_string(kwargs)\n kwargs = {k: \"\\n\".join(v) if isinstance(v, list) else v for k, v in kwargs.items()}\n try:\n formated_prompt = prompt_template.format(**kwargs)\n except Exception as exc:\n raise ValueError(f\"Error formatting prompt: {exc}\") from exc\n self.status = f'Prompt:\\n\"{formated_prompt}\"'\n return formated_prompt\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "template": { + "type": "prompt", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": "{context}\n\n---\n\nGiven the context above, answer the question as best as possible.\n\nQuestion: {question}\n\nAnswer: ", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "template", + "display_name": "Template", + "advanced": false, + "input_types": ["Text"], + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "_type": "CustomComponent", + "context": { + "field_type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "context", + "display_name": "context", + "advanced": false, + "input_types": [ + "Document", + "BaseOutputParser", + "Record", + "Text" + ], + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "type": "str" + }, + "question": { + "field_type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "question", + "display_name": "question", + "advanced": false, + "input_types": [ + "Document", + "BaseOutputParser", + "Record", + "Text" + ], + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "type": "str" + } }, - { - "id": "AstraDB-eUCSS", - "type": "genericNode", - "position": { - "x": 3372.04958055989, - "y": 1611.0742035495277 - }, - "data": { - "type": "AstraDB", - "node": { - "template": { - "embedding": { - "type": "Embeddings", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "embedding", - "display_name": "Embedding", - "advanced": false, - "dynamic": false, - "info": "Embedding to use", - "load_from_db": false, - "title_case": false - }, - "inputs": { - "type": "Record", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "inputs", - "display_name": "Inputs", - "advanced": false, - "dynamic": false, - "info": "Optional list of records to be processed and stored in the vector store.", - "load_from_db": false, - "title_case": false - }, - "api_endpoint": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "api_endpoint", - "display_name": "API Endpoint", - "advanced": false, - "dynamic": false, - "info": "API endpoint URL for the Astra DB service.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": "" - }, - "batch_size": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "batch_size", - "display_name": "Batch Size", - "advanced": true, - "dynamic": false, - "info": "Optional number of records to process in a single batch.", - "load_from_db": false, - "title_case": false - }, - "bulk_delete_concurrency": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "bulk_delete_concurrency", - "display_name": "Bulk Delete Concurrency", - "advanced": true, - "dynamic": false, - "info": "Optional concurrency level for bulk delete operations.", - "load_from_db": false, - "title_case": false - }, - "bulk_insert_batch_concurrency": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "bulk_insert_batch_concurrency", - "display_name": "Bulk Insert Batch Concurrency", - "advanced": true, - "dynamic": false, - "info": "Optional concurrency level for bulk insert operations.", - "load_from_db": false, - "title_case": false - }, - "bulk_insert_overwrite_concurrency": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "bulk_insert_overwrite_concurrency", - "display_name": "Bulk Insert Overwrite Concurrency", - "advanced": true, - "dynamic": false, - "info": "Optional concurrency level for bulk insert operations that overwrite existing records.", - "load_from_db": false, - "title_case": false - }, - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import List, Optional\n\nfrom langchain_astradb import AstraDBVectorStore\nfrom langchain_astradb.utils.astradb import SetupMode\n\nfrom langflow.custom import CustomComponent\nfrom langflow.field_typing import Embeddings, VectorStore\nfrom langflow.schema import Record\n\n\nclass AstraDBVectorStoreComponent(CustomComponent):\n display_name = \"Astra DB\"\n description = \"Builds or loads an Astra DB Vector Store.\"\n icon = \"AstraDB\"\n field_order = [\"token\", \"api_endpoint\", \"collection_name\", \"inputs\", \"embedding\"]\n\n def build_config(self):\n return {\n \"inputs\": {\n \"display_name\": \"Inputs\",\n \"info\": \"Optional list of records to be processed and stored in the vector store.\",\n },\n \"embedding\": {\"display_name\": \"Embedding\", \"info\": \"Embedding to use\"},\n \"collection_name\": {\n \"display_name\": \"Collection Name\",\n \"info\": \"The name of the collection within Astra DB where the vectors will be stored.\",\n },\n \"token\": {\n \"display_name\": \"Token\",\n \"info\": \"Authentication token for accessing Astra DB.\",\n \"password\": True,\n },\n \"api_endpoint\": {\n \"display_name\": \"API Endpoint\",\n \"info\": \"API endpoint URL for the Astra DB service.\",\n },\n \"namespace\": {\n \"display_name\": \"Namespace\",\n \"info\": \"Optional namespace within Astra DB to use for the collection.\",\n \"advanced\": True,\n },\n \"metric\": {\n \"display_name\": \"Metric\",\n \"info\": \"Optional distance metric for vector comparisons in the vector store.\",\n \"advanced\": True,\n },\n \"batch_size\": {\n \"display_name\": \"Batch Size\",\n \"info\": \"Optional number of records to process in a single batch.\",\n \"advanced\": True,\n },\n \"bulk_insert_batch_concurrency\": {\n \"display_name\": \"Bulk Insert Batch Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations.\",\n \"advanced\": True,\n },\n \"bulk_insert_overwrite_concurrency\": {\n \"display_name\": \"Bulk Insert Overwrite Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations that overwrite existing records.\",\n \"advanced\": True,\n },\n \"bulk_delete_concurrency\": {\n \"display_name\": \"Bulk Delete Concurrency\",\n \"info\": \"Optional concurrency level for bulk delete operations.\",\n \"advanced\": True,\n },\n \"setup_mode\": {\n \"display_name\": \"Setup Mode\",\n \"info\": \"Configuration mode for setting up the vector store, with options like “Sync”, “Async”, or “Off”.\",\n \"options\": [\"Sync\", \"Async\", \"Off\"],\n \"advanced\": True,\n },\n \"pre_delete_collection\": {\n \"display_name\": \"Pre Delete Collection\",\n \"info\": \"Boolean flag to determine whether to delete the collection before creating a new one.\",\n \"advanced\": True,\n },\n \"metadata_indexing_include\": {\n \"display_name\": \"Metadata Indexing Include\",\n \"info\": \"Optional list of metadata fields to include in the indexing.\",\n \"advanced\": True,\n },\n \"metadata_indexing_exclude\": {\n \"display_name\": \"Metadata Indexing Exclude\",\n \"info\": \"Optional list of metadata fields to exclude from the indexing.\",\n \"advanced\": True,\n },\n \"collection_indexing_policy\": {\n \"display_name\": \"Collection Indexing Policy\",\n \"info\": \"Optional dictionary defining the indexing policy for the collection.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n embedding: Embeddings,\n token: str,\n api_endpoint: str,\n collection_name: str,\n inputs: Optional[List[Record]] = None,\n namespace: Optional[str] = None,\n metric: Optional[str] = None,\n batch_size: Optional[int] = None,\n bulk_insert_batch_concurrency: Optional[int] = None,\n bulk_insert_overwrite_concurrency: Optional[int] = None,\n bulk_delete_concurrency: Optional[int] = None,\n setup_mode: str = \"Async\",\n pre_delete_collection: bool = False,\n metadata_indexing_include: Optional[List[str]] = None,\n metadata_indexing_exclude: Optional[List[str]] = None,\n collection_indexing_policy: Optional[dict] = None,\n ) -> VectorStore:\n try:\n setup_mode_value = SetupMode[setup_mode.upper()]\n except KeyError:\n raise ValueError(f\"Invalid setup mode: {setup_mode}\")\n if inputs:\n documents = [_input.to_lc_document() for _input in inputs]\n\n vector_store = AstraDBVectorStore.from_documents(\n documents=documents,\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode_value,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n else:\n vector_store = AstraDBVectorStore(\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode_value,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n\n return vector_store\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "collection_indexing_policy": { - "type": "dict", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "collection_indexing_policy", - "display_name": "Collection Indexing Policy", - "advanced": true, - "dynamic": false, - "info": "Optional dictionary defining the indexing policy for the collection.", - "load_from_db": false, - "title_case": false - }, - "collection_name": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "collection_name", - "display_name": "Collection Name", - "advanced": false, - "dynamic": false, - "info": "The name of the collection within Astra DB where the vectors will be stored.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": "langflow" - }, - "metadata_indexing_exclude": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "metadata_indexing_exclude", - "display_name": "Metadata Indexing Exclude", - "advanced": true, - "dynamic": false, - "info": "Optional list of metadata fields to exclude from the indexing.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "metadata_indexing_include": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "metadata_indexing_include", - "display_name": "Metadata Indexing Include", - "advanced": true, - "dynamic": false, - "info": "Optional list of metadata fields to include in the indexing.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "metric": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "metric", - "display_name": "Metric", - "advanced": true, - "dynamic": false, - "info": "Optional distance metric for vector comparisons in the vector store.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "namespace": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "namespace", - "display_name": "Namespace", - "advanced": true, - "dynamic": false, - "info": "Optional namespace within Astra DB to use for the collection.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "pre_delete_collection": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "pre_delete_collection", - "display_name": "Pre Delete Collection", - "advanced": true, - "dynamic": false, - "info": "Boolean flag to determine whether to delete the collection before creating a new one.", - "load_from_db": false, - "title_case": false - }, - "setup_mode": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "Async", - "fileTypes": [], - "file_path": "", - "password": false, - "options": [ - "Sync", - "Async", - "Off" - ], - "name": "setup_mode", - "display_name": "Setup Mode", - "advanced": true, - "dynamic": false, - "info": "Configuration mode for setting up the vector store, with options like “Sync”, “Async”, or “Off”.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "token": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": true, - "name": "token", - "display_name": "Token", - "advanced": false, - "dynamic": false, - "info": "Authentication token for accessing Astra DB.", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": "" - }, - "_type": "CustomComponent" - }, - "description": "Builds or loads an Astra DB Vector Store.", - "icon": "AstraDB", - "base_classes": [ - "VectorStore" - ], - "display_name": "Astra DB", - "documentation": "", - "custom_fields": { - "embedding": null, - "token": null, - "api_endpoint": null, - "collection_name": null, - "inputs": null, - "namespace": null, - "metric": null, - "batch_size": null, - "bulk_insert_batch_concurrency": null, - "bulk_insert_overwrite_concurrency": null, - "bulk_delete_concurrency": null, - "setup_mode": null, - "pre_delete_collection": null, - "metadata_indexing_include": null, - "metadata_indexing_exclude": null, - "collection_indexing_policy": null - }, - "output_types": [ - "VectorStore" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [ - "token", - "api_endpoint", - "collection_name", - "inputs", - "embedding" - ], - "beta": false - }, - "id": "AstraDB-eUCSS" - }, - "selected": false, - "width": 384, - "height": 573, - "positionAbsolute": { - "x": 3372.04958055989, - "y": 1611.0742035495277 - }, - "dragging": false + "description": "Create a prompt template with dynamic variables.", + "icon": "prompts", + "is_input": null, + "is_output": null, + "is_composition": null, + "base_classes": ["object", "Text", "str"], + "name": "", + "display_name": "Prompt", + "documentation": "", + "custom_fields": { + "template": ["context", "question"] }, - { - "id": "OpenAIEmbeddings-9TPjc", - "type": "genericNode", - "position": { - "x": 2814.0402191223047, - "y": 1955.9268168273086 - }, - "data": { - "type": "OpenAIEmbeddings", - "node": { - "template": { - "allowed_special": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": [], - "fileTypes": [], - "file_path": "", - "password": false, - "name": "allowed_special", - "display_name": "Allowed Special", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "chunk_size": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 1000, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "chunk_size", - "display_name": "Chunk Size", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "client": { - "type": "Any", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "client", - "display_name": "Client", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import Any, Dict, List, Optional\n\nfrom langchain_openai.embeddings.base import OpenAIEmbeddings\n\nfrom langflow.field_typing import Embeddings, NestedDict\nfrom langflow.interface.custom.custom_component import CustomComponent\n\n\nclass OpenAIEmbeddingsComponent(CustomComponent):\n display_name = \"OpenAI Embeddings\"\n description = \"Generate embeddings using OpenAI models.\"\n\n def build_config(self):\n return {\n \"allowed_special\": {\n \"display_name\": \"Allowed Special\",\n \"advanced\": True,\n \"field_type\": \"str\",\n \"is_list\": True,\n },\n \"default_headers\": {\n \"display_name\": \"Default Headers\",\n \"advanced\": True,\n \"field_type\": \"dict\",\n },\n \"default_query\": {\n \"display_name\": \"Default Query\",\n \"advanced\": True,\n \"field_type\": \"NestedDict\",\n },\n \"disallowed_special\": {\n \"display_name\": \"Disallowed Special\",\n \"advanced\": True,\n \"field_type\": \"str\",\n \"is_list\": True,\n },\n \"chunk_size\": {\"display_name\": \"Chunk Size\", \"advanced\": True},\n \"client\": {\"display_name\": \"Client\", \"advanced\": True},\n \"deployment\": {\"display_name\": \"Deployment\", \"advanced\": True},\n \"embedding_ctx_length\": {\n \"display_name\": \"Embedding Context Length\",\n \"advanced\": True,\n },\n \"max_retries\": {\"display_name\": \"Max Retries\", \"advanced\": True},\n \"model\": {\n \"display_name\": \"Model\",\n \"advanced\": False,\n \"options\": [\n \"text-embedding-3-small\",\n \"text-embedding-3-large\",\n \"text-embedding-ada-002\",\n ],\n },\n \"model_kwargs\": {\"display_name\": \"Model Kwargs\", \"advanced\": True},\n \"openai_api_base\": {\n \"display_name\": \"OpenAI API Base\",\n \"password\": True,\n \"advanced\": True,\n },\n \"openai_api_key\": {\"display_name\": \"OpenAI API Key\", \"password\": True},\n \"openai_api_type\": {\n \"display_name\": \"OpenAI API Type\",\n \"advanced\": True,\n \"password\": True,\n },\n \"openai_api_version\": {\n \"display_name\": \"OpenAI API Version\",\n \"advanced\": True,\n },\n \"openai_organization\": {\n \"display_name\": \"OpenAI Organization\",\n \"advanced\": True,\n },\n \"openai_proxy\": {\"display_name\": \"OpenAI Proxy\", \"advanced\": True},\n \"request_timeout\": {\"display_name\": \"Request Timeout\", \"advanced\": True},\n \"show_progress_bar\": {\n \"display_name\": \"Show Progress Bar\",\n \"advanced\": True,\n },\n \"skip_empty\": {\"display_name\": \"Skip Empty\", \"advanced\": True},\n \"tiktoken_model_name\": {\n \"display_name\": \"TikToken Model Name\",\n \"advanced\": True,\n },\n \"tiktoken_enable\": {\"display_name\": \"TikToken Enable\", \"advanced\": True},\n }\n\n def build(\n self,\n openai_api_key: str,\n default_headers: Optional[Dict[str, str]] = None,\n default_query: Optional[NestedDict] = {},\n allowed_special: List[str] = [],\n disallowed_special: List[str] = [\"all\"],\n chunk_size: int = 1000,\n client: Optional[Any] = None,\n deployment: str = \"text-embedding-ada-002\",\n embedding_ctx_length: int = 8191,\n max_retries: int = 6,\n model: str = \"text-embedding-ada-002\",\n model_kwargs: NestedDict = {},\n openai_api_base: Optional[str] = None,\n openai_api_type: Optional[str] = None,\n openai_api_version: Optional[str] = None,\n openai_organization: Optional[str] = None,\n openai_proxy: Optional[str] = None,\n request_timeout: Optional[float] = None,\n show_progress_bar: bool = False,\n skip_empty: bool = False,\n tiktoken_enable: bool = True,\n tiktoken_model_name: Optional[str] = None,\n ) -> Embeddings:\n # This is to avoid errors with Vector Stores (e.g Chroma)\n if disallowed_special == [\"all\"]:\n disallowed_special = \"all\" # type: ignore\n\n return OpenAIEmbeddings(\n tiktoken_enabled=tiktoken_enable,\n default_headers=default_headers,\n default_query=default_query,\n allowed_special=set(allowed_special),\n disallowed_special=\"all\",\n chunk_size=chunk_size,\n client=client,\n deployment=deployment,\n embedding_ctx_length=embedding_ctx_length,\n max_retries=max_retries,\n model=model,\n model_kwargs=model_kwargs,\n base_url=openai_api_base,\n api_key=openai_api_key,\n openai_api_type=openai_api_type,\n api_version=openai_api_version,\n organization=openai_organization,\n openai_proxy=openai_proxy,\n timeout=request_timeout,\n show_progress_bar=show_progress_bar,\n skip_empty=skip_empty,\n tiktoken_model_name=tiktoken_model_name,\n )\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "default_headers": { - "type": "dict", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "default_headers", - "display_name": "Default Headers", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "default_query": { - "type": "NestedDict", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": {}, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "default_query", - "display_name": "Default Query", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "deployment": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": "text-embedding-ada-002", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "deployment", - "display_name": "Deployment", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "disallowed_special": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": [ - "all" - ], - "fileTypes": [], - "file_path": "", - "password": false, - "name": "disallowed_special", - "display_name": "Disallowed Special", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "embedding_ctx_length": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 8191, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "embedding_ctx_length", - "display_name": "Embedding Context Length", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "max_retries": { - "type": "int", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": 6, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "max_retries", - "display_name": "Max Retries", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "model": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "text-embedding-ada-002", - "fileTypes": [], - "file_path": "", - "password": false, - "options": [ - "text-embedding-3-small", - "text-embedding-3-large", - "text-embedding-ada-002" - ], - "name": "model", - "display_name": "Model", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "model_kwargs": { - "type": "NestedDict", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": {}, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "model_kwargs", - "display_name": "Model Kwargs", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "openai_api_base": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": true, - "name": "openai_api_base", - "display_name": "OpenAI API Base", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_api_key": { - "type": "str", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": true, - "name": "openai_api_key", - "display_name": "OpenAI API Key", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ], - "value": "" - }, - "openai_api_type": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": true, - "name": "openai_api_type", - "display_name": "OpenAI API Type", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_api_version": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "openai_api_version", - "display_name": "OpenAI API Version", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_organization": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "openai_organization", - "display_name": "OpenAI Organization", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "openai_proxy": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "openai_proxy", - "display_name": "OpenAI Proxy", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "request_timeout": { - "type": "float", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "request_timeout", - "display_name": "Request Timeout", - "advanced": true, - "dynamic": false, - "info": "", - "rangeSpec": { - "step_type": "float", - "min": -1, - "max": 1, - "step": 0.1 - }, - "load_from_db": false, - "title_case": false - }, - "show_progress_bar": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "show_progress_bar", - "display_name": "Show Progress Bar", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "skip_empty": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "skip_empty", - "display_name": "Skip Empty", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "tiktoken_enable": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": true, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "tiktoken_enable", - "display_name": "TikToken Enable", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "tiktoken_model_name": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "tiktoken_model_name", - "display_name": "TikToken Model Name", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": [ - "Text" - ] - }, - "_type": "CustomComponent" - }, - "description": "Generate embeddings using OpenAI models.", - "base_classes": [ - "Embeddings" - ], - "display_name": "OpenAI Embeddings", - "documentation": "", - "custom_fields": { - "openai_api_key": null, - "default_headers": null, - "default_query": null, - "allowed_special": null, - "disallowed_special": null, - "chunk_size": null, - "client": null, - "deployment": null, - "embedding_ctx_length": null, - "max_retries": null, - "model": null, - "model_kwargs": null, - "openai_api_base": null, - "openai_api_type": null, - "openai_api_version": null, - "openai_organization": null, - "openai_proxy": null, - "request_timeout": null, - "show_progress_bar": null, - "skip_empty": null, - "tiktoken_enable": null, - "tiktoken_model_name": null - }, - "output_types": [ - "Embeddings" - ], - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false - }, - "id": "OpenAIEmbeddings-9TPjc" - }, - "selected": false, - "width": 384, - "height": 383, - "positionAbsolute": { - "x": 2814.0402191223047, - "y": 1955.9268168273086 - }, - "dragging": false - } - ], - "edges": [ - { - "source": "TextOutput-BDknO", - "target": "Prompt-xeI6K", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œTextOutputœ,œidœ:œTextOutput-BDknOœ}", - "targetHandle": "{œfieldNameœ:œcontextœ,œidœ:œPrompt-xeI6Kœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", - "id": "reactflow__edge-TextOutput-BDknO{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œTextOutputœ,œidœ:œTextOutput-BDknOœ}-Prompt-xeI6K{œfieldNameœ:œcontextœ,œidœ:œPrompt-xeI6Kœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", - "data": { - "targetHandle": { - "fieldName": "context", - "id": "Prompt-xeI6K", - "inputTypes": [ - "Document", - "BaseOutputParser", - "Record", - "Text" - ], - "type": "str" - }, - "sourceHandle": { - "baseClasses": [ - "object", - "Text", - "str" - ], - "dataType": "TextOutput", - "id": "TextOutput-BDknO" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "selected": false + "output_types": ["Text"], + "full_path": null, + "field_formatters": {}, + "frozen": false, + "field_order": [], + "beta": false, + "error": null + }, + "id": "Prompt-xeI6K", + "description": "Create a prompt template with dynamic variables.", + "display_name": "Prompt" + }, + "selected": false, + "width": 384, + "height": 477, + "positionAbsolute": { + "x": 2969.0261961391298, + "y": 442.1613649809069 + }, + "dragging": false + }, + { + "id": "ChatOutput-Q39I8", + "type": "genericNode", + "position": { + "x": 3887.2073667611485, + "y": 588.4801225794856 + }, + "data": { + "type": "ChatOutput", + "node": { + "template": { + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from typing import Optional, Union\n\nfrom langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n def build(\n self,\n sender: Optional[str] = \"Machine\",\n sender_name: Optional[str] = \"AI\",\n input_value: Optional[str] = None,\n session_id: Optional[str] = None,\n return_record: Optional[bool] = False,\n record_template: Optional[str] = \"{text}\",\n ) -> Union[Text, Record]:\n return super().build(\n sender=sender,\n sender_name=sender_name,\n input_value=input_value,\n session_id=session_id,\n return_record=return_record,\n record_template=record_template,\n )\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "input_value": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "input_value", + "display_name": "Message", + "advanced": false, + "input_types": ["Text"], + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "record_template": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "{text}", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "record_template", + "display_name": "Record Template", + "advanced": true, + "dynamic": false, + "info": "In case of Message being a Record, this template will be used to convert it to text.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "return_record": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "return_record", + "display_name": "Return Record", + "advanced": true, + "dynamic": false, + "info": "Return the message as a record containing the sender, sender_name, and session_id.", + "load_from_db": false, + "title_case": false + }, + "sender": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "value": "Machine", + "fileTypes": [], + "file_path": "", + "password": false, + "options": ["Machine", "User"], + "name": "sender", + "display_name": "Sender Type", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "sender_name": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": "AI", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "sender_name", + "display_name": "Sender Name", + "advanced": false, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "session_id": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "session_id", + "display_name": "Session ID", + "advanced": true, + "dynamic": false, + "info": "If provided, the message will be stored in the memory.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "_type": "CustomComponent" }, - { - "source": "ChatInput-yxMKE", - "target": "Prompt-xeI6K", - "sourceHandle": "{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ,œRecordœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-yxMKEœ}", - "targetHandle": "{œfieldNameœ:œquestionœ,œidœ:œPrompt-xeI6Kœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", - "id": "reactflow__edge-ChatInput-yxMKE{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ,œRecordœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-yxMKEœ}-Prompt-xeI6K{œfieldNameœ:œquestionœ,œidœ:œPrompt-xeI6Kœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", - "data": { - "targetHandle": { - "fieldName": "question", - "id": "Prompt-xeI6K", - "inputTypes": [ - "Document", - "BaseOutputParser", - "Record", - "Text" - ], - "type": "str" - }, - "sourceHandle": { - "baseClasses": [ - "Text", - "str", - "object", - "Record" - ], - "dataType": "ChatInput", - "id": "ChatInput-yxMKE" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "selected": false + "description": "Display a chat message in the Playground.", + "icon": "ChatOutput", + "base_classes": ["object", "Text", "Record", "str"], + "display_name": "Chat Output", + "documentation": "", + "custom_fields": { + "sender": null, + "sender_name": null, + "input_value": null, + "session_id": null, + "return_record": null, + "record_template": null }, - { - "source": "Prompt-xeI6K", - "target": "OpenAIModel-EjXlN", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-xeI6Kœ}", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-EjXlNœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", - "id": "reactflow__edge-Prompt-xeI6K{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-xeI6Kœ}-OpenAIModel-EjXlN{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-EjXlNœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", - "data": { - "targetHandle": { - "fieldName": "input_value", - "id": "OpenAIModel-EjXlN", - "inputTypes": [ - "Text" - ], - "type": "str" - }, - "sourceHandle": { - "baseClasses": [ - "object", - "Text", - "str" - ], - "dataType": "Prompt", - "id": "Prompt-xeI6K" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "selected": false + "output_types": ["Text", "Record"], + "field_formatters": {}, + "frozen": false, + "field_order": [], + "beta": false + }, + "id": "ChatOutput-Q39I8" + }, + "selected": false, + "width": 384, + "height": 383, + "positionAbsolute": { + "x": 3887.2073667611485, + "y": 588.4801225794856 + }, + "dragging": false + }, + { + "id": "File-t0a6a", + "type": "genericNode", + "position": { + "x": 2257.233450682836, + "y": 1747.5389618367233 + }, + "data": { + "type": "File", + "node": { + "template": { + "path": { + "type": "file", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [ + ".txt", + ".md", + ".mdx", + ".csv", + ".json", + ".yaml", + ".yml", + ".xml", + ".html", + ".htm", + ".pdf", + ".docx" + ], + "file_path": "51e2b78a-199b-4054-9f32-e288eef6924c/Langflow conversation.pdf", + "password": false, + "name": "path", + "display_name": "Path", + "advanced": false, + "dynamic": false, + "info": "Supported file types: txt, md, mdx, csv, json, yaml, yml, xml, html, htm, pdf, docx", + "load_from_db": false, + "title_case": false, + "value": "" + }, + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from pathlib import Path\nfrom typing import Any, Dict\n\nfrom langflow.base.data.utils import TEXT_FILE_TYPES, parse_text_file_to_record\nfrom langflow.interface.custom.custom_component import CustomComponent\nfrom langflow.schema import Record\n\n\nclass FileComponent(CustomComponent):\n display_name = \"File\"\n description = \"A generic file loader.\"\n icon = \"file-text\"\n\n def build_config(self) -> Dict[str, Any]:\n return {\n \"path\": {\n \"display_name\": \"Path\",\n \"field_type\": \"file\",\n \"file_types\": TEXT_FILE_TYPES,\n \"info\": f\"Supported file types: {', '.join(TEXT_FILE_TYPES)}\",\n },\n \"silent_errors\": {\n \"display_name\": \"Silent Errors\",\n \"advanced\": True,\n \"info\": \"If true, errors will not raise an exception.\",\n },\n }\n\n def load_file(self, path: str, silent_errors: bool = False) -> Record:\n resolved_path = self.resolve_path(path)\n path_obj = Path(resolved_path)\n extension = path_obj.suffix[1:].lower()\n if extension == \"doc\":\n raise ValueError(\"doc files are not supported. Please save as .docx\")\n if extension not in TEXT_FILE_TYPES:\n raise ValueError(f\"Unsupported file type: {extension}\")\n record = parse_text_file_to_record(resolved_path, silent_errors)\n self.status = record if record else \"No data\"\n return record or Record()\n\n def build(\n self,\n path: str,\n silent_errors: bool = False,\n ) -> Record:\n record = self.load_file(path, silent_errors)\n self.status = record\n return record\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "silent_errors": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "silent_errors", + "display_name": "Silent Errors", + "advanced": true, + "dynamic": false, + "info": "If true, errors will not raise an exception.", + "load_from_db": false, + "title_case": false + }, + "_type": "CustomComponent" }, - { - "source": "OpenAIModel-EjXlN", - "target": "ChatOutput-Q39I8", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-EjXlNœ}", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-Q39I8œ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", - "id": "reactflow__edge-OpenAIModel-EjXlN{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-EjXlNœ}-ChatOutput-Q39I8{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-Q39I8œ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", - "data": { - "targetHandle": { - "fieldName": "input_value", - "id": "ChatOutput-Q39I8", - "inputTypes": [ - "Text" - ], - "type": "str" - }, - "sourceHandle": { - "baseClasses": [ - "object", - "Text", - "str" - ], - "dataType": "OpenAIModel", - "id": "OpenAIModel-EjXlN" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "selected": false + "description": "A generic file loader.", + "icon": "file-text", + "base_classes": ["Record"], + "display_name": "File", + "documentation": "", + "custom_fields": { + "path": null, + "silent_errors": null }, - { - "source": "File-t0a6a", - "target": "RecursiveCharacterTextSplitter-tR9QM", - "sourceHandle": "{œbaseClassesœ:[œRecordœ],œdataTypeœ:œFileœ,œidœ:œFile-t0a6aœ}", - "targetHandle": "{œfieldNameœ:œinputsœ,œidœ:œRecursiveCharacterTextSplitter-tR9QMœ,œinputTypesœ:[œDocumentœ,œRecordœ],œtypeœ:œDocumentœ}", - "id": "reactflow__edge-File-t0a6a{œbaseClassesœ:[œRecordœ],œdataTypeœ:œFileœ,œidœ:œFile-t0a6aœ}-RecursiveCharacterTextSplitter-tR9QM{œfieldNameœ:œinputsœ,œidœ:œRecursiveCharacterTextSplitter-tR9QMœ,œinputTypesœ:[œDocumentœ,œRecordœ],œtypeœ:œDocumentœ}", - "data": { - "targetHandle": { - "fieldName": "inputs", - "id": "RecursiveCharacterTextSplitter-tR9QM", - "inputTypes": [ - "Document", - "Record" - ], - "type": "Document" - }, - "sourceHandle": { - "baseClasses": [ - "Record" - ], - "dataType": "File", - "id": "File-t0a6a" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "selected": false + "output_types": ["Record"], + "field_formatters": {}, + "frozen": false, + "field_order": [], + "beta": false + }, + "id": "File-t0a6a" + }, + "selected": false, + "width": 384, + "height": 281, + "positionAbsolute": { + "x": 2257.233450682836, + "y": 1747.5389618367233 + }, + "dragging": false + }, + { + "id": "RecursiveCharacterTextSplitter-tR9QM", + "type": "genericNode", + "position": { + "x": 2791.013514133929, + "y": 1462.9588953494142 + }, + "data": { + "type": "RecursiveCharacterTextSplitter", + "node": { + "template": { + "inputs": { + "type": "Document", + "required": true, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "inputs", + "display_name": "Input", + "advanced": false, + "input_types": ["Document", "Record"], + "dynamic": false, + "info": "The texts to split.", + "load_from_db": false, + "title_case": false + }, + "chunk_overlap": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 200, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "chunk_overlap", + "display_name": "Chunk Overlap", + "advanced": false, + "dynamic": false, + "info": "The amount of overlap between chunks.", + "load_from_db": false, + "title_case": false + }, + "chunk_size": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 1000, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "chunk_size", + "display_name": "Chunk Size", + "advanced": false, + "dynamic": false, + "info": "The maximum length of each chunk.", + "load_from_db": false, + "title_case": false + }, + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from typing import Optional\n\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\nfrom langchain_core.documents import Document\n\nfrom langflow.interface.custom.custom_component import CustomComponent\nfrom langflow.schema import Record\nfrom langflow.utils.util import build_loader_repr_from_records, unescape_string\n\n\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\n display_name: str = \"Recursive Character Text Splitter\"\n description: str = \"Split text into chunks of a specified length.\"\n documentation: str = \"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\"\n\n def build_config(self):\n return {\n \"inputs\": {\n \"display_name\": \"Input\",\n \"info\": \"The texts to split.\",\n \"input_types\": [\"Document\", \"Record\"],\n },\n \"separators\": {\n \"display_name\": \"Separators\",\n \"info\": 'The characters to split on.\\nIf left empty defaults to [\"\\\\n\\\\n\", \"\\\\n\", \" \", \"\"].',\n \"is_list\": True,\n },\n \"chunk_size\": {\n \"display_name\": \"Chunk Size\",\n \"info\": \"The maximum length of each chunk.\",\n \"field_type\": \"int\",\n \"value\": 1000,\n },\n \"chunk_overlap\": {\n \"display_name\": \"Chunk Overlap\",\n \"info\": \"The amount of overlap between chunks.\",\n \"field_type\": \"int\",\n \"value\": 200,\n },\n \"code\": {\"show\": False},\n }\n\n def build(\n self,\n inputs: list[Document],\n separators: Optional[list[str]] = None,\n chunk_size: Optional[int] = 1000,\n chunk_overlap: Optional[int] = 200,\n ) -> list[Record]:\n \"\"\"\n Split text into chunks of a specified length.\n\n Args:\n separators (list[str]): The characters to split on.\n chunk_size (int): The maximum length of each chunk.\n chunk_overlap (int): The amount of overlap between chunks.\n length_function (function): The function to use to calculate the length of the text.\n\n Returns:\n list[str]: The chunks of text.\n \"\"\"\n\n if separators == \"\":\n separators = None\n elif separators:\n # check if the separators list has escaped characters\n # if there are escaped characters, unescape them\n separators = [unescape_string(x) for x in separators]\n\n # Make sure chunk_size and chunk_overlap are ints\n if isinstance(chunk_size, str):\n chunk_size = int(chunk_size)\n if isinstance(chunk_overlap, str):\n chunk_overlap = int(chunk_overlap)\n splitter = RecursiveCharacterTextSplitter(\n separators=separators,\n chunk_size=chunk_size,\n chunk_overlap=chunk_overlap,\n )\n documents = []\n for _input in inputs:\n if isinstance(_input, Record):\n documents.append(_input.to_lc_document())\n else:\n documents.append(_input)\n docs = splitter.split_documents(documents)\n records = self.to_records(docs)\n self.repr_value = build_loader_repr_from_records(records)\n return records\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "separators": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "separators", + "display_name": "Separators", + "advanced": false, + "dynamic": false, + "info": "The characters to split on.\nIf left empty defaults to [\"\\n\\n\", \"\\n\", \" \", \"\"].", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"], + "value": [""] + }, + "_type": "CustomComponent" }, - { - "source": "OpenAIEmbeddings-ZlOk1", - "sourceHandle": "{œbaseClassesœ:[œEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-ZlOk1œ}", - "target": "AstraDBSearch-41nRz", - "targetHandle": "{œfieldNameœ:œembeddingœ,œidœ:œAstraDBSearch-41nRzœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}", - "data": { - "targetHandle": { - "fieldName": "embedding", - "id": "AstraDBSearch-41nRz", - "inputTypes": null, - "type": "Embeddings" - }, - "sourceHandle": { - "baseClasses": [ - "Embeddings" - ], - "dataType": "OpenAIEmbeddings", - "id": "OpenAIEmbeddings-ZlOk1" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIEmbeddings-ZlOk1{œbaseClassesœ:[œEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-ZlOk1œ}-AstraDBSearch-41nRz{œfieldNameœ:œembeddingœ,œidœ:œAstraDBSearch-41nRzœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}" + "description": "Split text into chunks of a specified length.", + "base_classes": ["Record"], + "display_name": "Recursive Character Text Splitter", + "documentation": "https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter", + "custom_fields": { + "inputs": null, + "separators": null, + "chunk_size": null, + "chunk_overlap": null }, - { - "source": "ChatInput-yxMKE", - "sourceHandle": "{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ,œRecordœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-yxMKEœ}", - "target": "AstraDBSearch-41nRz", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œAstraDBSearch-41nRzœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", - "data": { - "targetHandle": { - "fieldName": "input_value", - "id": "AstraDBSearch-41nRz", - "inputTypes": [ - "Text" - ], - "type": "str" - }, - "sourceHandle": { - "baseClasses": [ - "Text", - "str", - "object", - "Record" - ], - "dataType": "ChatInput", - "id": "ChatInput-yxMKE" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-ChatInput-yxMKE{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ,œRecordœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-yxMKEœ}-AstraDBSearch-41nRz{œfieldNameœ:œinput_valueœ,œidœ:œAstraDBSearch-41nRzœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "output_types": ["Record"], + "field_formatters": {}, + "frozen": false, + "field_order": [], + "beta": false + }, + "id": "RecursiveCharacterTextSplitter-tR9QM" + }, + "selected": false, + "width": 384, + "height": 501, + "positionAbsolute": { + "x": 2791.013514133929, + "y": 1462.9588953494142 + }, + "dragging": false + }, + { + "id": "AstraDBSearch-41nRz", + "type": "genericNode", + "position": { + "x": 1723.976434815103, + "y": 277.03317407245913 + }, + "data": { + "type": "AstraDBSearch", + "node": { + "template": { + "embedding": { + "type": "Embeddings", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "embedding", + "display_name": "Embedding", + "advanced": false, + "dynamic": false, + "info": "Embedding to use", + "load_from_db": false, + "title_case": false + }, + "input_value": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "input_value", + "display_name": "Input Value", + "advanced": false, + "dynamic": false, + "info": "Input value to search", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "api_endpoint": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "api_endpoint", + "display_name": "API Endpoint", + "advanced": false, + "dynamic": false, + "info": "API endpoint URL for the Astra DB service.", + "load_from_db": true, + "title_case": false, + "input_types": ["Text"], + "value": "ASTRA_DB_API_ENDPOINT" + }, + "batch_size": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "batch_size", + "display_name": "Batch Size", + "advanced": true, + "dynamic": false, + "info": "Optional number of records to process in a single batch.", + "load_from_db": false, + "title_case": false + }, + "bulk_delete_concurrency": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "bulk_delete_concurrency", + "display_name": "Bulk Delete Concurrency", + "advanced": true, + "dynamic": false, + "info": "Optional concurrency level for bulk delete operations.", + "load_from_db": false, + "title_case": false + }, + "bulk_insert_batch_concurrency": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "bulk_insert_batch_concurrency", + "display_name": "Bulk Insert Batch Concurrency", + "advanced": true, + "dynamic": false, + "info": "Optional concurrency level for bulk insert operations.", + "load_from_db": false, + "title_case": false + }, + "bulk_insert_overwrite_concurrency": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "bulk_insert_overwrite_concurrency", + "display_name": "Bulk Insert Overwrite Concurrency", + "advanced": true, + "dynamic": false, + "info": "Optional concurrency level for bulk insert operations that overwrite existing records.", + "load_from_db": false, + "title_case": false + }, + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from typing import List, Optional\n\nfrom langflow.components.vectorstores.AstraDB import AstraDBVectorStoreComponent\nfrom langflow.components.vectorstores.base.model import LCVectorStoreComponent\nfrom langflow.field_typing import Embeddings, Text\nfrom langflow.schema import Record\n\n\nclass AstraDBSearchComponent(LCVectorStoreComponent):\n display_name = \"Astra DB Search\"\n description = \"Searches an existing Astra DB Vector Store.\"\n icon = \"AstraDB\"\n field_order = [\"token\", \"api_endpoint\", \"collection_name\", \"input_value\", \"embedding\"]\n\n def build_config(self):\n return {\n \"search_type\": {\n \"display_name\": \"Search Type\",\n \"options\": [\"Similarity\", \"MMR\"],\n },\n \"input_value\": {\n \"display_name\": \"Input Value\",\n \"info\": \"Input value to search\",\n },\n \"embedding\": {\"display_name\": \"Embedding\", \"info\": \"Embedding to use\"},\n \"collection_name\": {\n \"display_name\": \"Collection Name\",\n \"info\": \"The name of the collection within Astra DB where the vectors will be stored.\",\n },\n \"token\": {\n \"display_name\": \"Token\",\n \"info\": \"Authentication token for accessing Astra DB.\",\n \"password\": True,\n },\n \"api_endpoint\": {\n \"display_name\": \"API Endpoint\",\n \"info\": \"API endpoint URL for the Astra DB service.\",\n },\n \"namespace\": {\n \"display_name\": \"Namespace\",\n \"info\": \"Optional namespace within Astra DB to use for the collection.\",\n \"advanced\": True,\n },\n \"metric\": {\n \"display_name\": \"Metric\",\n \"info\": \"Optional distance metric for vector comparisons in the vector store.\",\n \"advanced\": True,\n },\n \"batch_size\": {\n \"display_name\": \"Batch Size\",\n \"info\": \"Optional number of records to process in a single batch.\",\n \"advanced\": True,\n },\n \"bulk_insert_batch_concurrency\": {\n \"display_name\": \"Bulk Insert Batch Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations.\",\n \"advanced\": True,\n },\n \"bulk_insert_overwrite_concurrency\": {\n \"display_name\": \"Bulk Insert Overwrite Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations that overwrite existing records.\",\n \"advanced\": True,\n },\n \"bulk_delete_concurrency\": {\n \"display_name\": \"Bulk Delete Concurrency\",\n \"info\": \"Optional concurrency level for bulk delete operations.\",\n \"advanced\": True,\n },\n \"setup_mode\": {\n \"display_name\": \"Setup Mode\",\n \"info\": \"Configuration mode for setting up the vector store, with options like \u201cSync\u201d, \u201cAsync\u201d, or \u201cOff\u201d.\",\n \"options\": [\"Sync\", \"Async\", \"Off\"],\n \"advanced\": True,\n },\n \"pre_delete_collection\": {\n \"display_name\": \"Pre Delete Collection\",\n \"info\": \"Boolean flag to determine whether to delete the collection before creating a new one.\",\n \"advanced\": True,\n },\n \"metadata_indexing_include\": {\n \"display_name\": \"Metadata Indexing Include\",\n \"info\": \"Optional list of metadata fields to include in the indexing.\",\n \"advanced\": True,\n },\n \"metadata_indexing_exclude\": {\n \"display_name\": \"Metadata Indexing Exclude\",\n \"info\": \"Optional list of metadata fields to exclude from the indexing.\",\n \"advanced\": True,\n },\n \"collection_indexing_policy\": {\n \"display_name\": \"Collection Indexing Policy\",\n \"info\": \"Optional dictionary defining the indexing policy for the collection.\",\n \"advanced\": True,\n },\n \"number_of_results\": {\n \"display_name\": \"Number of Results\",\n \"info\": \"Number of results to return.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n embedding: Embeddings,\n collection_name: str,\n input_value: Text,\n token: str,\n api_endpoint: str,\n search_type: str = \"Similarity\",\n number_of_results: int = 4,\n namespace: Optional[str] = None,\n metric: Optional[str] = None,\n batch_size: Optional[int] = None,\n bulk_insert_batch_concurrency: Optional[int] = None,\n bulk_insert_overwrite_concurrency: Optional[int] = None,\n bulk_delete_concurrency: Optional[int] = None,\n setup_mode: str = \"Sync\",\n pre_delete_collection: bool = False,\n metadata_indexing_include: Optional[List[str]] = None,\n metadata_indexing_exclude: Optional[List[str]] = None,\n collection_indexing_policy: Optional[dict] = None,\n ) -> List[Record]:\n vector_store = AstraDBVectorStoreComponent().build(\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n try:\n return self.search_with_vector_store(input_value, search_type, vector_store, k=number_of_results)\n except KeyError as e:\n if \"content\" in str(e):\n raise ValueError(\n \"You should ingest data through Langflow (or LangChain) to query it in Langflow. Your collection does not contain a field name 'content'.\"\n )\n else:\n raise e\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "collection_indexing_policy": { + "type": "dict", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "collection_indexing_policy", + "display_name": "Collection Indexing Policy", + "advanced": true, + "dynamic": false, + "info": "Optional dictionary defining the indexing policy for the collection.", + "load_from_db": false, + "title_case": false + }, + "collection_name": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "collection_name", + "display_name": "Collection Name", + "advanced": false, + "dynamic": false, + "info": "The name of the collection within Astra DB where the vectors will be stored.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"], + "value": "langflow" + }, + "metadata_indexing_exclude": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "metadata_indexing_exclude", + "display_name": "Metadata Indexing Exclude", + "advanced": true, + "dynamic": false, + "info": "Optional list of metadata fields to exclude from the indexing.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "metadata_indexing_include": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "metadata_indexing_include", + "display_name": "Metadata Indexing Include", + "advanced": true, + "dynamic": false, + "info": "Optional list of metadata fields to include in the indexing.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "metric": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "metric", + "display_name": "Metric", + "advanced": true, + "dynamic": false, + "info": "Optional distance metric for vector comparisons in the vector store.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "namespace": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "namespace", + "display_name": "Namespace", + "advanced": true, + "dynamic": false, + "info": "Optional namespace within Astra DB to use for the collection.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "number_of_results": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 4, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "number_of_results", + "display_name": "Number of Results", + "advanced": true, + "dynamic": false, + "info": "Number of results to return.", + "load_from_db": false, + "title_case": false + }, + "pre_delete_collection": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "pre_delete_collection", + "display_name": "Pre Delete Collection", + "advanced": true, + "dynamic": false, + "info": "Boolean flag to determine whether to delete the collection before creating a new one.", + "load_from_db": false, + "title_case": false + }, + "search_type": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "value": "Similarity", + "fileTypes": [], + "file_path": "", + "password": false, + "options": ["Similarity", "MMR"], + "name": "search_type", + "display_name": "Search Type", + "advanced": false, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "setup_mode": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "value": "Sync", + "fileTypes": [], + "file_path": "", + "password": false, + "options": ["Sync", "Async", "Off"], + "name": "setup_mode", + "display_name": "Setup Mode", + "advanced": true, + "dynamic": false, + "info": "Configuration mode for setting up the vector store, with options like \u201cSync\u201d, \u201cAsync\u201d, or \u201cOff\u201d.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "token": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": true, + "name": "token", + "display_name": "Token", + "advanced": false, + "dynamic": false, + "info": "Authentication token for accessing Astra DB.", + "load_from_db": true, + "title_case": false, + "input_types": ["Text"], + "value": "ASTRA_DB_APPLICATION_TOKEN" + }, + "_type": "CustomComponent" }, - { - "source": "RecursiveCharacterTextSplitter-tR9QM", - "sourceHandle": "{œbaseClassesœ:[œRecordœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-tR9QMœ}", - "target": "AstraDB-eUCSS", - "targetHandle": "{œfieldNameœ:œinputsœ,œidœ:œAstraDB-eUCSSœ,œinputTypesœ:null,œtypeœ:œRecordœ}", - "data": { - "targetHandle": { - "fieldName": "inputs", - "id": "AstraDB-eUCSS", - "inputTypes": null, - "type": "Record" - }, - "sourceHandle": { - "baseClasses": [ - "Record" - ], - "dataType": "RecursiveCharacterTextSplitter", - "id": "RecursiveCharacterTextSplitter-tR9QM" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-RecursiveCharacterTextSplitter-tR9QM{œbaseClassesœ:[œRecordœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-tR9QMœ}-AstraDB-eUCSS{œfieldNameœ:œinputsœ,œidœ:œAstraDB-eUCSSœ,œinputTypesœ:null,œtypeœ:œRecordœ}", - "selected": false + "description": "Searches an existing Astra DB Vector Store.", + "icon": "AstraDB", + "base_classes": ["Record"], + "display_name": "Astra DB Search", + "documentation": "", + "custom_fields": { + "embedding": null, + "collection_name": null, + "input_value": null, + "token": null, + "api_endpoint": null, + "search_type": null, + "number_of_results": null, + "namespace": null, + "metric": null, + "batch_size": null, + "bulk_insert_batch_concurrency": null, + "bulk_insert_overwrite_concurrency": null, + "bulk_delete_concurrency": null, + "setup_mode": null, + "pre_delete_collection": null, + "metadata_indexing_include": null, + "metadata_indexing_exclude": null, + "collection_indexing_policy": null }, - { - "source": "OpenAIEmbeddings-9TPjc", - "sourceHandle": "{œbaseClassesœ:[œEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-9TPjcœ}", - "target": "AstraDB-eUCSS", - "targetHandle": "{œfieldNameœ:œembeddingœ,œidœ:œAstraDB-eUCSSœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}", - "data": { - "targetHandle": { - "fieldName": "embedding", - "id": "AstraDB-eUCSS", - "inputTypes": null, - "type": "Embeddings" - }, - "sourceHandle": { - "baseClasses": [ - "Embeddings" - ], - "dataType": "OpenAIEmbeddings", - "id": "OpenAIEmbeddings-9TPjc" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIEmbeddings-9TPjc{œbaseClassesœ:[œEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-9TPjcœ}-AstraDB-eUCSS{œfieldNameœ:œembeddingœ,œidœ:œAstraDB-eUCSSœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}", - "selected": false - }, - { - "source": "AstraDBSearch-41nRz", - "sourceHandle": "{œbaseClassesœ:[œRecordœ],œdataTypeœ:œAstraDBSearchœ,œidœ:œAstraDBSearch-41nRzœ}", - "target": "TextOutput-BDknO", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-BDknOœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}", - "data": { - "targetHandle": { - "fieldName": "input_value", - "id": "TextOutput-BDknO", - "inputTypes": [ - "Record", - "Text" - ], - "type": "str" - }, - "sourceHandle": { - "baseClasses": [ - "Record" - ], - "dataType": "AstraDBSearch", - "id": "AstraDBSearch-41nRz" - } - }, - "style": { - "stroke": "#555" - }, - "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-AstraDBSearch-41nRz{œbaseClassesœ:[œRecordœ],œdataTypeœ:œAstraDBSearchœ,œidœ:œAstraDBSearch-41nRzœ}-TextOutput-BDknO{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-BDknOœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}" - } - ], - "viewport": { - "x": -259.6782520315529, - "y": 90.3428735006047, - "zoom": 0.2687057134854984 + "output_types": ["Record"], + "field_formatters": {}, + "frozen": false, + "field_order": [ + "token", + "api_endpoint", + "collection_name", + "input_value", + "embedding" + ], + "beta": false + }, + "id": "AstraDBSearch-41nRz" + }, + "selected": false, + "width": 384, + "height": 713, + "dragging": false, + "positionAbsolute": { + "x": 1723.976434815103, + "y": 277.03317407245913 } - }, - "description": "Visit https://pre-release.langflow.org/tutorials/rag-with-astradb for a detailed guide of this project.\nThis project give you both Ingestion and RAG in a single file. You'll need to visit https://astra.datastax.com/ to create an Astra DB instance, your Token and grab an API Endpoint.\nRunning this project requires you to add a file in the Files component, then define a Collection Name and click on the Play icon on the Astra DB component. \n\nAfter the ingestion ends you are ready to click on the Run button at the lower left corner and start asking questions about your data.", - "name": "Vector Store RAG", - "last_tested_version": "1.0.0a0", - "is_component": false -} \ No newline at end of file + }, + { + "id": "AstraDB-eUCSS", + "type": "genericNode", + "position": { + "x": 3372.04958055989, + "y": 1611.0742035495277 + }, + "data": { + "type": "AstraDB", + "node": { + "template": { + "embedding": { + "type": "Embeddings", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "embedding", + "display_name": "Embedding", + "advanced": false, + "dynamic": false, + "info": "Embedding to use", + "load_from_db": false, + "title_case": false + }, + "inputs": { + "type": "Record", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "inputs", + "display_name": "Inputs", + "advanced": false, + "dynamic": false, + "info": "Optional list of records to be processed and stored in the vector store.", + "load_from_db": false, + "title_case": false + }, + "api_endpoint": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "api_endpoint", + "display_name": "API Endpoint", + "advanced": false, + "dynamic": false, + "info": "API endpoint URL for the Astra DB service.", + "load_from_db": true, + "title_case": false, + "input_types": ["Text"], + "value": "ASTRA_DB_API_ENDPOINT" + }, + "batch_size": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "batch_size", + "display_name": "Batch Size", + "advanced": true, + "dynamic": false, + "info": "Optional number of records to process in a single batch.", + "load_from_db": false, + "title_case": false + }, + "bulk_delete_concurrency": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "bulk_delete_concurrency", + "display_name": "Bulk Delete Concurrency", + "advanced": true, + "dynamic": false, + "info": "Optional concurrency level for bulk delete operations.", + "load_from_db": false, + "title_case": false + }, + "bulk_insert_batch_concurrency": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "bulk_insert_batch_concurrency", + "display_name": "Bulk Insert Batch Concurrency", + "advanced": true, + "dynamic": false, + "info": "Optional concurrency level for bulk insert operations.", + "load_from_db": false, + "title_case": false + }, + "bulk_insert_overwrite_concurrency": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "bulk_insert_overwrite_concurrency", + "display_name": "Bulk Insert Overwrite Concurrency", + "advanced": true, + "dynamic": false, + "info": "Optional concurrency level for bulk insert operations that overwrite existing records.", + "load_from_db": false, + "title_case": false + }, + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from typing import List, Optional\n\nfrom langchain_astradb import AstraDBVectorStore\nfrom langchain_astradb.utils.astradb import SetupMode\n\nfrom langflow.custom import CustomComponent\nfrom langflow.field_typing import Embeddings, VectorStore\nfrom langflow.schema import Record\n\n\nclass AstraDBVectorStoreComponent(CustomComponent):\n display_name = \"Astra DB\"\n description = \"Builds or loads an Astra DB Vector Store.\"\n icon = \"AstraDB\"\n field_order = [\"token\", \"api_endpoint\", \"collection_name\", \"inputs\", \"embedding\"]\n\n def build_config(self):\n return {\n \"inputs\": {\n \"display_name\": \"Inputs\",\n \"info\": \"Optional list of records to be processed and stored in the vector store.\",\n },\n \"embedding\": {\"display_name\": \"Embedding\", \"info\": \"Embedding to use\"},\n \"collection_name\": {\n \"display_name\": \"Collection Name\",\n \"info\": \"The name of the collection within Astra DB where the vectors will be stored.\",\n },\n \"token\": {\n \"display_name\": \"Token\",\n \"info\": \"Authentication token for accessing Astra DB.\",\n \"password\": True,\n },\n \"api_endpoint\": {\n \"display_name\": \"API Endpoint\",\n \"info\": \"API endpoint URL for the Astra DB service.\",\n },\n \"namespace\": {\n \"display_name\": \"Namespace\",\n \"info\": \"Optional namespace within Astra DB to use for the collection.\",\n \"advanced\": True,\n },\n \"metric\": {\n \"display_name\": \"Metric\",\n \"info\": \"Optional distance metric for vector comparisons in the vector store.\",\n \"advanced\": True,\n },\n \"batch_size\": {\n \"display_name\": \"Batch Size\",\n \"info\": \"Optional number of records to process in a single batch.\",\n \"advanced\": True,\n },\n \"bulk_insert_batch_concurrency\": {\n \"display_name\": \"Bulk Insert Batch Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations.\",\n \"advanced\": True,\n },\n \"bulk_insert_overwrite_concurrency\": {\n \"display_name\": \"Bulk Insert Overwrite Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations that overwrite existing records.\",\n \"advanced\": True,\n },\n \"bulk_delete_concurrency\": {\n \"display_name\": \"Bulk Delete Concurrency\",\n \"info\": \"Optional concurrency level for bulk delete operations.\",\n \"advanced\": True,\n },\n \"setup_mode\": {\n \"display_name\": \"Setup Mode\",\n \"info\": \"Configuration mode for setting up the vector store, with options like \u201cSync\u201d, \u201cAsync\u201d, or \u201cOff\u201d.\",\n \"options\": [\"Sync\", \"Async\", \"Off\"],\n \"advanced\": True,\n },\n \"pre_delete_collection\": {\n \"display_name\": \"Pre Delete Collection\",\n \"info\": \"Boolean flag to determine whether to delete the collection before creating a new one.\",\n \"advanced\": True,\n },\n \"metadata_indexing_include\": {\n \"display_name\": \"Metadata Indexing Include\",\n \"info\": \"Optional list of metadata fields to include in the indexing.\",\n \"advanced\": True,\n },\n \"metadata_indexing_exclude\": {\n \"display_name\": \"Metadata Indexing Exclude\",\n \"info\": \"Optional list of metadata fields to exclude from the indexing.\",\n \"advanced\": True,\n },\n \"collection_indexing_policy\": {\n \"display_name\": \"Collection Indexing Policy\",\n \"info\": \"Optional dictionary defining the indexing policy for the collection.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n embedding: Embeddings,\n token: str,\n api_endpoint: str,\n collection_name: str,\n inputs: Optional[List[Record]] = None,\n namespace: Optional[str] = None,\n metric: Optional[str] = None,\n batch_size: Optional[int] = None,\n bulk_insert_batch_concurrency: Optional[int] = None,\n bulk_insert_overwrite_concurrency: Optional[int] = None,\n bulk_delete_concurrency: Optional[int] = None,\n setup_mode: str = \"Async\",\n pre_delete_collection: bool = False,\n metadata_indexing_include: Optional[List[str]] = None,\n metadata_indexing_exclude: Optional[List[str]] = None,\n collection_indexing_policy: Optional[dict] = None,\n ) -> VectorStore:\n try:\n setup_mode_value = SetupMode[setup_mode.upper()]\n except KeyError:\n raise ValueError(f\"Invalid setup mode: {setup_mode}\")\n if inputs:\n documents = [_input.to_lc_document() for _input in inputs]\n\n vector_store = AstraDBVectorStore.from_documents(\n documents=documents,\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode_value,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n else:\n vector_store = AstraDBVectorStore(\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode_value,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n\n return vector_store\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "collection_indexing_policy": { + "type": "dict", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "collection_indexing_policy", + "display_name": "Collection Indexing Policy", + "advanced": true, + "dynamic": false, + "info": "Optional dictionary defining the indexing policy for the collection.", + "load_from_db": false, + "title_case": false + }, + "collection_name": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "collection_name", + "display_name": "Collection Name", + "advanced": false, + "dynamic": false, + "info": "The name of the collection within Astra DB where the vectors will be stored.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"], + "value": "langflow" + }, + "metadata_indexing_exclude": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "metadata_indexing_exclude", + "display_name": "Metadata Indexing Exclude", + "advanced": true, + "dynamic": false, + "info": "Optional list of metadata fields to exclude from the indexing.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "metadata_indexing_include": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "metadata_indexing_include", + "display_name": "Metadata Indexing Include", + "advanced": true, + "dynamic": false, + "info": "Optional list of metadata fields to include in the indexing.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "metric": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "metric", + "display_name": "Metric", + "advanced": true, + "dynamic": false, + "info": "Optional distance metric for vector comparisons in the vector store.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "namespace": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "namespace", + "display_name": "Namespace", + "advanced": true, + "dynamic": false, + "info": "Optional namespace within Astra DB to use for the collection.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "pre_delete_collection": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "pre_delete_collection", + "display_name": "Pre Delete Collection", + "advanced": true, + "dynamic": false, + "info": "Boolean flag to determine whether to delete the collection before creating a new one.", + "load_from_db": false, + "title_case": false + }, + "setup_mode": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "value": "Async", + "fileTypes": [], + "file_path": "", + "password": false, + "options": ["Sync", "Async", "Off"], + "name": "setup_mode", + "display_name": "Setup Mode", + "advanced": true, + "dynamic": false, + "info": "Configuration mode for setting up the vector store, with options like \u201cSync\u201d, \u201cAsync\u201d, or \u201cOff\u201d.", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "token": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": true, + "name": "token", + "display_name": "Token", + "advanced": false, + "dynamic": false, + "info": "Authentication token for accessing Astra DB.", + "load_from_db": true, + "title_case": false, + "input_types": ["Text"], + "value": "ASTRA_DB_APPLICATION_TOKEN" + }, + "_type": "CustomComponent" + }, + "description": "Builds or loads an Astra DB Vector Store.", + "icon": "AstraDB", + "base_classes": ["VectorStore"], + "display_name": "Astra DB", + "documentation": "", + "custom_fields": { + "embedding": null, + "token": null, + "api_endpoint": null, + "collection_name": null, + "inputs": null, + "namespace": null, + "metric": null, + "batch_size": null, + "bulk_insert_batch_concurrency": null, + "bulk_insert_overwrite_concurrency": null, + "bulk_delete_concurrency": null, + "setup_mode": null, + "pre_delete_collection": null, + "metadata_indexing_include": null, + "metadata_indexing_exclude": null, + "collection_indexing_policy": null + }, + "output_types": ["VectorStore"], + "field_formatters": {}, + "frozen": false, + "field_order": [ + "token", + "api_endpoint", + "collection_name", + "inputs", + "embedding" + ], + "beta": false + }, + "id": "AstraDB-eUCSS" + }, + "selected": false, + "width": 384, + "height": 573, + "positionAbsolute": { + "x": 3372.04958055989, + "y": 1611.0742035495277 + }, + "dragging": false + }, + { + "id": "OpenAIEmbeddings-9TPjc", + "type": "genericNode", + "position": { + "x": 2814.0402191223047, + "y": 1955.9268168273086 + }, + "data": { + "type": "OpenAIEmbeddings", + "node": { + "template": { + "allowed_special": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": [], + "fileTypes": [], + "file_path": "", + "password": false, + "name": "allowed_special", + "display_name": "Allowed Special", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "chunk_size": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 1000, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "chunk_size", + "display_name": "Chunk Size", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "client": { + "type": "Any", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "client", + "display_name": "Client", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "code": { + "type": "code", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": true, + "value": "from typing import Any, Dict, List, Optional\n\nfrom langchain_openai.embeddings.base import OpenAIEmbeddings\n\nfrom langflow.field_typing import Embeddings, NestedDict\nfrom langflow.interface.custom.custom_component import CustomComponent\n\n\nclass OpenAIEmbeddingsComponent(CustomComponent):\n display_name = \"OpenAI Embeddings\"\n description = \"Generate embeddings using OpenAI models.\"\n\n def build_config(self):\n return {\n \"allowed_special\": {\n \"display_name\": \"Allowed Special\",\n \"advanced\": True,\n \"field_type\": \"str\",\n \"is_list\": True,\n },\n \"default_headers\": {\n \"display_name\": \"Default Headers\",\n \"advanced\": True,\n \"field_type\": \"dict\",\n },\n \"default_query\": {\n \"display_name\": \"Default Query\",\n \"advanced\": True,\n \"field_type\": \"NestedDict\",\n },\n \"disallowed_special\": {\n \"display_name\": \"Disallowed Special\",\n \"advanced\": True,\n \"field_type\": \"str\",\n \"is_list\": True,\n },\n \"chunk_size\": {\"display_name\": \"Chunk Size\", \"advanced\": True},\n \"client\": {\"display_name\": \"Client\", \"advanced\": True},\n \"deployment\": {\"display_name\": \"Deployment\", \"advanced\": True},\n \"embedding_ctx_length\": {\n \"display_name\": \"Embedding Context Length\",\n \"advanced\": True,\n },\n \"max_retries\": {\"display_name\": \"Max Retries\", \"advanced\": True},\n \"model\": {\n \"display_name\": \"Model\",\n \"advanced\": False,\n \"options\": [\n \"text-embedding-3-small\",\n \"text-embedding-3-large\",\n \"text-embedding-ada-002\",\n ],\n },\n \"model_kwargs\": {\"display_name\": \"Model Kwargs\", \"advanced\": True},\n \"openai_api_base\": {\n \"display_name\": \"OpenAI API Base\",\n \"password\": True,\n \"advanced\": True,\n },\n \"openai_api_key\": {\"display_name\": \"OpenAI API Key\", \"password\": True},\n \"openai_api_type\": {\n \"display_name\": \"OpenAI API Type\",\n \"advanced\": True,\n \"password\": True,\n },\n \"openai_api_version\": {\n \"display_name\": \"OpenAI API Version\",\n \"advanced\": True,\n },\n \"openai_organization\": {\n \"display_name\": \"OpenAI Organization\",\n \"advanced\": True,\n },\n \"openai_proxy\": {\"display_name\": \"OpenAI Proxy\", \"advanced\": True},\n \"request_timeout\": {\"display_name\": \"Request Timeout\", \"advanced\": True},\n \"show_progress_bar\": {\n \"display_name\": \"Show Progress Bar\",\n \"advanced\": True,\n },\n \"skip_empty\": {\"display_name\": \"Skip Empty\", \"advanced\": True},\n \"tiktoken_model_name\": {\n \"display_name\": \"TikToken Model Name\",\n \"advanced\": True,\n },\n \"tiktoken_enable\": {\"display_name\": \"TikToken Enable\", \"advanced\": True},\n }\n\n def build(\n self,\n openai_api_key: str,\n default_headers: Optional[Dict[str, str]] = None,\n default_query: Optional[NestedDict] = {},\n allowed_special: List[str] = [],\n disallowed_special: List[str] = [\"all\"],\n chunk_size: int = 1000,\n client: Optional[Any] = None,\n deployment: str = \"text-embedding-ada-002\",\n embedding_ctx_length: int = 8191,\n max_retries: int = 6,\n model: str = \"text-embedding-ada-002\",\n model_kwargs: NestedDict = {},\n openai_api_base: Optional[str] = None,\n openai_api_type: Optional[str] = None,\n openai_api_version: Optional[str] = None,\n openai_organization: Optional[str] = None,\n openai_proxy: Optional[str] = None,\n request_timeout: Optional[float] = None,\n show_progress_bar: bool = False,\n skip_empty: bool = False,\n tiktoken_enable: bool = True,\n tiktoken_model_name: Optional[str] = None,\n ) -> Embeddings:\n # This is to avoid errors with Vector Stores (e.g Chroma)\n if disallowed_special == [\"all\"]:\n disallowed_special = \"all\" # type: ignore\n\n return OpenAIEmbeddings(\n tiktoken_enabled=tiktoken_enable,\n default_headers=default_headers,\n default_query=default_query,\n allowed_special=set(allowed_special),\n disallowed_special=\"all\",\n chunk_size=chunk_size,\n client=client,\n deployment=deployment,\n embedding_ctx_length=embedding_ctx_length,\n max_retries=max_retries,\n model=model,\n model_kwargs=model_kwargs,\n base_url=openai_api_base,\n api_key=openai_api_key,\n openai_api_type=openai_api_type,\n api_version=openai_api_version,\n organization=openai_organization,\n openai_proxy=openai_proxy,\n timeout=request_timeout,\n show_progress_bar=show_progress_bar,\n skip_empty=skip_empty,\n tiktoken_model_name=tiktoken_model_name,\n )\n", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "code", + "advanced": true, + "dynamic": true, + "info": "", + "load_from_db": false, + "title_case": false + }, + "default_headers": { + "type": "dict", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "default_headers", + "display_name": "Default Headers", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "default_query": { + "type": "NestedDict", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": {}, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "default_query", + "display_name": "Default Query", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "deployment": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": "text-embedding-ada-002", + "fileTypes": [], + "file_path": "", + "password": false, + "name": "deployment", + "display_name": "Deployment", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "disallowed_special": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": ["all"], + "fileTypes": [], + "file_path": "", + "password": false, + "name": "disallowed_special", + "display_name": "Disallowed Special", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "embedding_ctx_length": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 8191, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "embedding_ctx_length", + "display_name": "Embedding Context Length", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "max_retries": { + "type": "int", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": 6, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "max_retries", + "display_name": "Max Retries", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "model": { + "type": "str", + "required": false, + "placeholder": "", + "list": true, + "show": true, + "multiline": false, + "value": "text-embedding-ada-002", + "fileTypes": [], + "file_path": "", + "password": false, + "options": [ + "text-embedding-3-small", + "text-embedding-3-large", + "text-embedding-ada-002" + ], + "name": "model", + "display_name": "Model", + "advanced": false, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "model_kwargs": { + "type": "NestedDict", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": {}, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "model_kwargs", + "display_name": "Model Kwargs", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "openai_api_base": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": true, + "name": "openai_api_base", + "display_name": "OpenAI API Base", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_api_key": { + "type": "str", + "required": true, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": true, + "name": "openai_api_key", + "display_name": "OpenAI API Key", + "advanced": false, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"], + "value": "" + }, + "openai_api_type": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": true, + "name": "openai_api_type", + "display_name": "OpenAI API Type", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_api_version": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "openai_api_version", + "display_name": "OpenAI API Version", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_organization": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "openai_organization", + "display_name": "OpenAI Organization", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "openai_proxy": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "openai_proxy", + "display_name": "OpenAI Proxy", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "request_timeout": { + "type": "float", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "request_timeout", + "display_name": "Request Timeout", + "advanced": true, + "dynamic": false, + "info": "", + "rangeSpec": { + "step_type": "float", + "min": -1, + "max": 1, + "step": 0.1 + }, + "load_from_db": false, + "title_case": false + }, + "show_progress_bar": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "show_progress_bar", + "display_name": "Show Progress Bar", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "skip_empty": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "skip_empty", + "display_name": "Skip Empty", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "tiktoken_enable": { + "type": "bool", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "value": true, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "tiktoken_enable", + "display_name": "TikToken Enable", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false + }, + "tiktoken_model_name": { + "type": "str", + "required": false, + "placeholder": "", + "list": false, + "show": true, + "multiline": false, + "fileTypes": [], + "file_path": "", + "password": false, + "name": "tiktoken_model_name", + "display_name": "TikToken Model Name", + "advanced": true, + "dynamic": false, + "info": "", + "load_from_db": false, + "title_case": false, + "input_types": ["Text"] + }, + "_type": "CustomComponent" + }, + "description": "Generate embeddings using OpenAI models.", + "base_classes": ["Embeddings"], + "display_name": "OpenAI Embeddings", + "documentation": "", + "custom_fields": { + "openai_api_key": null, + "default_headers": null, + "default_query": null, + "allowed_special": null, + "disallowed_special": null, + "chunk_size": null, + "client": null, + "deployment": null, + "embedding_ctx_length": null, + "max_retries": null, + "model": null, + "model_kwargs": null, + "openai_api_base": null, + "openai_api_type": null, + "openai_api_version": null, + "openai_organization": null, + "openai_proxy": null, + "request_timeout": null, + "show_progress_bar": null, + "skip_empty": null, + "tiktoken_enable": null, + "tiktoken_model_name": null + }, + "output_types": ["Embeddings"], + "field_formatters": {}, + "frozen": false, + "field_order": [], + "beta": false + }, + "id": "OpenAIEmbeddings-9TPjc" + }, + "selected": false, + "width": 384, + "height": 383, + "positionAbsolute": { + "x": 2814.0402191223047, + "y": 1955.9268168273086 + }, + "dragging": false + } + ], + "edges": [ + { + "source": "TextOutput-BDknO", + "target": "Prompt-xeI6K", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153TextOutput\u0153,\u0153id\u0153:\u0153TextOutput-BDknO\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153context\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "id": "reactflow__edge-TextOutput-BDknO{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153TextOutput\u0153,\u0153id\u0153:\u0153TextOutput-BDknO\u0153}-Prompt-xeI6K{\u0153fieldName\u0153:\u0153context\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "data": { + "targetHandle": { + "fieldName": "context", + "id": "Prompt-xeI6K", + "inputTypes": ["Document", "BaseOutputParser", "Record", "Text"], + "type": "str" + }, + "sourceHandle": { + "baseClasses": ["object", "Text", "str"], + "dataType": "TextOutput", + "id": "TextOutput-BDknO" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "selected": false + }, + { + "source": "ChatInput-yxMKE", + "target": "Prompt-xeI6K", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153,\u0153Record\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-yxMKE\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153question\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "id": "reactflow__edge-ChatInput-yxMKE{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153,\u0153Record\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-yxMKE\u0153}-Prompt-xeI6K{\u0153fieldName\u0153:\u0153question\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "data": { + "targetHandle": { + "fieldName": "question", + "id": "Prompt-xeI6K", + "inputTypes": ["Document", "BaseOutputParser", "Record", "Text"], + "type": "str" + }, + "sourceHandle": { + "baseClasses": ["Text", "str", "object", "Record"], + "dataType": "ChatInput", + "id": "ChatInput-yxMKE" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "selected": false + }, + { + "source": "Prompt-xeI6K", + "target": "OpenAIModel-EjXlN", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-EjXlN\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "id": "reactflow__edge-Prompt-xeI6K{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153}-OpenAIModel-EjXlN{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-EjXlN\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "data": { + "targetHandle": { + "fieldName": "input_value", + "id": "OpenAIModel-EjXlN", + "inputTypes": ["Text"], + "type": "str" + }, + "sourceHandle": { + "baseClasses": ["object", "Text", "str"], + "dataType": "Prompt", + "id": "Prompt-xeI6K" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "selected": false + }, + { + "source": "OpenAIModel-EjXlN", + "target": "ChatOutput-Q39I8", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-EjXlN\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-Q39I8\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "id": "reactflow__edge-OpenAIModel-EjXlN{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-EjXlN\u0153}-ChatOutput-Q39I8{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-Q39I8\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "data": { + "targetHandle": { + "fieldName": "input_value", + "id": "ChatOutput-Q39I8", + "inputTypes": ["Text"], + "type": "str" + }, + "sourceHandle": { + "baseClasses": ["object", "Text", "str"], + "dataType": "OpenAIModel", + "id": "OpenAIModel-EjXlN" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "selected": false + }, + { + "source": "File-t0a6a", + "target": "RecursiveCharacterTextSplitter-tR9QM", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153File\u0153,\u0153id\u0153:\u0153File-t0a6a\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153inputs\u0153,\u0153id\u0153:\u0153RecursiveCharacterTextSplitter-tR9QM\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153Record\u0153],\u0153type\u0153:\u0153Document\u0153}", + "id": "reactflow__edge-File-t0a6a{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153File\u0153,\u0153id\u0153:\u0153File-t0a6a\u0153}-RecursiveCharacterTextSplitter-tR9QM{\u0153fieldName\u0153:\u0153inputs\u0153,\u0153id\u0153:\u0153RecursiveCharacterTextSplitter-tR9QM\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153Record\u0153],\u0153type\u0153:\u0153Document\u0153}", + "data": { + "targetHandle": { + "fieldName": "inputs", + "id": "RecursiveCharacterTextSplitter-tR9QM", + "inputTypes": ["Document", "Record"], + "type": "Document" + }, + "sourceHandle": { + "baseClasses": ["Record"], + "dataType": "File", + "id": "File-t0a6a" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "selected": false + }, + { + "source": "OpenAIEmbeddings-ZlOk1", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Embeddings\u0153],\u0153dataType\u0153:\u0153OpenAIEmbeddings\u0153,\u0153id\u0153:\u0153OpenAIEmbeddings-ZlOk1\u0153}", + "target": "AstraDBSearch-41nRz", + "targetHandle": "{\u0153fieldName\u0153:\u0153embedding\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Embeddings\u0153}", + "data": { + "targetHandle": { + "fieldName": "embedding", + "id": "AstraDBSearch-41nRz", + "inputTypes": null, + "type": "Embeddings" + }, + "sourceHandle": { + "baseClasses": ["Embeddings"], + "dataType": "OpenAIEmbeddings", + "id": "OpenAIEmbeddings-ZlOk1" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "id": "reactflow__edge-OpenAIEmbeddings-ZlOk1{\u0153baseClasses\u0153:[\u0153Embeddings\u0153],\u0153dataType\u0153:\u0153OpenAIEmbeddings\u0153,\u0153id\u0153:\u0153OpenAIEmbeddings-ZlOk1\u0153}-AstraDBSearch-41nRz{\u0153fieldName\u0153:\u0153embedding\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Embeddings\u0153}" + }, + { + "source": "ChatInput-yxMKE", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153,\u0153Record\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-yxMKE\u0153}", + "target": "AstraDBSearch-41nRz", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "data": { + "targetHandle": { + "fieldName": "input_value", + "id": "AstraDBSearch-41nRz", + "inputTypes": ["Text"], + "type": "str" + }, + "sourceHandle": { + "baseClasses": ["Text", "str", "object", "Record"], + "dataType": "ChatInput", + "id": "ChatInput-yxMKE" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "id": "reactflow__edge-ChatInput-yxMKE{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153,\u0153Record\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-yxMKE\u0153}-AstraDBSearch-41nRz{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" + }, + { + "source": "RecursiveCharacterTextSplitter-tR9QM", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153RecursiveCharacterTextSplitter\u0153,\u0153id\u0153:\u0153RecursiveCharacterTextSplitter-tR9QM\u0153}", + "target": "AstraDB-eUCSS", + "targetHandle": "{\u0153fieldName\u0153:\u0153inputs\u0153,\u0153id\u0153:\u0153AstraDB-eUCSS\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Record\u0153}", + "data": { + "targetHandle": { + "fieldName": "inputs", + "id": "AstraDB-eUCSS", + "inputTypes": null, + "type": "Record" + }, + "sourceHandle": { + "baseClasses": ["Record"], + "dataType": "RecursiveCharacterTextSplitter", + "id": "RecursiveCharacterTextSplitter-tR9QM" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "id": "reactflow__edge-RecursiveCharacterTextSplitter-tR9QM{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153RecursiveCharacterTextSplitter\u0153,\u0153id\u0153:\u0153RecursiveCharacterTextSplitter-tR9QM\u0153}-AstraDB-eUCSS{\u0153fieldName\u0153:\u0153inputs\u0153,\u0153id\u0153:\u0153AstraDB-eUCSS\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Record\u0153}", + "selected": false + }, + { + "source": "OpenAIEmbeddings-9TPjc", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Embeddings\u0153],\u0153dataType\u0153:\u0153OpenAIEmbeddings\u0153,\u0153id\u0153:\u0153OpenAIEmbeddings-9TPjc\u0153}", + "target": "AstraDB-eUCSS", + "targetHandle": "{\u0153fieldName\u0153:\u0153embedding\u0153,\u0153id\u0153:\u0153AstraDB-eUCSS\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Embeddings\u0153}", + "data": { + "targetHandle": { + "fieldName": "embedding", + "id": "AstraDB-eUCSS", + "inputTypes": null, + "type": "Embeddings" + }, + "sourceHandle": { + "baseClasses": ["Embeddings"], + "dataType": "OpenAIEmbeddings", + "id": "OpenAIEmbeddings-9TPjc" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "id": "reactflow__edge-OpenAIEmbeddings-9TPjc{\u0153baseClasses\u0153:[\u0153Embeddings\u0153],\u0153dataType\u0153:\u0153OpenAIEmbeddings\u0153,\u0153id\u0153:\u0153OpenAIEmbeddings-9TPjc\u0153}-AstraDB-eUCSS{\u0153fieldName\u0153:\u0153embedding\u0153,\u0153id\u0153:\u0153AstraDB-eUCSS\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Embeddings\u0153}", + "selected": false + }, + { + "source": "AstraDBSearch-41nRz", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153AstraDBSearch\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153}", + "target": "TextOutput-BDknO", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-BDknO\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "data": { + "targetHandle": { + "fieldName": "input_value", + "id": "TextOutput-BDknO", + "inputTypes": ["Record", "Text"], + "type": "str" + }, + "sourceHandle": { + "baseClasses": ["Record"], + "dataType": "AstraDBSearch", + "id": "AstraDBSearch-41nRz" + } + }, + "style": { + "stroke": "#555" + }, + "className": "stroke-gray-900 stroke-connection", + "id": "reactflow__edge-AstraDBSearch-41nRz{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153AstraDBSearch\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153}-TextOutput-BDknO{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-BDknO\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" + } + ], + "viewport": { + "x": -259.6782520315529, + "y": 90.3428735006047, + "zoom": 0.2687057134854984 + } + }, + "description": "Visit https://pre-release.langflow.org/tutorials/rag-with-astradb for a detailed guide of this project.\nThis project give you both Ingestion and RAG in a single file. You'll need to visit https://astra.datastax.com/ to create an Astra DB instance, your Token and grab an API Endpoint.\nRunning this project requires you to add a file in the Files component, then define a Collection Name and click on the Play icon on the Astra DB component. \n\nAfter the ingestion ends you are ready to click on the Run button at the lower left corner and start asking questions about your data.", + "name": "Vector Store RAG", + "last_tested_version": "1.0.0a0", + "is_component": false +} diff --git a/docs/static/img/astra-rag-flow-run.png b/docs/static/img/astra-rag-flow-run.png index 8a1c849eb..b95b8a431 100644 Binary files a/docs/static/img/astra-rag-flow-run.png and b/docs/static/img/astra-rag-flow-run.png differ diff --git a/docs/static/img/global-env.png b/docs/static/img/global-env.png new file mode 100644 index 000000000..763444dc4 Binary files /dev/null and b/docs/static/img/global-env.png differ diff --git a/docs/static/img/playground-chat.png b/docs/static/img/playground-chat.png new file mode 100644 index 000000000..d2625c28f Binary files /dev/null and b/docs/static/img/playground-chat.png differ diff --git a/example.har b/example.har index 5021c7da5..a4c59bf31 100644 --- a/example.har +++ b/example.har @@ -28,8 +28,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -80,8 +86,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -132,8 +144,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -184,8 +202,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -236,8 +260,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -282,16 +312,28 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, { "name": "Referer", "value": "http://localhost:3000/flows" }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -315,7 +357,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "[{\"name\":\"Awesome Euclid\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-m2yFu\",\"type\":\"genericNode\",\"position\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"transcription\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"create an image prompt based on the song's lyrics to be used as the album cover of this song:\\n\\nlyrics:\\n{transcription}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"transcription\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"transcription\",\"display_name\":\"transcription\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"transcription\"],\"template\":[\"transcription\",\"question\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-m2yFu\"},\"selected\":false,\"positionAbsolute\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-urapv\",\"type\":\"genericNode\",\"position\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-urapv\"},\"selected\":false,\"positionAbsolute\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"dragging\":false},{\"width\":384,\"height\":806,\"id\":\"CustomComponent-IEIUl\",\"type\":\"genericNode\",\"position\":{\"x\":2364.865919667005,\"y\":88.43094097025096},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom platformdirs import user_cache_dir\\nimport base64\\nfrom PIL import Image\\nfrom io import BytesIO\\nfrom openai import OpenAI\\nfrom pathlib import Path\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Image generator\\\"\\n description: str = \\\"generate images using Dall-E\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\",\\\"input_types\\\":[\\\"str\\\"]},\\n \\\"api_key\\\":{\\\"display_name\\\":\\\"OpenAI API key\\\",\\\"password\\\":True},\\n \\\"model\\\":{\\\"display_name\\\":\\\"Model name\\\",\\\"advanced\\\":True,\\\"options\\\":[\\\"dall-e-2\\\",\\\"dall-e-3\\\"], \\\"value\\\":\\\"dall-e-3\\\"},\\n \\\"file_name\\\":{\\\"display_name\\\":\\\"File Name\\\"},\\n \\\"output_format\\\":{\\\"display_name\\\":\\\"Output format\\\",\\\"options\\\":[\\\"jpeg\\\",\\\"png\\\"],\\\"value\\\":\\\"jpeg\\\"},\\n \\\"width\\\":{\\\"display_name\\\":\\\"Width\\\" ,\\\"value\\\":1024},\\n \\\"height\\\":{\\\"display_name\\\":\\\"Height\\\", \\\"value\\\":1024}\\n }\\n\\n def build(self, prompt:str,api_key:str,model:str,file_name:str,output_format:str,width:int,height:int):\\n client = OpenAI(api_key=api_key)\\n cache_dir = Path(user_cache_dir(\\\"langflow\\\"))\\n images_dir = cache_dir / \\\"images\\\"\\n images_dir.mkdir(parents=True, exist_ok=True)\\n image_path = images_dir / f\\\"{file_name}.{output_format}\\\"\\n response = client.images.generate(\\n model=model,\\n prompt=prompt,\\n size=f\\\"{height}x{width}\\\",\\n response_format=\\\"b64_json\\\",\\n n=1,\\n )\\n # Decode base64-encoded image string\\n binary_data = base64.b64decode(response.data[0].b64_json)\\n # Create PIL Image object from binary image data\\n image_pil = Image.open(BytesIO(binary_data))\\n image_pil.save(image_path, format=output_format.upper())\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"api_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"api_key\",\"display_name\":\"OpenAI API key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"file_name\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"file_name\",\"display_name\":\"File Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"album\"},\"height\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"height\",\"display_name\":\"Height\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"dall-e-3\",\"password\":false,\"options\":[\"dall-e-2\",\"dall-e-3\"],\"name\":\"model\",\"display_name\":\"Model name\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"output_format\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"jpeg\",\"password\":false,\"options\":[\"jpeg\",\"png\"],\"name\":\"output_format\",\"display_name\":\"Output format\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"width\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"width\",\"display_name\":\"Width\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false}},\"description\":\"generate images using Dall-E\",\"base_classes\":[\"Data\"],\"display_name\":\"Image generator\",\"custom_fields\":{\"api_key\":null,\"file_name\":null,\"height\":null,\"model\":null,\"output_format\":null,\"prompt\":null,\"width\":null},\"output_types\":[\"Data\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-IEIUl\"},\"selected\":false,\"positionAbsolute\":{\"x\":2364.865919667005,\"y\":88.43094097025096}},{\"width\":384,\"height\":338,\"id\":\"LLMChain-KlJb3\",\"type\":\"genericNode\",\"position\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-KlJb3\"},\"selected\":false,\"positionAbsolute\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-bCuc0\",\"type\":\"genericNode\",\"position\":{\"x\":1747.8107777342625,\"y\":319.13729017446667},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Chain) -> str:\\n result = param.run({})\\n self.status = result\\n return result\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Chain\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"str\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-bCuc0\"},\"selected\":false,\"positionAbsolute\":{\"x\":1747.8107777342625,\"y\":319.13729017446667}}],\"edges\":[{\"source\":\"LLMChain-KlJb3\",\"target\":\"CustomComponent-bCuc0\",\"sourceHandle\":\"{œbaseClassesœ:[œChainœ,œCallableœ],œdataTypeœ:œLLMChainœ,œidœ:œLLMChain-KlJb3œ}\",\"targetHandle\":\"{œfieldNameœ:œparamœ,œidœ:œCustomComponent-bCuc0œ,œinputTypesœ:null,œtypeœ:œChainœ}\",\"id\":\"reactflow__edge-LLMChain-KlJb3{œbaseClassesœ:[œChainœ,œCallableœ],œdataTypeœ:œLLMChainœ,œidœ:œLLMChain-KlJb3œ}-CustomComponent-bCuc0{œfieldNameœ:œparamœ,œidœ:œCustomComponent-bCuc0œ,œinputTypesœ:null,œtypeœ:œChainœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"param\",\"id\":\"CustomComponent-bCuc0\",\"inputTypes\":null,\"type\":\"Chain\"},\"sourceHandle\":{\"baseClasses\":[\"Chain\",\"Callable\"],\"dataType\":\"LLMChain\",\"id\":\"LLMChain-KlJb3\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"ChatOpenAI-urapv\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-urapvœ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-urapv{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-urapvœ}-LLMChain-KlJb3{œfieldNameœ:œllmœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-urapv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-m2yFu\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{œbaseClassesœ:[œPromptTemplateœ,œStringPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-m2yFuœ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"id\":\"reactflow__edge-PromptTemplate-m2yFu{œbaseClassesœ:[œPromptTemplateœ,œStringPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-m2yFuœ}-LLMChain-KlJb3{œfieldNameœ:œpromptœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-m2yFu\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-bCuc0\",\"target\":\"CustomComponent-IEIUl\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-bCuc0œ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œCustomComponent-IEIUlœ,œinputTypesœ:[œstrœ],œtypeœ:œstrœ}\",\"id\":\"reactflow__edge-CustomComponent-bCuc0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-bCuc0œ}-CustomComponent-IEIUl{œfieldNameœ:œpromptœ,œidœ:œCustomComponent-IEIUlœ,œinputTypesœ:[œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"CustomComponent-IEIUl\",\"inputTypes\":[\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-bCuc0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":92.23454077990459,\"y\":183.8125619056221,\"zoom\":0.6070974421975234}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:33:18.503954\",\"folder\":null,\"id\":\"fe142ce5-32dc-4955-b186-672ced662f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Darwin\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"OpenAI-3ZVDh\",\"type\":\"genericNode\",\"position\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":256,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-davinci-003\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-3ZVDh\"},\"selected\":true,\"positionAbsolute\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-RFYXY\",\"type\":\"genericNode\",\"position\":{\"x\":586.672100458868,\"y\":10.967049167706678},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RFYXY\"},\"positionAbsolute\":{\"x\":586.672100458868,\"y\":10.967049167706678}},{\"width\":384,\"height\":242,\"id\":\"ChatPromptTemplate-ce1sg\",\"type\":\"genericNode\",\"position\":{\"x\":395.598984452791,\"y\":612.188491773035},\"data\":{\"type\":\"ChatPromptTemplate\",\"node\":{\"template\":{\"messages\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"messages\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseMessagePromptTemplate\",\"list\":true},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatPromptTemplate\"},\"description\":\"A prompt template for chat models.\",\"base_classes\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"display_name\":\"ChatPromptTemplate\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\",\"beta\":false,\"error\":null},\"id\":\"ChatPromptTemplate-ce1sg\"},\"selected\":false,\"positionAbsolute\":{\"x\":395.598984452791,\"y\":612.188491773035},\"dragging\":false}],\"edges\":[{\"source\":\"OpenAI-3ZVDh\",\"sourceHandle\":\"{œbaseClassesœ:[œOpenAIœ,œBaseLLMœ,œBaseOpenAIœ,œBaseLanguageModelœ],œdataTypeœ:œOpenAIœ,œidœ:œOpenAI-3ZVDhœ}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"dataType\":\"OpenAI\",\"id\":\"OpenAI-3ZVDh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAI-3ZVDh{œbaseClassesœ:[œOpenAIœ,œBaseLLMœ,œBaseOpenAIœ,œBaseLanguageModelœ],œdataTypeœ:œOpenAIœ,œidœ:œOpenAI-3ZVDhœ}-LLMChain-RFYXY{œfieldNameœ:œllmœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"ChatPromptTemplate-ce1sg\",\"sourceHandle\":\"{œbaseClassesœ:[œChatPromptTemplateœ,œBaseChatPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œChatPromptTemplateœ,œidœ:œChatPromptTemplate-ce1sgœ}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"ChatPromptTemplate\",\"id\":\"ChatPromptTemplate-ce1sg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatPromptTemplate-ce1sg{œbaseClassesœ:[œChatPromptTemplateœ,œBaseChatPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œChatPromptTemplateœ,œidœ:œChatPromptTemplate-ce1sgœ}-LLMChain-RFYXY{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":8.832868402772647,\"y\":189.85443326477025,\"zoom\":0.6070974421975235}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:50:19.584160\",\"folder\":null,\"id\":\"103766f0-1f50-427a-9ba7-2ab73343c524\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Easley\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VPh47\",\"type\":\"genericNode\",\"position\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VPh47\"},\"selected\":false,\"positionAbsolute\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-NgFyo\",\"type\":\"genericNode\",\"position\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-NgFyo\"},\"selected\":false,\"positionAbsolute\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-oAFjh\",\"type\":\"genericNode\",\"position\":{\"x\":-342.62522294052764,\"y\":391.20629510686103},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"links\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Answer everything with links\\n{links}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"links\",\"display_name\":\"links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"links\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-oAFjh\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-342.62522294052764,\"y\":391.20629510686103}}],\"edges\":[{\"source\":\"ChatOpenAI-VPh47\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseChatModelœ,œChatOpenAIœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VPh47œ}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VPh47\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VPh47{œbaseClassesœ:[œBaseChatModelœ,œChatOpenAIœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VPh47œ}-LLMChain-NgFyo{œfieldNameœ:œllmœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"PromptTemplate-oAFjh\",\"sourceHandle\":\"{œbaseClassesœ:[œBasePromptTemplateœ,œStringPromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-oAFjhœ}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-oAFjh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-oAFjh{œbaseClassesœ:[œBasePromptTemplateœ,œStringPromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-oAFjhœ}-LLMChain-NgFyo{œfieldNameœ:œpromptœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":338.6546182690814,\"y\":53.026340800283265,\"zoom\":0.7169776240079143}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:53:25.148460\",\"folder\":null,\"id\":\"a794fc48-5e9b-42a3-924f-7fe610500035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"(D) Basic Chat (1) (4)\",\"description\":\"Simplest possible chat model\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-fBcfh\",\"type\":\"genericNode\",\"position\":{\"x\":228.87326389541306,\"y\":465.8628482073749},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false,\"value\":60},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\"},\"id\":\"ChatOpenAI-fBcfh\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":228.87326389541306,\"y\":465.8628482073749}},{\"width\":384,\"height\":310,\"id\":\"ConversationChain-bVNex\",\"type\":\"genericNode\",\"position\":{\"x\":806,\"y\":554},\"data\":{\"type\":\"ConversationChain\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"_type\":\"default\"},\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLMOutputParser\",\"list\":false},\"prompt\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"input_variables\":[\"history\",\"input\"],\"output_parser\":null,\"partial_variables\":{},\"template\":\"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\\n\\nCurrent conversation:\\n{history}\\nHuman: {input}\\nAI:\",\"template_format\":\"f-string\",\"validate_template\":true,\"_type\":\"prompt\"},\"password\":false,\"name\":\"prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"input\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"llm_kwargs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"response\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_final_only\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_final_only\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationChain\"},\"description\":\"Chain to have a conversation and load context from memory.\",\"base_classes\":[\"ConversationChain\",\"Chain\",\"LLMChain\",\"function\"],\"display_name\":\"ConversationChain\",\"documentation\":\"\"},\"id\":\"ConversationChain-bVNex\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":806,\"y\":554}}],\"edges\":[{\"source\":\"ChatOpenAI-fBcfh\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseChatModelœ,œBaseLanguageModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-fBcfhœ}\",\"target\":\"ConversationChain-bVNex\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œConversationChain-bVNexœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"className\":\"stroke-gray-900 stroke-connection\",\"id\":\"reactflow__edge-ChatOpenAI-fBcfh{œbaseClassesœ:[œBaseChatModelœ,œBaseLanguageModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-fBcfhœ}-ConversationChain-bVNex{œfieldNameœ:œllmœ,œidœ:œConversationChain-bVNexœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-fBcfh\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"ConversationChain-bVNex\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}},\"style\":{\"stroke\":\"#555\"},\"animated\":false}],\"viewport\":{\"x\":-118.21416568593895,\"y\":-240.64815770363373,\"zoom\":0.7642485855675408}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:57:55.879806\",\"folder\":null,\"id\":\"bddebeea-b80a-4b28-8895-c4425687dcce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Directory Loader\",\"description\":\"Generic File Loader\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import os\\n\\nfrom langchain.schema import Document\\nfrom langflow import CustomComponent\\nimport glob\\n\\nclass DirectoryLoaderComponent(CustomComponent):\\n display_name: str = \\\"Directory Loader\\\"\\n description: str = \\\"Generic File Loader\\\"\\n beta = True\\n loaders_info = [\\n {\\n \\\"loader\\\": \\\"AirbyteJSONLoader\\\",\\n \\\"name\\\": \\\"Airbyte JSON (.jsonl)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.AirbyteJSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"jsonl\\\"],\\n \\\"allowdTypes\\\": [\\\"jsonl\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"JSONLoader\\\",\\n \\\"name\\\": \\\"JSON (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.JSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"json\\\"],\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n \\\"kwargs\\\": {\\\"jq_schema\\\": \\\".\\\", \\\"text_content\\\": False}\\n },\\n {\\n \\\"loader\\\": \\\"BSHTMLLoader\\\",\\n \\\"name\\\": \\\"BeautifulSoup4 HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.BSHTMLLoader\\\",\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CSVLoader\\\",\\n \\\"name\\\": \\\"CSV (.csv)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CSVLoader\\\",\\n \\\"defaultFor\\\": [\\\"csv\\\"],\\n \\\"allowdTypes\\\": [\\\"csv\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CoNLLULoader\\\",\\n \\\"name\\\": \\\"CoNLL-U (.conllu)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CoNLLULoader\\\",\\n \\\"defaultFor\\\": [\\\"conllu\\\"],\\n \\\"allowdTypes\\\": [\\\"conllu\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"EverNoteLoader\\\",\\n \\\"name\\\": \\\"EverNote (.enex)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.EverNoteLoader\\\",\\n \\\"defaultFor\\\": [\\\"enex\\\"],\\n \\\"allowdTypes\\\": [\\\"enex\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"FacebookChatLoader\\\",\\n \\\"name\\\": \\\"Facebook Chat (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.FacebookChatLoader\\\",\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"OutlookMessageLoader\\\",\\n \\\"name\\\": \\\"Outlook Message (.msg)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.OutlookMessageLoader\\\",\\n \\\"defaultFor\\\": [\\\"msg\\\"],\\n \\\"allowdTypes\\\": [\\\"msg\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"PyPDFLoader\\\",\\n \\\"name\\\": \\\"PyPDF (.pdf)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.PyPDFLoader\\\",\\n \\\"defaultFor\\\": [\\\"pdf\\\"],\\n \\\"allowdTypes\\\": [\\\"pdf\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"STRLoader\\\",\\n \\\"name\\\": \\\"Subtitle (.str)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.STRLoader\\\",\\n \\\"defaultFor\\\": [\\\"str\\\"],\\n \\\"allowdTypes\\\": [\\\"str\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"TextLoader\\\",\\n \\\"name\\\": \\\"Text (.txt)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.TextLoader\\\",\\n \\\"defaultFor\\\": [\\\"txt\\\"],\\n \\\"allowdTypes\\\": [\\\"txt\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredEmailLoader\\\",\\n \\\"name\\\": \\\"Unstructured Email (.eml)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredEmailLoader\\\",\\n \\\"defaultFor\\\": [\\\"eml\\\"],\\n \\\"allowdTypes\\\": [\\\"eml\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredHTMLLoader\\\",\\n \\\"name\\\": \\\"Unstructured HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredHTMLLoader\\\",\\n \\\"defaultFor\\\": [\\\"html\\\", \\\"htm\\\"],\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredMarkdownLoader\\\",\\n \\\"name\\\": \\\"Unstructured Markdown (.md)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredMarkdownLoader\\\",\\n \\\"defaultFor\\\": [\\\"md\\\"],\\n \\\"allowdTypes\\\": [\\\"md\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredPowerPointLoader\\\",\\n \\\"name\\\": \\\"Unstructured PowerPoint (.pptx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredPowerPointLoader\\\",\\n \\\"defaultFor\\\": [\\\"pptx\\\"],\\n \\\"allowdTypes\\\": [\\\"pptx\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredWordLoader\\\",\\n \\\"name\\\": \\\"Unstructured Word (.docx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredWordLoader\\\",\\n \\\"defaultFor\\\": [\\\"docx\\\"],\\n \\\"allowdTypes\\\": [\\\"docx\\\"],\\n },\\n]\\n\\n\\n def build_config(self):\\n loader_options = [\\\"Automatic\\\"] + [\\n loader_info[\\\"name\\\"] for loader_info in self.loaders_info\\n ]\\n\\n file_types = []\\n suffixes = []\\n\\n for loader_info in self.loaders_info:\\n if \\\"allowedTypes\\\" in loader_info:\\n file_types.extend(loader_info[\\\"allowedTypes\\\"])\\n suffixes.extend([f\\\".{ext}\\\" for ext in loader_info[\\\"allowedTypes\\\"]])\\n\\n return {\\n \\\"directory_path\\\": {\\n \\\"display_name\\\": \\\"Directory Path\\\",\\n \\\"required\\\": True,\\n },\\n \\\"loader\\\": {\\n \\\"display_name\\\": \\\"Loader\\\",\\n \\\"is_list\\\": True,\\n \\\"required\\\": True,\\n \\\"options\\\": loader_options,\\n \\\"value\\\": \\\"Automatic\\\",\\n },\\n }\\n\\n def build(self, directory_path: str, loader: str) -> Document:\\n # Verifique se o diretório existe\\n if not os.path.exists(directory_path):\\n raise ValueError(f\\\"Directory not found: {directory_path}\\\")\\n\\n files = glob.glob(directory_path + \\\"/*.*\\\")\\n\\n\\n loader_info = None\\n if loader == \\\"Automatic\\\":\\n for file in files:\\n file_type = file.split(\\\".\\\")[-1]\\n\\n\\n for info in self.loaders_info:\\n if \\\"defaultFor\\\" in info:\\n if file_type in info[\\\"defaultFor\\\"]:\\n loader_info = info\\n break\\n if loader_info:\\n break\\n\\n if not loader_info:\\n raise ValueError(\\n \\\"No default loader found for any file in the directory\\\"\\n )\\n\\n else:\\n for info in self.loaders_info:\\n if info[\\\"name\\\"] == loader:\\n loader_info = info\\n break\\n\\n if not loader_info:\\n raise ValueError(f\\\"Loader {loader} not found in the loader info list\\\")\\n\\n loader_import = loader_info[\\\"import\\\"]\\n module_name, class_name = loader_import.rsplit(\\\".\\\", 1)\\n\\n try:\\n # Importe o loader dinamicamente\\n loader_module = __import__(module_name, fromlist=[class_name])\\n loader_instance = getattr(loader_module, class_name)\\n except ImportError as e:\\n raise ValueError(\\n f\\\"Loader {loader} could not be imported\\\\nLoader info:\\\\n{loader_info}\\\"\\n ) from e\\n\\n results = []\\n for file in files:\\n file_path = os.path.join(directory_path, file)\\n kwargs = loader_info.get(\\\"kwargs\\\", {})\\n result = loader_instance(file_path=file_path, **kwargs).load()\\n results.append(result)\\n self.status = results\\n return results\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"directory_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"directory_path\",\"display_name\":\"Directory Path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"/Users/ogabrielluiz/Projects/langflow2/docs\"},\"loader\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"Automatic\",\"password\":false,\"options\":[\"Automatic\",\"Airbyte JSON (.jsonl)\",\"JSON (.json)\",\"BeautifulSoup4 HTML (.html, .htm)\",\"CSV (.csv)\",\"CoNLL-U (.conllu)\",\"EverNote (.enex)\",\"Facebook Chat (.json)\",\"Outlook Message (.msg)\",\"PyPDF (.pdf)\",\"Subtitle (.str)\",\"Text (.txt)\",\"Unstructured Email (.eml)\",\"Unstructured HTML (.html, .htm)\",\"Unstructured Markdown (.md)\",\"Unstructured PowerPoint (.pptx)\",\"Unstructured Word (.docx)\"],\"name\":\"loader\",\"display_name\":\"Loader\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true}},\"description\":\"Generic File Loader\",\"base_classes\":[\"Document\"],\"display_name\":\"Directory Loader\",\"custom_fields\":{\"directory_path\":null,\"loader\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Ip6tG\"},\"id\":\"CustomComponent-Ip6tG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:38.570303\",\"folder\":null,\"id\":\"5fe4debc-b6a7-45d4-a694-c02d8aa93b08\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Whisper Transcriber\",\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import Optional, List, Dict, Union\\nfrom langflow.field_typing import (\\n AgentExecutor,\\n BaseChatMemory,\\n BaseLanguageModel,\\n BaseLLM,\\n BaseLoader,\\n BaseMemory,\\n BaseOutputParser,\\n BasePromptTemplate,\\n BaseRetriever,\\n Callable,\\n Chain,\\n ChatPromptTemplate,\\n Data,\\n Document,\\n Embeddings,\\n NestedDict,\\n Object,\\n PromptTemplate,\\n TextSplitter,\\n Tool,\\n VectorStore,\\n)\\n\\nfrom openai import OpenAI\\nclass Component(CustomComponent):\\n display_name: str = \\\"Whisper Transcriber\\\"\\n description: str = \\\"Converts audio to text using OpenAI's Whisper.\\\"\\n\\n def build_config(self):\\n return {\\\"audio\\\":{\\\"field_type\\\":\\\"file\\\",\\\"suffixes\\\":[\\\".mp3\\\", \\\".mp4\\\", \\\".m4a\\\"]},\\\"OpenAIKey\\\":{\\\"field_type\\\":\\\"str\\\",\\\"password\\\":True}}\\n\\n def build(self, audio:str, OpenAIKey:str) -> str:\\n \\n # TODO: if output path, persist & load it instead\\n \\n client = OpenAI(api_key=OpenAIKey)\\n \\n audio_file= open(audio, \\\"rb\\\")\\n transcript = client.audio.transcriptions.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file,\\n response_format=\\\"text\\\"\\n )\\n \\n \\n self.status = transcript\\n return transcript\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"OpenAIKey\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"OpenAIKey\",\"display_name\":\"OpenAIKey\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"audio\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"suffixes\":[\".mp3\",\".mp4\",\".m4a\"],\"password\":false,\"name\":\"audio\",\"display_name\":\"audio\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"file_path\":\"/Users/rodrigonader/Library/Caches/langflow/19b3e1c9-90bf-405f-898a-e982f47adf76/a3308ce7e9b10088fcd985aabb6d17b012c6b6e81ff8806356574474c9d10229.m4a\",\"value\":\"Audio Recording 2023-11-29 at 12.12.04.m4a\"}},\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"base_classes\":[\"str\"],\"display_name\":\"Whisper Transcriber\",\"custom_fields\":{\"OpenAIKey\":null,\"audio\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-GJRrs\"},\"id\":\"CustomComponent-GJRrs\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:39.710502\",\"folder\":null,\"id\":\"bd9e911d-46bd-429f-aa75-dd740430695e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Youtube Conversation\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":589,\"id\":\"CustomComponent-h0NSI\",\"type\":\"genericNode\",\"position\":{\"x\":714.9531293402755,\"y\":0.4994374160582993},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import requests\\nfrom langflow import CustomComponent\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.schema import Document\\nfrom langchain.document_loaders import YoutubeLoader\\n\\n# Example usage:\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"YouTube Transcript\\\"\\n description: str = \\\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\\\"\\n\\n def build_config(self):\\n return {\\\"url\\\": {\\\"multiline\\\": True, \\\"required\\\": True}}\\n\\n def build(self, url: str, llm: BaseLLM, dependencies: Document, language: str = \\\"en\\\") -> Document:\\n dependencies\\n response = requests.get(url)\\n loader = YoutubeLoader.from_youtube_url(url, add_video_info=True, language=[language])\\n result = loader.load()\\n self.repr_value = str(result)\\n return result\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"dependencies\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"dependencies\",\"display_name\":\"dependencies\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":false},\"language\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"en\",\"password\":false,\"name\":\"language\",\"display_name\":\"language\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\",\"base_classes\":[\"Document\"],\"display_name\":\"YouTube Transcript\",\"custom_fields\":{\"dependencies\":null,\"language\":null,\"llm\":null,\"url\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-h0NSI\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":714.9531293402755,\"y\":0.4994374160582993}},{\"width\":384,\"height\":629,\"id\":\"ChatOpenAI-q61Y2\",\"type\":\"genericNode\",\"position\":{\"x\":18,\"y\":625.5521045590924},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo-16k\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-q61Y2\"},\"selected\":false,\"positionAbsolute\":{\"x\":18,\"y\":625.5521045590924},\"dragging\":false},{\"width\":384,\"height\":539,\"id\":\"Chroma-gVhy7\",\"type\":\"genericNode\",\"position\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"data\":{\"type\":\"Chroma\",\"node\":{\"template\":{\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.Client\",\"list\":false},\"client_settings\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client_settings\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.config.Setting\",\"list\":true},\"documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":true},\"embedding\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"embedding\",\"display_name\":\"Embedding\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Embeddings\",\"list\":false},\"chroma_server_cors_allow_origins\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_cors_allow_origins\",\"display_name\":\"Chroma Server CORS Allow Origins\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"chroma_server_grpc_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_grpc_port\",\"display_name\":\"Chroma Server GRPC Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_host\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_host\",\"display_name\":\"Chroma Server Host\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_http_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_http_port\",\"display_name\":\"Chroma Server HTTP Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_ssl_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"chroma_server_ssl_enabled\",\"display_name\":\"Chroma Server SSL Enabled\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"collection_metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"collection_metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"collection_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"collection_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"ids\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"ids\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"metadatas\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadatas\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":true},\"persist\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"persist\",\"display_name\":\"Persist\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"persist_directory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"persist_directory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"search_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"{}\",\"password\":false,\"name\":\"search_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"NestedDict\",\"list\":false},\"_type\":\"Chroma\"},\"description\":\"Create a Chroma vectorstore from a raw documents.\",\"base_classes\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Chroma\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/chroma\",\"beta\":false,\"error\":null},\"id\":\"Chroma-gVhy7\"},\"selected\":false,\"positionAbsolute\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"dragging\":false},{\"width\":384,\"height\":501,\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"type\":\"genericNode\",\"position\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"data\":{\"type\":\"RecursiveCharacterTextSplitter\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\nfrom langflow import CustomComponent\\nfrom langchain.schema import Document\\nfrom langflow.utils.util import build_loader_repr_from_documents\\n\\n\\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\\n display_name: str = \\\"Recursive Character Text Splitter\\\"\\n description: str = \\\"Split text into chunks of a specified length.\\\"\\n documentation: str = \\\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\\\"\\n\\n def build_config(self):\\n return {\\n \\\"documents\\\": {\\n \\\"display_name\\\": \\\"Documents\\\",\\n \\\"info\\\": \\\"The documents to split.\\\",\\n },\\n \\\"separators\\\": {\\n \\\"display_name\\\": \\\"Separators\\\",\\n \\\"info\\\": 'The characters to split on.\\\\nIf left empty defaults to [\\\"\\\\\\\\n\\\\\\\\n\\\", \\\"\\\\\\\\n\\\", \\\" \\\", \\\"\\\"].',\\n \\\"is_list\\\": True,\\n },\\n \\\"chunk_size\\\": {\\n \\\"display_name\\\": \\\"Chunk Size\\\",\\n \\\"info\\\": \\\"The maximum length of each chunk.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 1000,\\n },\\n \\\"chunk_overlap\\\": {\\n \\\"display_name\\\": \\\"Chunk Overlap\\\",\\n \\\"info\\\": \\\"The amount of overlap between chunks.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 200,\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n documents: list[Document],\\n separators: Optional[list[str]] = None,\\n chunk_size: Optional[int] = 1000,\\n chunk_overlap: Optional[int] = 200,\\n ) -> list[Document]:\\n \\\"\\\"\\\"\\n Split text into chunks of a specified length.\\n\\n Args:\\n separators (list[str]): The characters to split on.\\n chunk_size (int): The maximum length of each chunk.\\n chunk_overlap (int): The amount of overlap between chunks.\\n length_function (function): The function to use to calculate the length of the text.\\n\\n Returns:\\n list[str]: The chunks of text.\\n \\\"\\\"\\\"\\n from langchain.text_splitter import RecursiveCharacterTextSplitter\\n\\n if separators == \\\"\\\":\\n separators = None\\n elif separators:\\n # check if the separators list has escaped characters\\n # if there are escaped characters, unescape them\\n separators = [x.encode().decode(\\\"unicode-escape\\\") for x in separators]\\n\\n # Make sure chunk_size and chunk_overlap are ints\\n if isinstance(chunk_size, str):\\n chunk_size = int(chunk_size)\\n if isinstance(chunk_overlap, str):\\n chunk_overlap = int(chunk_overlap)\\n splitter = RecursiveCharacterTextSplitter(\\n separators=separators,\\n chunk_size=chunk_size,\\n chunk_overlap=chunk_overlap,\\n )\\n\\n docs = splitter.split_documents(documents)\\n self.repr_value = build_loader_repr_from_documents(docs)\\n return docs\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"chunk_overlap\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"50\",\"password\":false,\"name\":\"chunk_overlap\",\"display_name\":\"Chunk Overlap\",\"advanced\":false,\"dynamic\":false,\"info\":\"The amount of overlap between chunks.\",\"type\":\"int\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"400\",\"password\":false,\"name\":\"chunk_size\",\"display_name\":\"Chunk Size\",\"advanced\":false,\"dynamic\":false,\"info\":\"The maximum length of each chunk.\",\"type\":\"int\",\"list\":false},\"documents\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"The documents to split.\",\"type\":\"Document\",\"list\":true},\"separators\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"separators\",\"display_name\":\"Separators\",\"advanced\":false,\"dynamic\":false,\"info\":\"The characters to split on.\\nIf left empty defaults to [\\\"\\\\n\\\\n\\\", \\\"\\\\n\\\", \\\" \\\", \\\"\\\"].\",\"type\":\"str\",\"list\":true,\"value\":[\" \"]}},\"description\":\"Split text into chunks of a specified length.\",\"base_classes\":[\"Document\"],\"display_name\":\"Recursive Character Text Splitter\",\"custom_fields\":{\"chunk_overlap\":null,\"chunk_size\":null,\"documents\":null,\"separators\":null},\"output_types\":[\"RecursiveCharacterTextSplitter\"],\"documentation\":\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\",\"beta\":true,\"error\":null},\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"selected\":false,\"positionAbsolute\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"dragging\":false},{\"width\":384,\"height\":367,\"id\":\"OpenAIEmbeddings-cduOO\",\"type\":\"genericNode\",\"position\":{\"x\":1405.1176670984544,\"y\":1029.459061269321},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{'Authorization': 'Bearer '}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-cduOO\"},\"selected\":false,\"positionAbsolute\":{\"x\":1405.1176670984544,\"y\":1029.459061269321}},{\"width\":384,\"height\":339,\"id\":\"RetrievalQA-4PmTB\",\"type\":\"genericNode\",\"position\":{\"x\":2711.7786966415715,\"y\":709.4450828605463},\"data\":{\"type\":\"RetrievalQA\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"combine_documents_chain\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"combine_documents_chain\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseCombineDocumentsChain\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"retriever\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"retriever\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseRetriever\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"query\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"result\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_source_documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_source_documents\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"RetrievalQA\"},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\",\"beta\":false,\"error\":null},\"id\":\"RetrievalQA-4PmTB\"},\"selected\":false,\"positionAbsolute\":{\"x\":2711.7786966415715,\"y\":709.4450828605463}},{\"width\":384,\"height\":333,\"id\":\"CombineDocsChain-yk0JF\",\"type\":\"genericNode\",\"position\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"data\":{\"type\":\"CombineDocsChain\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"chain_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"stuff\",\"password\":false,\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"name\":\"chain_type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"_type\":\"load_qa_chain\"},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"\",\"beta\":false,\"error\":null},\"id\":\"CombineDocsChain-yk0JF\"},\"selected\":false,\"positionAbsolute\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"dragging\":false},{\"width\":384,\"height\":417,\"id\":\"CustomComponent-y6Wg0\",\"type\":\"genericNode\",\"position\":{\"x\":39.400034102832365,\"y\":-499.03551482195707},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nimport subprocess\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\nfrom typing import List\\n\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"PIP Install\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n\\n def build(self, libs: List[str]) -> Document:\\n def install_package(package_name):\\n subprocess.check_call([\\\"pip\\\", \\\"install\\\", package_name])\\n for lib in libs:\\n install_package(lib)\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"libs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"libs\",\"display_name\":\"libs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"requests\",\"pytube\"]}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Document\"],\"display_name\":\"PIP Install\",\"custom_fields\":{\"libs\":null},\"output_types\":[],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-y6Wg0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":39.400034102832365,\"y\":-499.03551482195707}}],\"edges\":[{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œBaseLLMœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}-CustomComponent-h0NSI{œfieldNameœ:œllmœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œBaseLLMœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"BaseLLM\"}}},{\"source\":\"CustomComponent-y6Wg0\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-y6Wg0œ}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{œfieldNameœ:œdependenciesœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-y6Wg0{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-y6Wg0œ}-CustomComponent-h0NSI{œfieldNameœ:œdependenciesœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-y6Wg0\"},\"targetHandle\":{\"fieldName\":\"dependencies\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"CustomComponent-h0NSI\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-h0NSIœ}\",\"target\":\"RecursiveCharacterTextSplitter-1eaOX\",\"targetHandle\":\"{œfieldNameœ:œdocumentsœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-h0NSI{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-h0NSIœ}-RecursiveCharacterTextSplitter-1eaOX{œfieldNameœ:œdocumentsœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-h0NSI\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"inputTypes\":null,\"type\":\"Document\"}},\"selected\":false},{\"source\":\"OpenAIEmbeddings-cduOO\",\"sourceHandle\":\"{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-cduOOœ}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{œfieldNameœ:œembeddingœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAIEmbeddings-cduOO{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-cduOOœ}-Chroma-gVhy7{œfieldNameœ:œembeddingœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"dataType\":\"OpenAIEmbeddings\",\"id\":\"OpenAIEmbeddings-cduOO\"},\"targetHandle\":{\"fieldName\":\"embedding\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Embeddings\"}}},{\"source\":\"RecursiveCharacterTextSplitter-1eaOX\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{œfieldNameœ:œdocumentsœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-RecursiveCharacterTextSplitter-1eaOX{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ}-Chroma-gVhy7{œfieldNameœ:œdocumentsœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"RecursiveCharacterTextSplitter\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}\",\"target\":\"CombineDocsChain-yk0JF\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-yk0JFœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}-CombineDocsChain-yk0JF{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-yk0JFœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CombineDocsChain-yk0JF\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}}},{\"source\":\"CombineDocsChain-yk0JF\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œfunctionœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-yk0JFœ}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CombineDocsChain-yk0JF{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œfunctionœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-yk0JFœ}-RetrievalQA-4PmTB{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseCombineDocumentsChain\",\"function\"],\"dataType\":\"CombineDocsChain\",\"id\":\"CombineDocsChain-yk0JF\"},\"targetHandle\":{\"fieldName\":\"combine_documents_chain\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseCombineDocumentsChain\"}}},{\"source\":\"Chroma-gVhy7\",\"sourceHandle\":\"{œbaseClassesœ:[œVectorStoreœ,œChromaœ,œBaseRetrieverœ,œVectorStoreRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-gVhy7œ}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-Chroma-gVhy7{œbaseClassesœ:[œVectorStoreœ,œChromaœ,œBaseRetrieverœ,œVectorStoreRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-gVhy7œ}-RetrievalQA-4PmTB{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"dataType\":\"Chroma\",\"id\":\"Chroma-gVhy7\"},\"targetHandle\":{\"fieldName\":\"retriever\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseRetriever\"}}}],\"viewport\":{\"x\":189.54413265004274,\"y\":259.89949657174975,\"zoom\":0.291027508374689}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:59:08.830269\",\"folder\":null,\"id\":\"bc7eb94b-6fc6-49cb-9b19-35347ba51afa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Web Scraper - Content & Links\",\"description\":\"Fetch and parse text and links from a given URL.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-H7PBy\",\"type\":\"genericNode\",\"position\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-H7PBy\"},\"selected\":false,\"positionAbsolute\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VSAdc\",\"type\":\"genericNode\",\"position\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VSAdc\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859}},{\"width\":384,\"height\":374,\"data\":{\"id\":\"GroupNode-WXPMk\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"give me links\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-f6nOg{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-0XtUN{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}-CustomComponent-ODIcp{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-CustomComponent-FGzJJ{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-PromptTemplate-H9Udy{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}-CustomComponent-whsQ5{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"id\":\"GroupNode-WXPMk\",\"position\":{\"x\":873.0737834322758,\"y\":598.8401015776466},\"type\":\"genericNode\",\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":873.0737834322758,\"y\":598.8401015776466}}],\"edges\":[{\"source\":\"ChatOpenAI-VSAdc\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VSAdcœ}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VSAdc\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VSAdc{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VSAdcœ}-LLMChain-H7PBy{œfieldNameœ:œllmœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"GroupNode-WXPMk\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œGroupNode-WXPMkœ}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"GroupNode-WXPMk\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-GroupNode-WXPMk{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œGroupNode-WXPMkœ}-LLMChain-H7PBy{œfieldNameœ:œpromptœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":-348.6161822813733,\"y\":121.40545291211492,\"zoom\":0.6801854262029781}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:22:27.784647\",\"folder\":null,\"id\":\"efc3bf27-3cf1-4561-9a83-3df347572440\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Joliot\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-RQsU1\",\"type\":\"genericNode\",\"position\":{\"x\":514.4440482813261,\"y\":528.164086188516},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RQsU1\"},\"selected\":false,\"positionAbsolute\":{\"x\":514.4440482813261,\"y\":528.164086188516}},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-NTTcv\",\"type\":\"genericNode\",\"position\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-NTTcv\"},\"selected\":false,\"positionAbsolute\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055}},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-VELMV\",\"type\":\"genericNode\",\"position\":{\"x\":-222,\"y\":682.560723386973},\"data\":{\"id\":\"PromptTemplate-VELMV\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-f6nOg{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-0XtUN{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}-CustomComponent-ODIcp{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-CustomComponent-FGzJJ{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-PromptTemplate-H9Udy{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}-CustomComponent-whsQ5{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"selected\":false,\"positionAbsolute\":{\"x\":-222,\"y\":682.560723386973}}],\"edges\":[{\"source\":\"ChatOpenAI-NTTcv\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-NTTcvœ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-NTTcv{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-NTTcvœ}-LLMChain-RQsU1{œfieldNameœ:œllmœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-NTTcv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-VELMV\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-VELMVœ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"id\":\"reactflow__edge-PromptTemplate-VELMV{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-VELMVœ}-LLMChain-RQsU1{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-VELMV\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":298.29888454238517,\"y\":96.95765543775741,\"zoom\":0.5140569133280332}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:23:08.584967\",\"folder\":null,\"id\":\"5df79f1d-f592-4d59-8c0f-9f3c2f6465b1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Pasteur\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-cHel8\",\"type\":\"genericNode\",\"position\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-cHel8\"},\"selected\":false,\"positionAbsolute\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-LA6y0\",\"type\":\"genericNode\",\"position\":{\"x\":-272.94405331278074,\"y\":-603.148171441675},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-LA6y0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-272.94405331278074,\"y\":-603.148171441675}},{\"width\":384,\"height\":404,\"id\":\"CustomComponent-ZNoRM\",\"type\":\"genericNode\",\"position\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ZNoRM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"CustomComponent-zNSTv\",\"type\":\"genericNode\",\"position\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-zNSTv\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-Ihm2o\",\"type\":\"genericNode\",\"position\":{\"x\":-554.9404152016002,\"y\":683.6763775860567},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-Ihm2o\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-554.9404152016002,\"y\":683.6763775860567}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-6ST9l\",\"type\":\"genericNode\",\"position\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-6ST9l\"},\"selected\":false,\"positionAbsolute\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"dragging\":false},{\"width\":384,\"height\":654,\"id\":\"PromptTemplate-l35W1\",\"type\":\"genericNode\",\"position\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"display_name\":\"output_parser\"},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"input_types\"},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"display_name\":\"input_variables\"},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"partial_variables\"},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"display_name\":\"template\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"display_name\":\"template_format\"},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"display_name\":\"validate_template\"},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-l35W1\"},\"selected\":false,\"positionAbsolute\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"dragging\":false},{\"width\":384,\"height\":346,\"id\":\"CustomComponent-iTLf4\",\"type\":\"genericNode\",\"position\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"https://paperswithcode.com/\"}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-iTLf4\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-jWLUz\",\"type\":\"genericNode\",\"position\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-jWLUz\"},\"selected\":false,\"positionAbsolute\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"dragging\":false}],\"edges\":[{\"source\":\"ChatOpenAI-LA6y0\",\"target\":\"LLMChain-cHel8\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-LA6y0œ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-LA6y0{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-LA6y0œ}-LLMChain-cHel8{œfieldNameœ:œllmœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-LA6y0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}\",\"target\":\"CustomComponent-ZNoRM\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-ZNoRMœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-ZNoRM\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}-CustomComponent-ZNoRM{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-ZNoRMœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}\",\"target\":\"CustomComponent-Ihm2o\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-Ihm2oœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-Ihm2o\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}-CustomComponent-Ihm2o{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-Ihm2oœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-Ihm2o\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-Ihm2oœ}\",\"target\":\"CustomComponent-6ST9l\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-6ST9lœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-6ST9l\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-Ihm2o\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-Ihm2o{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-Ihm2oœ}-CustomComponent-6ST9l{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-6ST9lœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}\",\"target\":\"CustomComponent-zNSTv\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-zNSTvœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-zNSTv\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}-CustomComponent-zNSTv{œfieldNameœ:œurlœ,œidœ:œCustomComponent-zNSTvœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}-PromptTemplate-l35W1{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-6ST9l\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-6ST9lœ}\",\"target\":\"CustomComponent-jWLUz\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-jWLUzœ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-jWLUz\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-6ST9l\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-6ST9l{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-6ST9lœ}-CustomComponent-jWLUz{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-jWLUzœ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":false},{\"source\":\"CustomComponent-jWLUz\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-jWLUzœ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-jWLUz\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-jWLUz{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-jWLUzœ}-PromptTemplate-l35W1{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-ZNoRM\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ZNoRMœ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ZNoRM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ZNoRM{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ZNoRMœ}-PromptTemplate-l35W1{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"PromptTemplate-l35W1\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-l35W1œ}\",\"target\":\"LLMChain-cHel8\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-l35W1\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-mJqEg{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-mJqEgœ}-LLMChain-cHel8{œfieldNameœ:œpromptœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":206.6159172940935,\"y\":79.94375811155385,\"zoom\":0.5140569133280333}},\"is_component\":false,\"updated_at\":\"2023-12-06T00:23:04.515144\",\"folder\":null,\"id\":\"ecfb377a-7e88-405d-8d66-7560735ce446\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Lovelace\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:43:25.925753\",\"folder\":null,\"id\":\"30e71767-6128-40e4-9a6d-b9197b679971\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Custom Component\",\"description\":\"Create any custom component you want!\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Data) -> Data:\\n return param\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Data\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"CustomComponent\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-IxJqc\"},\"id\":\"CustomComponent-IxJqc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-05T22:08:27.080204\",\"folder\":null,\"id\":\"f3c56abb-96d8-4a09-80d3-f60181661b3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Wilson\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-05T23:49:58.272677\",\"folder\":null,\"id\":\"324499a6-17a6-49de-96b1-b88955ed2c3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Kowalevski\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:27.084387\",\"folder\":null,\"id\":\"e3168485-d31b-472a-907f-faf833bf7824\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Fermi\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.134463\",\"folder\":null,\"id\":\"d0ecea5d-bcf9-4b8e-88f0-3c243d309336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Friendly Ardinghelli\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.138184\",\"folder\":null,\"id\":\"a406912d-b0e2-4954-bef3-ee80c29eca3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Easley\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162908\",\"folder\":null,\"id\":\"57b32155-4c6e-4823-ad03-8dd09d8abc62\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Varahamihira\",\"description\":\"Create, Chain, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.135644\",\"folder\":null,\"id\":\"18daa0ff-2e5d-457a-95d7-710affec5c4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Joliot\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.139496\",\"folder\":null,\"id\":\"9255e938-280e-4ce7-91cd-8622126a7d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Carroll\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162240\",\"folder\":null,\"id\":\"a7a680b9-30b1-4438-ac24-da597de443aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Herschel\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:46:02.593504\",\"folder\":null,\"id\":\"37a439b0-7b1d-45e3-b4fa-5c73669bae3b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Joliot\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:04.845238\",\"folder\":null,\"id\":\"4d23fd0a-8ad5-46b9-bb99-eed4138e7426\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Babbage\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:41.899665\",\"folder\":null,\"id\":\"1c8ad5b9-5524-41fe-a762-52c75126b832\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Brown\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.702031\",\"folder\":null,\"id\":\"9d4c8e79-4904-4a51-a4bb-146c3d8db10e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Mahavira\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.786331\",\"folder\":null,\"id\":\"4ba370d1-1f8e-4a23-99aa-99e2cd9b7cbf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Gates\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.838989\",\"folder\":null,\"id\":\"992c3cd3-1d79-4986-8c04-88a34130fa30\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Mcclintock\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.932723\",\"folder\":null,\"id\":\"a65bfd13-44df-4090-aca0-5057e21e9997\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Feynman\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.931359\",\"folder\":null,\"id\":\"7a05dac5-c005-411d-9994-19d61e71ce78\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Perlman\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.054687\",\"folder\":null,\"id\":\"6db24541-7211-48e6-a792-1a4a99a0ef90\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Colden\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.078384\",\"folder\":null,\"id\":\"13ac42e8-9124-4bf4-9ea2-28671ef2d9a4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kaku\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:50:33.156776\",\"folder\":null,\"id\":\"79262d75-5c62-4b14-b067-f4297f5c912f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:13.295375\",\"folder\":null,\"id\":\"3b397e74-d8be-4728-9d6c-05f7c78106a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Mccarthy\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:27.632685\",\"folder\":null,\"id\":\"13f4e1fd-45eb-4271-92fd-0d70a31c61d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Lalande\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:54.628983\",\"folder\":null,\"id\":\"9cfd60d8-9311-47b0-b71b-f488f1940bc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Mirzakhani\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:52:52.622698\",\"folder\":null,\"id\":\"0d849403-0f75-455d-b4e4-0d622ee3305a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Brown\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:06.056636\",\"folder\":null,\"id\":\"8643ba14-52d6-4d36-9981-5fd37de5dd76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Kickass Watt\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:23.338727\",\"folder\":null,\"id\":\"818d3066-bf08-4bf9-adcd-739f8abbfa5d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:41.218861\",\"folder\":null,\"id\":\"28eff43e-0ecf-47bf-9851-f1492589978e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Optimistic Jennings\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:03.681106\",\"folder\":null,\"id\":\"68f59069-bc2a-464f-a983-4b61e32e01af\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Mirzakhani\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:31.761949\",\"folder\":null,\"id\":\"5d981c0e-81b3-44cc-a5be-8f55b92bfed5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:56:45.548598\",\"folder\":null,\"id\":\"e812ad47-47e8-422b-b94c-84fd0263c9c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Fermat\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:58:50.234270\",\"folder\":null,\"id\":\"82aaf449-e737-4699-9360-929ab6108dc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Albattani\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:59:53.946035\",\"folder\":null,\"id\":\"097cb080-274b-40ca-8dde-7900a949568a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kirch\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:00:51.745350\",\"folder\":null,\"id\":\"837d7b5f-8495-46a9-b00e-ad1b7ebb52f4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Kowalevski\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:02:53.336102\",\"folder\":null,\"id\":\"3ff079c2-d9f9-4da6-a22a-423fa35670ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Stallman\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:28.268357\",\"folder\":null,\"id\":\"c8b204dd-3d57-4bc8-aa13-1d559672e75b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Swirles\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:51.194455\",\"folder\":null,\"id\":\"a097f083-5880-4cf7-986b-51898bc68e11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dreamy Williams\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:04:36.678251\",\"folder\":null,\"id\":\"d9585f63-ce76-42ce-87bc-8e69601ea5c6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Hawking\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:05:13.672479\",\"folder\":null,\"id\":\"612a01d5-8c8d-4cc1-8c54-35626b7f4a6d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Kilby\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:10:37.047955\",\"folder\":null,\"id\":\"2d05a598-3cdf-452a-bd5d-b0e569e562e3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Insane Cori\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:12.426578\",\"folder\":null,\"id\":\"d1769a4a-c1e9-4d74-9273-1e76cfcf21f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Compassionate Tesla\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:52.806238\",\"folder\":null,\"id\":\"28c5d9dd-0466-4c80-9e58-b1e061cd358d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Goldstine\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:21:44.488510\",\"folder\":null,\"id\":\"b3c57e4f-28a1-4580-bf08-a9484bdd66e8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elegant Curie\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:23:47.610237\",\"folder\":null,\"id\":\"28fb024e-6ba1-4f5b-83b3-4742b3b8117c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Chandrasekhar\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:24:29.824530\",\"folder\":null,\"id\":\"d2b87cf7-9167-4030-8e9f-b8d9aa0cadee\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Nobel\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:26:51.210699\",\"folder\":null,\"id\":\"c2c9fbac-7d97-40c2-8055-dff608df9414\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Edison\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:27:35.822482\",\"folder\":null,\"id\":\"a55561cd-4b25-473f-bde5-884cbabb0d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Lichterman\",\"description\":\"Building Linguistic Labyrinths.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:29:09.259381\",\"folder\":null,\"id\":\"9c6fe6d4-8311-4fc6-8b02-2a816d7c059d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Bhaskara\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:31:36.053452\",\"folder\":null,\"id\":\"ef6fc1ab-aff8-45a1-8cd5-bc8e38565e4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Watt\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:32:26.765250\",\"folder\":null,\"id\":\"499b5351-9c09-4934-9f9d-a24be2fd8b24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Wien\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:33:23.648859\",\"folder\":null,\"id\":\"a57eda91-7f6e-410d-9990-385fe0c724f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Spence\",\"description\":\"Mapping Meaningful Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:34:22.576407\",\"folder\":null,\"id\":\"685f685e-8a1b-4b7e-9e21-6cdd72163c91\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Fermat\",\"description\":\"Create, Connect, Converse.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:35:44.920540\",\"folder\":null,\"id\":\"3e061766-b834-4fa4-ba9c-b060925d9703\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Volta\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:36:33.001572\",\"folder\":null,\"id\":\"135f2fd9-e005-40bc-a9bf-c25107388415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:37:16.208823\",\"folder\":null,\"id\":\"167cdb24-7e1c-475b-893a-cca2f125426c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Sinoussi\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:38:07.215401\",\"folder\":null,\"id\":\"48113cab-2c04-493f-8c2e-c8d067826aa2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Sagan\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:39:19.479656\",\"folder\":null,\"id\":\"28d292dc-e094-4ffe-a657-178892933267\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Hoover\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:02.895859\",\"folder\":null,\"id\":\"0c9849b7-b2d6-4d0e-8334-abfb3ae183dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Mendeleev\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:27.867247\",\"folder\":null,\"id\":\"d78c52e9-1941-4555-9bb9-abd01f176705\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Dubinsky\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:41:23.177402\",\"folder\":null,\"id\":\"5277a04c-b5da-4597-aaa2-a6b66ea11d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Poitras\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:08.731865\",\"folder\":null,\"id\":\"b0d0c8de-4eea-484a-a068-b13e63f7e71c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Ptolemy\",\"description\":\"Crafting Conversations, One Node at a Time.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:25.658996\",\"folder\":null,\"id\":\"b6f155e2-03eb-4232-9bab-145463382fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Loving Cray\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:43:57.530112\",\"folder\":null,\"id\":\"b75c10ca-9ecb-432b-88ab-e1847e836e22\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Pasteur\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:44:58.979393\",\"folder\":null,\"id\":\"3710eccb-e7a7-41d5-9339-d9c301515d17\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Gates\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:45:42.744174\",\"folder\":null,\"id\":\"fdd2271e-92f6-4349-8c01-2ec0e9e73f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Determined Khorana\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:10.084684\",\"folder\":null,\"id\":\"88b49a97-0888-4fea-8d9b-6ac2cc6d158e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Booth\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:41.577750\",\"folder\":null,\"id\":\"629afe54-8796-45be-a570-e3ac79c60792\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Mendeleev\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:47:22.631243\",\"folder\":null,\"id\":\"7bf481b0-73fe-4f5b-a3d4-1263d9d8e827\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Clever Varahamihira\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:49:51.026960\",\"folder\":null,\"id\":\"df9e86b6-56c9-4848-9010-102615314766\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Stallman\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:50:14.932236\",\"folder\":null,\"id\":\"3e66994c-9b7a-4b85-a917-65d1959d7352\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Wozniak\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:51:13.811894\",\"folder\":null,\"id\":\"d10f924a-5780-4255-9f41-3e102ae03e84\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hopeful Mirzakhani\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:23.906908\",\"folder\":null,\"id\":\"f3378fa8-ccaf-4a3b-90d6-b8ab0c4e481f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Joule\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:43.863440\",\"folder\":null,\"id\":\"deaa50e7-a8b1-46b1-856c-334ee781e1c2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Shockley\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:53:43.299699\",\"folder\":null,\"id\":\"c72eac2c-d924-40c6-a102-da524216d090\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Dewey\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:54:18.848827\",\"folder\":null,\"id\":\"d9425324-bb60-462e-b431-90a536f2bc76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Joliot\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:12.348608\",\"folder\":null,\"id\":\"621ba134-3fac-487c-98cd-96941439f1be\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Backstabbing Franklin\",\"description\":\"Craft Language Connections Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.491824\",\"folder\":null,\"id\":\"86ca9773-c7b7-4a1a-859a-6cbe0ddff206\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Swartz\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.524414\",\"folder\":null,\"id\":\"da1c02b7-d608-4498-9946-7d02f55fa103\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Volta\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.641432\",\"folder\":null,\"id\":\"8d5dd998-6b51-4f65-8331-086a7f3b11d7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Lichterman\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746120\",\"folder\":null,\"id\":\"942027d3-e2ea-48c6-8279-0a41b54e8862\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Einstein\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746904\",\"folder\":null,\"id\":\"9e9b6298-1073-4297-8ecc-3c620b432e70\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Planck\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.747420\",\"folder\":null,\"id\":\"7cd60c83-b797-4e60-af6d-cbc540657943\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Zobell\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.749951\",\"folder\":null,\"id\":\"dab08306-9521-4e15-aa11-e6a6a4e210f8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Knuth\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:16.772119\",\"folder\":null,\"id\":\"c9149590-636a-44f5-aaae-45a4e78fe4df\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Wright\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:52.954568\",\"folder\":null,\"id\":\"6b23b2ad-c07c-46f6-b9ad-268783d1712e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Vibrant Lalande\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.656156\",\"folder\":null,\"id\":\"ece3bcf6-a147-4559-862e-cacff9db5f48\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Gauss\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.717991\",\"folder\":null,\"id\":\"252b6021-ecad-4eaf-9e2f-106c4c89c496\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gigantic Rosalind\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.736261\",\"folder\":null,\"id\":\"b8cb6d8d-c0fb-4e8d-a46e-2c608dc8a714\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Hubble\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.769546\",\"folder\":null,\"id\":\"553a67db-7225-474c-978e-8a40cde2bfb2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Mclean\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.981063\",\"folder\":null,\"id\":\"e0865007-4d80-4edf-87ab-9e8d2892d719\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Murdock\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.982286\",\"folder\":null,\"id\":\"1021cd20-66e0-4b81-9c79-bfe729774d20\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Riemann\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.983216\",\"folder\":null,\"id\":\"089074d3-8a1e-4d85-a59d-b4717090e4d3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Tesla\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:00:35.704142\",\"folder\":null,\"id\":\"beb49d88-255e-4db4-931b-4ab4358f1097\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Boyd\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:13.569507\",\"folder\":null,\"id\":\"75b5ab8d-e0c0-43cf-912b-8578550e198a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Babbage\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:27.944868\",\"folder\":null,\"id\":\"503edd55-8f70-43e5-87fb-2324eaf62336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Bose\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:02:40.122079\",\"folder\":null,\"id\":\"ae4f2992-1a23-4a43-bec6-68b823935762\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Coulomb\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.263237\",\"folder\":null,\"id\":\"a2a464db-b02a-4440-ad9e-7b552ee6c027\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Drunk Newton\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.883766\",\"folder\":null,\"id\":\"1a5d9af7-5a96-4035-a09c-e15741785828\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Pasteur\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.933083\",\"folder\":null,\"id\":\"04b94873-0828-41dc-a850-fd4132c9b9f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Spence\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.967685\",\"folder\":null,\"id\":\"47003dc2-7884-48a3-aa66-e4185079f4d9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Noyce\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.983198\",\"folder\":null,\"id\":\"13769cb4-2e15-4d54-a28a-c97dc15db58c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Edison\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.018879\",\"folder\":null,\"id\":\"453dacde-6b10-406b-a5b3-f90f44be6899\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Snyder\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.205689\",\"folder\":null,\"id\":\"9544fac9-3002-47aa-86b9-102844fe9649\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khorana\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.243434\",\"folder\":null,\"id\":\"90498ef6-34f9-45c8-8cd0-fe6a36a26f41\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Albattani\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:05:07.775497\",\"folder\":null,\"id\":\"9577c416-8ce8-48f6-ad6d-ab2e003bb415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Charming Goodall\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:07:52.139318\",\"folder\":null,\"id\":\"f10dc08e-b9c7-44b3-8837-b95aee2f6dbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Ramanujan\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:08:22.448480\",\"folder\":null,\"id\":\"c864bd8c-67cd-465f-bf7d-7a35c7df37f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Mclean\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:09:56.507826\",\"folder\":null,\"id\":\"f0c13b19-ae23-40e6-88d6-d135897ee100\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Hawking\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:10:27.169757\",\"folder\":null,\"id\":\"0afb91b4-8f41-4270-900a-f5de647d45ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Lovelace\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:02.292233\",\"folder\":null,\"id\":\"0f1e5dcf-8769-4157-b495-5f215b490107\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Kilby\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:46.960966\",\"folder\":null,\"id\":\"310d03d9-dd50-4946-9a27-38ee06906212\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Almeida\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:12:24.475101\",\"folder\":null,\"id\":\"3cbc8fc2-a86f-4177-9a1c-a833b2a24283\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Roentgen\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:06.753571\",\"folder\":null,\"id\":\"c508e922-29e9-4234-84ae-505c5bdf41c1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Poitras\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.754605\",\"folder\":null,\"id\":\"1431df05-1b6f-41af-a063-a18d26a946ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khayyam\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.791627\",\"folder\":null,\"id\":\"344e03fb-fd49-4e87-be67-7dce04ba655b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zealous Mayer\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.803889\",\"folder\":null,\"id\":\"8b3ff1cb-3a6c-46ee-b09a-0e9f9f13a8b9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Ramanujan\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.822583\",\"folder\":null,\"id\":\"18961e76-f4b1-4968-926a-fed22cb04f69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Franklin\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.854440\",\"folder\":null,\"id\":\"0e0ee854-ab46-4333-a848-2e1239a24334\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Swirles\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.988932\",\"folder\":null,\"id\":\"cc7b8238-3d15-4f78-bd0c-8311691c9ff8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Swartz\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:08.028688\",\"folder\":null,\"id\":\"123369f9-c83c-4ed3-93b6-78ca29c271cf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kowalevski\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.097607\",\"folder\":null,\"id\":\"ed4b1490-e9e5-46bf-b337-166b48eaadd6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Golick\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.617772\",\"folder\":null,\"id\":\"9d1be311-c618-4e3e-aeb1-4161ab37850e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Newton\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.646124\",\"folder\":null,\"id\":\"63a75f99-1745-40d3-9e27-3d19a143be45\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Noyce\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.685781\",\"folder\":null,\"id\":\"b418ca87-eb17-42e8-b789-3fcb0cab3ddb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fluffy Fermat\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.705984\",\"folder\":null,\"id\":\"93802b07-eee9-4a2b-8691-7d9a231bd67e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Stoic Payne\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.723990\",\"folder\":null,\"id\":\"d62df661-0ae5-4b41-a9fb-71cb2e46ad52\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Darwin\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.818343\",\"folder\":null,\"id\":\"d1f62248-415c-474a-bfa6-3509a528a33b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Thompson\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.925999\",\"folder\":null,\"id\":\"d2267176-f020-4c52-90a4-7f944d7c1749\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Dewey\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:07.400402\",\"folder\":null,\"id\":\"8cf1ac8d-d34d-4e8a-a9da-be44672e1dfb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Zuse\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.384611\",\"folder\":null,\"id\":\"bae3cb5b-0f1b-4e95-bf58-7eab38da3d73\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hungry Zuse\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.436591\",\"folder\":null,\"id\":\"4dfafe3e-e9ef-405d-be72-550084411d69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Khayyam\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.435958\",\"folder\":null,\"id\":\"e0f81215-dc55-4b5a-b8cf-6e2fcbf297a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Mendel\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.470080\",\"folder\":null,\"id\":\"5022a71c-da47-4975-a4d0-6d2d9e760d3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Inquisitive Poitras\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.484430\",\"folder\":null,\"id\":\"4f1ff9e3-3500-404c-80af-2010bc46cdcb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Jones\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.661306\",\"folder\":null,\"id\":\"77af3e47-c2cc-42f6-99e1-78589439a447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.662877\",\"folder\":null,\"id\":\"6f3e2e56-b329-47e3-86cc-024c29203016\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Visvesvaraya\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.092917\",\"folder\":null,\"id\":\"449ac0ee-ee29-4a9f-9aff-fd6a86624457\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Tesla\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.630382\",\"folder\":null,\"id\":\"a2136ed3-dc75-4a8f-ab34-6887ff955b23\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noether\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.652058\",\"folder\":null,\"id\":\"fd1080f8-db07-481a-b2ba-60f67fcb20a6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Pasteur\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.688661\",\"folder\":null,\"id\":\"d534d5e1-92aa-4fb2-a795-7071c4feba47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Sinoussi\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.741385\",\"folder\":null,\"id\":\"85323170-c066-4d8f-acb0-1b142241389e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Ramanujan\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.790086\",\"folder\":null,\"id\":\"b0d18432-21ab-404b-acb6-57ef97353fad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sick Joliot\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-rVj1B\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-rVj1B\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":267.7156633365312,\"y\":716.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T18:52:26.999440\",\"folder\":null,\"id\":\"be39958a-ef42-4fa8-8e54-b611e56b5c97\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Graceful Lumiere\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:11.012069\",\"folder\":null,\"id\":\"f7dcecfd-533c-4f40-9dcb-f213962ed1a2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"aaaaa\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-P6Z0D\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-P6Z0D\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":266.7156633365312,\"y\":657.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T19:05:14.503144\",\"folder\":null,\"id\":\"c2411a20-57c6-44cc-a0d0-2c857453633d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Aryabhata\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":459,\"id\":\"CustomComponent-Qhbd7\",\"type\":\"genericNode\",\"position\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom openai import OpenAI\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"OpenAI STT english translator\\\"\\n description: str = \\\"Transcript and translate any audio to english\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"audio_path\\\":{\\\"display_name\\\":\\\"Audio path\\\",\\\"input_types\\\":[\\\"str\\\"]},\\\"openAI_key\\\":{\\\"display_name\\\":\\\"OpenAI key\\\",\\\"password\\\":True}}\\n\\n def build(self,audio_path:str,openAI_key:str) -> str:\\n client = OpenAI(api_key=openAI_key)\\n audio_file= open(audio_path, \\\"rb\\\")\\n transcript = client.audio.translations.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file\\n )\\n self.status = transcript.text\\n return transcript.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"audio_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"audio_path\",\"display_name\":\"Audio path\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"aaaaa\"},\"openAI_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openAI_key\",\"display_name\":\"OpenAI key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Transcript and translate any audio to english\",\"base_classes\":[\"str\"],\"display_name\":\"OpenAI STT english tra\",\"custom_fields\":{\"audio_path\":null,\"openAI_key\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Qhbd7\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913}}],\"edges\":[],\"viewport\":{\"x\":433.8372868055629,\"y\":250.9611989970935,\"zoom\":0.8467453123625275}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:16:56.971879\",\"folder\":null,\"id\":\"122eee5d-9734-4e51-9da5-b39bead64a8d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Wing\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:23.227017\",\"folder\":null,\"id\":\"171d0063-6446-4c6a-8f5b-786a38951d44\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Boyd\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.063781\",\"folder\":null,\"id\":\"3a7af50c-6555-4004-a86e-1ea37e477900\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Dewey\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.065404\",\"folder\":null,\"id\":\"dc4b4235-a550-41e2-9ddb-bcb352a1bc03\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Carroll\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.087501\",\"folder\":null,\"id\":\"9550e2bf-db7a-41f5-84e5-177a181bbeda\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Engelbart\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.112543\",\"folder\":null,\"id\":\"6a3a24bb-01cb-4d8e-8d17-0dc92d257322\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sassy Khayyam\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.147631\",\"folder\":null,\"id\":\"8d372f5e-ca12-4ea8-a1a1-8846afa72692\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Bell\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.212921\",\"folder\":null,\"id\":\"800f8785-0f41-4db3-aef8-9e3de5250526\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Bassi\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.395729\",\"folder\":null,\"id\":\"4589607a-065b-4a8f-ba52-5045d7b04086\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Volhard\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.263971\",\"folder\":null,\"id\":\"b2440ed8-44fa-4684-adf7-b5e84bff6577\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Ecstatic Poincare\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.377270\",\"folder\":null,\"id\":\"b996f514-e0b8-432f-969b-7276630a8f4b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Zuse\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.406385\",\"folder\":null,\"id\":\"6e2e9c12-0afc-499e-acdd-adf4b5f7d4fc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Hopper\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.413014\",\"folder\":null,\"id\":\"e020f1a5-aa12-45e7-ba50-6eb64a735e60\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Jang\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.433045\",\"folder\":null,\"id\":\"ee58f892-b7b2-408e-b4b9-9d862fc315aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Ohm\",\"description\":\"Promptly Ingenious!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.403404\",\"folder\":null,\"id\":\"023a1fc3-8807-4167-b6b2-f4e5daf036f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Degrasse\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.411655\",\"folder\":null,\"id\":\"085f106f-c1e9-4a0f-ba31-d2fafe685d9c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Volta\",\"description\":\"Catalyzing Business Growth through Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.408697\",\"folder\":null,\"id\":\"14481bb5-1353-452f-9359-d38c9419d79c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:21.774940\",\"folder\":null,\"id\":\"e9316292-4ee1-441b-8327-0b09a7831fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Easley\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.416556\",\"folder\":null,\"id\":\"668806ba-3efa-44de-aeb7-4ac082ba9172\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Mestorf\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.484048\",\"folder\":null,\"id\":\"3fc0a371-aada-4450-9d17-33d3cc05c870\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Franklin\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.509095\",\"folder\":null,\"id\":\"af967c98-5f08-4ee2-b1ce-6c16b4f9ebe2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bhaskara\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.508465\",\"folder\":null,\"id\":\"758c4164-b521-45d0-a15f-d49480e312eb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Edison\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.602296\",\"folder\":null,\"id\":\"f9d3d30f-8859-433f-bafc-ccf1a7196e35\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Ride\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.604061\",\"folder\":null,\"id\":\"0142bca5-eb61-42ed-9917-70c4c0f54eb0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noyce\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.603113\",\"folder\":null,\"id\":\"0b63d036-4669-4ceb-8ea4-34035340df77\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Bhabha\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.345767\",\"folder\":null,\"id\":\"8b9a66d4-a924-4b84-a2b5-5dd0645ac07a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Zobell\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.722319\",\"folder\":null,\"id\":\"c912fd6b-b32d-409f-a0e5-c6249b066429\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Shaw\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.750779\",\"folder\":null,\"id\":\"9d755cd4-c652-43e0-a68d-75a5475ce7a3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Giggly Newton\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.786602\",\"folder\":null,\"id\":\"0d3af7de-1ada-4c43-a69f-1bfad370ccfc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Yalow\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.792245\",\"folder\":null,\"id\":\"b6444376-4162-436b-8b40-f5a6afc850db\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Bhabha\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.890349\",\"folder\":null,\"id\":\"d90af439-fb34-4d27-98f2-06f7f9a9ed8c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Spirited Hoover\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.905750\",\"folder\":null,\"id\":\"31597ce2-de3c-490b-9ead-3f702f63cfd9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Davinci\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:08.001400\",\"folder\":null,\"id\":\"b43c63e9-a257-4a53-8acc-049e13706ac2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"23\",\"description\":\"23\",\"data\":{\"nodes\":[{\"width\":384,\"height\":467,\"id\":\"PromptTemplate-K7xiS\",\"type\":\"genericNode\",\"position\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"dasdas\",\"dasdasd\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"{dasdas}\\n{dasdasd}\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"dasdas\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdas\",\"display_name\":\"dasdas\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"dasdasd\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdasd\",\"display_name\":\"dasdasd\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"BasePromptTemplate\",\"StringPromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"dasdas\",\"dasdasd\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-K7xiS\"},\"selected\":false,\"positionAbsolute\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"dragging\":false},{\"width\":384,\"height\":366,\"id\":\"AirbyteJSONLoader-DXfcM\",\"type\":\"genericNode\",\"position\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"suffixes\":[\".json\"],\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\"json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-DXfcM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"dragging\":false},{\"width\":384,\"height\":376,\"id\":\"PromptRunner-ckWMH\",\"type\":\"genericNode\",\"position\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"data\":{\"type\":\"PromptRunner\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\n\\nclass PromptRunner(CustomComponent):\\n display_name: str = \\\"Prompt Runner\\\"\\n description: str = \\\"Run a Chain with the given PromptTemplate\\\"\\n beta: bool = True\\n field_config = {\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"prompt\\\": {\\n \\\"display_name\\\": \\\"Prompt Template\\\",\\n \\\"info\\\": \\\"Make sure the prompt has all variables filled.\\\",\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(self, llm: BaseLLM, prompt: PromptTemplate, inputs: dict = {}) -> Document:\\n chain = prompt | llm\\n # The input is an empty dict because the prompt is already filled\\n result = chain.invoke(input=inputs)\\n if hasattr(result, \\\"content\\\"):\\n result = result.content\\n self.repr_value = result\\n return Document(page_content=str(result))\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"inputs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"inputs\",\"display_name\":\"inputs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt Template\",\"advanced\":false,\"dynamic\":false,\"info\":\"Make sure the prompt has all variables filled.\",\"type\":\"PromptTemplate\",\"list\":false}},\"description\":\"Run a Chain with the given PromptTemplate\",\"base_classes\":[\"Document\"],\"display_name\":\"Prompt Runner\",\"custom_fields\":{\"inputs\":null,\"llm\":null,\"prompt\":null},\"output_types\":[\"PromptRunner\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"PromptRunner-ckWMH\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"dragging\":false}],\"edges\":[{\"source\":\"PromptRunner-ckWMH\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œPromptRunnerœ,œidœ:œPromptRunner-ckWMHœ}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{œfieldNameœ:œdasdasdœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdasd\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"PromptRunner\",\"id\":\"PromptRunner-ckWMH\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptRunner-ckWMH{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œPromptRunnerœ,œidœ:œPromptRunner-ckWMHœ}-PromptTemplate-K7xiS{œfieldNameœ:œdasdasdœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\"},{\"source\":\"AirbyteJSONLoader-DXfcM\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œAirbyteJSONLoaderœ,œidœ:œAirbyteJSONLoader-DXfcMœ}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{œfieldNameœ:œdasdasœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdas\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"AirbyteJSONLoader\",\"id\":\"AirbyteJSONLoader-DXfcM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-AirbyteJSONLoader-DXfcM{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œAirbyteJSONLoaderœ,œidœ:œAirbyteJSONLoader-DXfcMœ}-PromptTemplate-K7xiS{œfieldNameœ:œdasdasœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\"}],\"viewport\":{\"x\":721.09842496776,\"y\":-303.59762799439625,\"zoom\":0.6417129487814537}},\"is_component\":false,\"updated_at\":\"2023-12-08T22:52:14.560323\",\"folder\":null,\"id\":\"8533c46e-21fd-4b92-b68e-1086ea86c72d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Stonebraker\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:26:42.332360\",\"folder\":null,\"id\":\"92bc0875-4a73-44f2-9410-3b8342e404bf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (1)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-dMB5d\"},\"id\":\"CustomComponent-dMB5d\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:43.668665\",\"folder\":null,\"id\":\"912265df-9b87-4b30-a585-1ca59b944391\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (2)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-ipifC\"},\"id\":\"CustomComponent-ipifC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:49.799612\",\"folder\":null,\"id\":\"ca83ee08-2f93-427d-9897-80fef6dd5447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Y4qL7\"},\"id\":\"CustomComponent-Y4qL7\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:53.719960\",\"folder\":null,\"id\":\"5847602b-769a-4a82-82e8-a70f54a59929\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Williams\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:27:45.691254\",\"folder\":null,\"id\":\"0e3bdba9-127a-4399-81a4-2865b70a4a47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Shared Component\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-TK9Ea\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-TK9Ea\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:28:34.119070\",\"folder\":null,\"id\":\"29c1a247-47b0-457b-8666-7c0a67dc72b0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"teste cristhian\",\"description\":\"11111\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-P5wrB\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-P5wrB\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}},{\"width\":384,\"height\":626,\"id\":\"OpenAI-zpihD\",\"type\":\"genericNode\",\"position\":{\"x\":-56.983202536768374,\"y\":61.715652677908665},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-babbage-001\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false,\"value\":\"dasdasdasdsadasdas\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"1.4\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLanguageModel\",\"BaseLLM\",\"BaseOpenAI\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-zpihD\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-56.983202536768374,\"y\":61.715652677908665}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:40:48.453096\",\"folder\":null,\"id\":\"2e59d013-2acb-49a6-915b-9231a7e6eb58\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent (1)\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-jsHqy\"},\"id\":\"CSVAgent-jsHqy\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:31:17.317322\",\"folder\":null,\"id\":\"ab1034a9-9b5b-4c65-bf6e-9f098a403942\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Wilsonfasdfsd\",\"description\":\"Building Linguistic Labyrinths.fasdfads\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:43:45.298121\",\"folder\":null,\"id\":\"7d91c0c5-fba6-4c60-b4d1-11d430ef357a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (1)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-pAHh6\"},\"id\":\"AirbyteJSONLoader-pAHh6\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:47:58.573137\",\"folder\":null,\"id\":\"f0cc4292-97cc-4748-803d-949e30dcf661\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"ff2\":\"d3bbd\"},{\"w\":\"bvd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-0zU2Q\"},\"id\":\"AirbyteJSONLoader-0zU2Q\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:09.035318\",\"folder\":null,\"id\":\"5e3c0d55-1a00-4e15-9821-0c625c6415ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-Ub1Xe\"},\"id\":\"CSVAgent-Ub1Xe\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:16.985419\",\"folder\":null,\"id\":\"baee8061-4788-4ce6-928f-c6ce1ecb443c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Heisenberg\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":366,\"id\":\"CSVLoader-RMUx9\",\"type\":\"genericNode\",\"position\":{\"x\":111,\"y\":345.51250076293945},\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVLoader-RMUx9\"},\"positionAbsolute\":{\"x\":111,\"y\":345.51250076293945}}],\"edges\":[],\"viewport\":{\"x\":0,\"y\":0,\"zoom\":1}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:38:40.291137\",\"folder\":null,\"id\":\"109e9629-d569-4555-9d40-42203a5ed035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CohereEmbeddings\",\"description\":\"Cohere embedding models.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CohereEmbeddings\",\"node\":{\"template\":{\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cohere_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"cohere_api_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"embed-english-v2.0\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"truncate\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"truncate\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"user_agent\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"user_agent\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"CohereEmbeddings\"},\"description\":\"Cohere embedding models.\",\"base_classes\":[\"CohereEmbeddings\",\"Embeddings\"],\"display_name\":\"CohereEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/cohere\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CohereEmbeddings-HFUAf\"},\"id\":\"CohereEmbeddings-HFUAf\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:46.172344\",\"folder\":null,\"id\":\"662d8040-d47c-40db-bda1-66489a1c9d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (1)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-3wrib\"},\"id\":\"CSVLoader-3wrib\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:56:11.662526\",\"folder\":null,\"id\":\"4fae6aec-ddbd-498d-a4d1-ca0290f6a5ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (2)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-VEjyx\"},\"id\":\"CSVLoader-VEjyx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:57:37.560784\",\"folder\":null,\"id\":\"d80635ee-966c-41f2-981c-afa2c388ac6e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (3)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-PIhOc\"},\"id\":\"CSVLoader-PIhOc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:27.991966\",\"folder\":null,\"id\":\"c5cc4c32-77c8-4889-a9f8-2632466b7366\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (4)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-deB43\"},\"id\":\"CSVLoader-deB43\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:42.509243\",\"folder\":null,\"id\":\"0ab59938-ccf4-4bb9-b285-1f5da38648f0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-mdkLm\"},\"id\":\"CSVLoader-mdkLm\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:17.458354\",\"folder\":null,\"id\":\"f127b7e7-4149-492e-8998-6b1b35ec4153\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (5)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-FRc6Y\"},\"id\":\"CSVLoader-FRc6Y\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:26.958867\",\"folder\":null,\"id\":\"a870a096-725c-4914-add0-8d57d710b7e5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (2)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-Z0uol\"},\"id\":\"AirbyteJSONLoader-Z0uol\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:33.764117\",\"folder\":null,\"id\":\"2a37c76c-65c8-4c01-a72d-eb46f3d41a56\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-28ASv\"},\"id\":\"AmazonBedrockEmbeddings-28ASv\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:41.066618\",\"folder\":null,\"id\":\"850ba4e6-96ca-49a7-9b0c-4b7048fd52c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"ConversationBufferMemory\",\"description\":\"Buffer for storing conversation memory.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"ConversationBufferMemory\",\"node\":{\"template\":{\"chat_memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chat_memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMessageHistory\",\"list\":false},\"ai_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"AI\",\"password\":false,\"name\":\"ai_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"human_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"Human\",\"password\":false,\"name\":\"human_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"input_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"input_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"type\":\"str\",\"list\":false},\"memory_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"chat_history\",\"password\":false,\"name\":\"memory_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"output_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"output_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"type\":\"str\",\"list\":false},\"return_messages\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"return_messages\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationBufferMemory\"},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseMemory\",\"BaseChatMemory\",\"ConversationBufferMemory\"],\"display_name\":\"ConversationBufferMemory\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"ConversationBufferMemory-WaoLx\"},\"id\":\"ConversationBufferMemory-WaoLx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:04:46.058568\",\"folder\":null,\"id\":\"be650940-0449-4eb0-a708-056310f924fd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (1)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\"},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:05:50.570800\",\"folder\":null,\"id\":\"53ad1fe2-f3af-4354-86e0-eb141ce12859\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (2)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\"},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:06:11.415088\",\"folder\":null,\"id\":\"e9ed1c90-146e-452d-8ccd-ebf2e0da4331\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (3)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\"},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:07:06.411108\",\"folder\":null,\"id\":\"83783c57-64e3-41a6-aa7e-ed82f80f1e53\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (6)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-2pn2o\"},\"id\":\"CSVLoader-2pn2o\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:38:30.706258\",\"folder\":null,\"id\":\"c4ae9de6-9df3-4d3c-afc9-1752af4fecd7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-MJrAC\"},\"id\":\"AgentInitializer-MJrAC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:42:54.715163\",\"folder\":null,\"id\":\"ff84b5f9-5680-4084-a9f1-7d94fe675486\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer (1)\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-3lcZ4\"},\"id\":\"AgentInitializer-3lcZ4\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:43:20.819934\",\"folder\":null,\"id\":\"97f5db9f-d6cc-4555-88fb-3be102c67814\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Banach\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:52:49.951416\",\"folder\":null,\"id\":\"a600acd1-213a-4ce7-8648-ab2ee59f5918\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (3)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-JhQtx\"},\"id\":\"AirbyteJSONLoader-JhQtx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:44:49.587337\",\"folder\":null,\"id\":\"07c52ad7-ca52-4cdd-ab40-74a91dbad0dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (4)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-bIvDc\"},\"id\":\"AirbyteJSONLoader-bIvDc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:13.458500\",\"folder\":null,\"id\":\"53e4d256-3653-444b-b8e0-fb97b3ae5c7e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (5)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-2BLS8\"},\"id\":\"AirbyteJSONLoader-2BLS8\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:44.461699\",\"folder\":null,\"id\":\"b5158cc1-c6b8-4e25-907a-bc7e7637aa38\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (4)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-NsBzN\"},\"id\":\"AmazonBedrockEmbeddings-NsBzN\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:50:29.791575\",\"folder\":null,\"id\":\"3fb77f72-1be7-4ce0-ae89-a82b0eee9acf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Golick\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.707854\",\"folder\":null,\"id\":\"9c5d21c2-ea82-4cf4-a591-c3d3fd3f13e6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci (1)\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.761150\",\"folder\":null,\"id\":\"f8e2e16e-129c-4116-9626-2c6b524d97b7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Degrasse\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.764440\",\"folder\":null,\"id\":\"d7f4f7b5-effe-4834-8cab-4f2fc4f6e9de\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Archimedes\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.767546\",\"folder\":null,\"id\":\"2265d813-4a87-410f-b06a-65e35db8219e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Heyrovsky\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.765105\",\"folder\":null,\"id\":\"10bfd881-e67e-4c33-965d-ee041695edce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Carroll\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.811794\",\"folder\":null,\"id\":\"63fa5653-4513-47f2-8dfa-baeb1d981f93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Perlman\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.814993\",\"folder\":null,\"id\":\"f4bc5945-20d9-4703-a5bb-6a4a3ef7fc8e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Stallman\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.813144\",\"folder\":null,\"id\":\"8d8b80f9-4b74-4cd5-bc5c-08a32c4d2b95\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Einstein\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:19.518262\",\"folder\":null,\"id\":\"21808fd7-a492-4e29-8863-301c2785f542\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Swanson\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.185637\",\"folder\":null,\"id\":\"7752299a-4aa9-44db-8d9c-5c4a2ac1b071\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Pascal\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.223064\",\"folder\":null,\"id\":\"78f48a13-6a9f-42ce-9d58-ec9b63b381d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Bartik\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.239758\",\"folder\":null,\"id\":\"38074091-3d7c-4d42-b61b-ae195c1b8a4e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Condescending Joliot\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.271996\",\"folder\":null,\"id\":\"773020aa-5c2d-4632-ad9e-21276861ab93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kalam\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.283929\",\"folder\":null,\"id\":\"0092d077-6d31-401f-a739-b164476b90ed\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Bhabha\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.467739\",\"folder\":null,\"id\":\"4a395211-712d-4dd2-b3bb-e6b19200f15d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Babbage\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.742990\",\"folder\":null,\"id\":\"3f086a82-3e29-4328-9da8-e02dc9201744\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Volta\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:18.594247\",\"folder\":null,\"id\":\"659b8289-c8e8-413d-9b2b-51e68411f170\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Jennings\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:42.640309\",\"folder\":null,\"id\":\"f55f0640-d47e-4471-b1ba-3411d38ecac5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Shaw\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:58.376247\",\"folder\":null,\"id\":\"a039811e-449a-4244-83ed-4ddd731a0921\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock (1)\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:25:14.674524\",\"folder\":null,\"id\":\"0faf6144-6ca6-4f64-a343-665ae54774ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Volta\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:26:50.418029\",\"folder\":null,\"id\":\"c5d149d0-c401-4f5e-b79f-2abcc7b8d98d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Bubbly Curie\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:27:10.900899\",\"folder\":null,\"id\":\"7bb2d226-9740-433d-861f-a499632c5a13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Nobel\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:11.541630\",\"folder\":null,\"id\":\"947906d8-75ea-470c-a8e2-cc80c5d3bdbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Northcutt\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:37.169791\",\"folder\":null,\"id\":\"56f109fd-2c18-42ed-a9b2-089a678a0c11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Khayyam\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:24.686359\",\"folder\":null,\"id\":\"551d7bfa-49aa-43f1-a779-e47eabc2aaf2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Spence\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:47.738472\",\"folder\":null,\"id\":\"12aef128-130e-492e-bf84-62d4cb4cd456\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Lavoisier\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:31:43.272365\",\"folder\":null,\"id\":\"9952c044-6903-4fba-a270-6ed0b90c93c9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:32:23.972035\",\"folder\":null,\"id\":\"65f49582-c9fa-4c67-a2bc-4e8fa73ca731\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Perlman\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:26.984083\",\"folder\":null,\"id\":\"9ae57fe2-c677-47fa-a059-7d3d915a1178\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Cori\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:52.377359\",\"folder\":null,\"id\":\"2920dde2-5c24-4fe0-9c06-ef86b5a16a99\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"}]" + "text": "[{\"name\":\"Awesome Euclid\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-m2yFu\",\"type\":\"genericNode\",\"position\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"transcription\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"create an image prompt based on the song's lyrics to be used as the album cover of this song:\\n\\nlyrics:\\n{transcription}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"transcription\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"transcription\",\"display_name\":\"transcription\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"transcription\"],\"template\":[\"transcription\",\"question\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-m2yFu\"},\"selected\":false,\"positionAbsolute\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-urapv\",\"type\":\"genericNode\",\"position\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-urapv\"},\"selected\":false,\"positionAbsolute\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"dragging\":false},{\"width\":384,\"height\":806,\"id\":\"CustomComponent-IEIUl\",\"type\":\"genericNode\",\"position\":{\"x\":2364.865919667005,\"y\":88.43094097025096},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom platformdirs import user_cache_dir\\nimport base64\\nfrom PIL import Image\\nfrom io import BytesIO\\nfrom openai import OpenAI\\nfrom pathlib import Path\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Image generator\\\"\\n description: str = \\\"generate images using Dall-E\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\",\\\"input_types\\\":[\\\"str\\\"]},\\n \\\"api_key\\\":{\\\"display_name\\\":\\\"OpenAI API key\\\",\\\"password\\\":True},\\n \\\"model\\\":{\\\"display_name\\\":\\\"Model name\\\",\\\"advanced\\\":True,\\\"options\\\":[\\\"dall-e-2\\\",\\\"dall-e-3\\\"], \\\"value\\\":\\\"dall-e-3\\\"},\\n \\\"file_name\\\":{\\\"display_name\\\":\\\"File Name\\\"},\\n \\\"output_format\\\":{\\\"display_name\\\":\\\"Output format\\\",\\\"options\\\":[\\\"jpeg\\\",\\\"png\\\"],\\\"value\\\":\\\"jpeg\\\"},\\n \\\"width\\\":{\\\"display_name\\\":\\\"Width\\\" ,\\\"value\\\":1024},\\n \\\"height\\\":{\\\"display_name\\\":\\\"Height\\\", \\\"value\\\":1024}\\n }\\n\\n def build(self, prompt:str,api_key:str,model:str,file_name:str,output_format:str,width:int,height:int):\\n client = OpenAI(api_key=api_key)\\n cache_dir = Path(user_cache_dir(\\\"langflow\\\"))\\n images_dir = cache_dir / \\\"images\\\"\\n images_dir.mkdir(parents=True, exist_ok=True)\\n image_path = images_dir / f\\\"{file_name}.{output_format}\\\"\\n response = client.images.generate(\\n model=model,\\n prompt=prompt,\\n size=f\\\"{height}x{width}\\\",\\n response_format=\\\"b64_json\\\",\\n n=1,\\n )\\n # Decode base64-encoded image string\\n binary_data = base64.b64decode(response.data[0].b64_json)\\n # Create PIL Image object from binary image data\\n image_pil = Image.open(BytesIO(binary_data))\\n image_pil.save(image_path, format=output_format.upper())\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"api_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"api_key\",\"display_name\":\"OpenAI API key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"file_name\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"file_name\",\"display_name\":\"File Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"album\"},\"height\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"height\",\"display_name\":\"Height\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"dall-e-3\",\"password\":false,\"options\":[\"dall-e-2\",\"dall-e-3\"],\"name\":\"model\",\"display_name\":\"Model name\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"output_format\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"jpeg\",\"password\":false,\"options\":[\"jpeg\",\"png\"],\"name\":\"output_format\",\"display_name\":\"Output format\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"width\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"width\",\"display_name\":\"Width\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false}},\"description\":\"generate images using Dall-E\",\"base_classes\":[\"Data\"],\"display_name\":\"Image generator\",\"custom_fields\":{\"api_key\":null,\"file_name\":null,\"height\":null,\"model\":null,\"output_format\":null,\"prompt\":null,\"width\":null},\"output_types\":[\"Data\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-IEIUl\"},\"selected\":false,\"positionAbsolute\":{\"x\":2364.865919667005,\"y\":88.43094097025096}},{\"width\":384,\"height\":338,\"id\":\"LLMChain-KlJb3\",\"type\":\"genericNode\",\"position\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-KlJb3\"},\"selected\":false,\"positionAbsolute\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-bCuc0\",\"type\":\"genericNode\",\"position\":{\"x\":1747.8107777342625,\"y\":319.13729017446667},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Chain) -> str:\\n result = param.run({})\\n self.status = result\\n return result\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Chain\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"str\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-bCuc0\"},\"selected\":false,\"positionAbsolute\":{\"x\":1747.8107777342625,\"y\":319.13729017446667}}],\"edges\":[{\"source\":\"LLMChain-KlJb3\",\"target\":\"CustomComponent-bCuc0\",\"sourceHandle\":\"{œbaseClassesœ:[œChainœ,œCallableœ],œdataTypeœ:œLLMChainœ,œidœ:œLLMChain-KlJb3œ}\",\"targetHandle\":\"{œfieldNameœ:œparamœ,œidœ:œCustomComponent-bCuc0œ,œinputTypesœ:null,œtypeœ:œChainœ}\",\"id\":\"reactflow__edge-LLMChain-KlJb3{œbaseClassesœ:[œChainœ,œCallableœ],œdataTypeœ:œLLMChainœ,œidœ:œLLMChain-KlJb3œ}-CustomComponent-bCuc0{œfieldNameœ:œparamœ,œidœ:œCustomComponent-bCuc0œ,œinputTypesœ:null,œtypeœ:œChainœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"param\",\"id\":\"CustomComponent-bCuc0\",\"inputTypes\":null,\"type\":\"Chain\"},\"sourceHandle\":{\"baseClasses\":[\"Chain\",\"Callable\"],\"dataType\":\"LLMChain\",\"id\":\"LLMChain-KlJb3\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"ChatOpenAI-urapv\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-urapvœ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-urapv{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-urapvœ}-LLMChain-KlJb3{œfieldNameœ:œllmœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-urapv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-m2yFu\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{œbaseClassesœ:[œPromptTemplateœ,œStringPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-m2yFuœ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"id\":\"reactflow__edge-PromptTemplate-m2yFu{œbaseClassesœ:[œPromptTemplateœ,œStringPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-m2yFuœ}-LLMChain-KlJb3{œfieldNameœ:œpromptœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-m2yFu\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-bCuc0\",\"target\":\"CustomComponent-IEIUl\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-bCuc0œ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œCustomComponent-IEIUlœ,œinputTypesœ:[œstrœ],œtypeœ:œstrœ}\",\"id\":\"reactflow__edge-CustomComponent-bCuc0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-bCuc0œ}-CustomComponent-IEIUl{œfieldNameœ:œpromptœ,œidœ:œCustomComponent-IEIUlœ,œinputTypesœ:[œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"CustomComponent-IEIUl\",\"inputTypes\":[\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-bCuc0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":92.23454077990459,\"y\":183.8125619056221,\"zoom\":0.6070974421975234}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:33:18.503954\",\"folder\":null,\"id\":\"fe142ce5-32dc-4955-b186-672ced662f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Darwin\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"OpenAI-3ZVDh\",\"type\":\"genericNode\",\"position\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":256,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-davinci-003\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-3ZVDh\"},\"selected\":true,\"positionAbsolute\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-RFYXY\",\"type\":\"genericNode\",\"position\":{\"x\":586.672100458868,\"y\":10.967049167706678},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RFYXY\"},\"positionAbsolute\":{\"x\":586.672100458868,\"y\":10.967049167706678}},{\"width\":384,\"height\":242,\"id\":\"ChatPromptTemplate-ce1sg\",\"type\":\"genericNode\",\"position\":{\"x\":395.598984452791,\"y\":612.188491773035},\"data\":{\"type\":\"ChatPromptTemplate\",\"node\":{\"template\":{\"messages\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"messages\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseMessagePromptTemplate\",\"list\":true},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatPromptTemplate\"},\"description\":\"A prompt template for chat models.\",\"base_classes\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"display_name\":\"ChatPromptTemplate\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\",\"beta\":false,\"error\":null},\"id\":\"ChatPromptTemplate-ce1sg\"},\"selected\":false,\"positionAbsolute\":{\"x\":395.598984452791,\"y\":612.188491773035},\"dragging\":false}],\"edges\":[{\"source\":\"OpenAI-3ZVDh\",\"sourceHandle\":\"{œbaseClassesœ:[œOpenAIœ,œBaseLLMœ,œBaseOpenAIœ,œBaseLanguageModelœ],œdataTypeœ:œOpenAIœ,œidœ:œOpenAI-3ZVDhœ}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"dataType\":\"OpenAI\",\"id\":\"OpenAI-3ZVDh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAI-3ZVDh{œbaseClassesœ:[œOpenAIœ,œBaseLLMœ,œBaseOpenAIœ,œBaseLanguageModelœ],œdataTypeœ:œOpenAIœ,œidœ:œOpenAI-3ZVDhœ}-LLMChain-RFYXY{œfieldNameœ:œllmœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"ChatPromptTemplate-ce1sg\",\"sourceHandle\":\"{œbaseClassesœ:[œChatPromptTemplateœ,œBaseChatPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œChatPromptTemplateœ,œidœ:œChatPromptTemplate-ce1sgœ}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"ChatPromptTemplate\",\"id\":\"ChatPromptTemplate-ce1sg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatPromptTemplate-ce1sg{œbaseClassesœ:[œChatPromptTemplateœ,œBaseChatPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œChatPromptTemplateœ,œidœ:œChatPromptTemplate-ce1sgœ}-LLMChain-RFYXY{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":8.832868402772647,\"y\":189.85443326477025,\"zoom\":0.6070974421975235}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:50:19.584160\",\"folder\":null,\"id\":\"103766f0-1f50-427a-9ba7-2ab73343c524\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Easley\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VPh47\",\"type\":\"genericNode\",\"position\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VPh47\"},\"selected\":false,\"positionAbsolute\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-NgFyo\",\"type\":\"genericNode\",\"position\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-NgFyo\"},\"selected\":false,\"positionAbsolute\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-oAFjh\",\"type\":\"genericNode\",\"position\":{\"x\":-342.62522294052764,\"y\":391.20629510686103},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"links\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Answer everything with links\\n{links}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"links\",\"display_name\":\"links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"links\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-oAFjh\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-342.62522294052764,\"y\":391.20629510686103}}],\"edges\":[{\"source\":\"ChatOpenAI-VPh47\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseChatModelœ,œChatOpenAIœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VPh47œ}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VPh47\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VPh47{œbaseClassesœ:[œBaseChatModelœ,œChatOpenAIœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VPh47œ}-LLMChain-NgFyo{œfieldNameœ:œllmœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"PromptTemplate-oAFjh\",\"sourceHandle\":\"{œbaseClassesœ:[œBasePromptTemplateœ,œStringPromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-oAFjhœ}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-oAFjh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-oAFjh{œbaseClassesœ:[œBasePromptTemplateœ,œStringPromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-oAFjhœ}-LLMChain-NgFyo{œfieldNameœ:œpromptœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":338.6546182690814,\"y\":53.026340800283265,\"zoom\":0.7169776240079143}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:53:25.148460\",\"folder\":null,\"id\":\"a794fc48-5e9b-42a3-924f-7fe610500035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"(D) Basic Chat (1) (4)\",\"description\":\"Simplest possible chat model\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-fBcfh\",\"type\":\"genericNode\",\"position\":{\"x\":228.87326389541306,\"y\":465.8628482073749},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false,\"value\":60},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\"},\"id\":\"ChatOpenAI-fBcfh\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":228.87326389541306,\"y\":465.8628482073749}},{\"width\":384,\"height\":310,\"id\":\"ConversationChain-bVNex\",\"type\":\"genericNode\",\"position\":{\"x\":806,\"y\":554},\"data\":{\"type\":\"ConversationChain\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"_type\":\"default\"},\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLMOutputParser\",\"list\":false},\"prompt\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"input_variables\":[\"history\",\"input\"],\"output_parser\":null,\"partial_variables\":{},\"template\":\"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\\n\\nCurrent conversation:\\n{history}\\nHuman: {input}\\nAI:\",\"template_format\":\"f-string\",\"validate_template\":true,\"_type\":\"prompt\"},\"password\":false,\"name\":\"prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"input\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"llm_kwargs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"response\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_final_only\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_final_only\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationChain\"},\"description\":\"Chain to have a conversation and load context from memory.\",\"base_classes\":[\"ConversationChain\",\"Chain\",\"LLMChain\",\"function\"],\"display_name\":\"ConversationChain\",\"documentation\":\"\"},\"id\":\"ConversationChain-bVNex\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":806,\"y\":554}}],\"edges\":[{\"source\":\"ChatOpenAI-fBcfh\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseChatModelœ,œBaseLanguageModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-fBcfhœ}\",\"target\":\"ConversationChain-bVNex\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œConversationChain-bVNexœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"className\":\"stroke-gray-900 stroke-connection\",\"id\":\"reactflow__edge-ChatOpenAI-fBcfh{œbaseClassesœ:[œBaseChatModelœ,œBaseLanguageModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-fBcfhœ}-ConversationChain-bVNex{œfieldNameœ:œllmœ,œidœ:œConversationChain-bVNexœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-fBcfh\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"ConversationChain-bVNex\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}},\"style\":{\"stroke\":\"#555\"},\"animated\":false}],\"viewport\":{\"x\":-118.21416568593895,\"y\":-240.64815770363373,\"zoom\":0.7642485855675408}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:57:55.879806\",\"folder\":null,\"id\":\"bddebeea-b80a-4b28-8895-c4425687dcce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Directory Loader\",\"description\":\"Generic File Loader\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import os\\n\\nfrom langchain.schema import Document\\nfrom langflow import CustomComponent\\nimport glob\\n\\nclass DirectoryLoaderComponent(CustomComponent):\\n display_name: str = \\\"Directory Loader\\\"\\n description: str = \\\"Generic File Loader\\\"\\n beta = True\\n loaders_info = [\\n {\\n \\\"loader\\\": \\\"AirbyteJSONLoader\\\",\\n \\\"name\\\": \\\"Airbyte JSON (.jsonl)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.AirbyteJSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"jsonl\\\"],\\n \\\"allowdTypes\\\": [\\\"jsonl\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"JSONLoader\\\",\\n \\\"name\\\": \\\"JSON (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.JSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"json\\\"],\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n \\\"kwargs\\\": {\\\"jq_schema\\\": \\\".\\\", \\\"text_content\\\": False}\\n },\\n {\\n \\\"loader\\\": \\\"BSHTMLLoader\\\",\\n \\\"name\\\": \\\"BeautifulSoup4 HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.BSHTMLLoader\\\",\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CSVLoader\\\",\\n \\\"name\\\": \\\"CSV (.csv)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CSVLoader\\\",\\n \\\"defaultFor\\\": [\\\"csv\\\"],\\n \\\"allowdTypes\\\": [\\\"csv\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CoNLLULoader\\\",\\n \\\"name\\\": \\\"CoNLL-U (.conllu)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CoNLLULoader\\\",\\n \\\"defaultFor\\\": [\\\"conllu\\\"],\\n \\\"allowdTypes\\\": [\\\"conllu\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"EverNoteLoader\\\",\\n \\\"name\\\": \\\"EverNote (.enex)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.EverNoteLoader\\\",\\n \\\"defaultFor\\\": [\\\"enex\\\"],\\n \\\"allowdTypes\\\": [\\\"enex\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"FacebookChatLoader\\\",\\n \\\"name\\\": \\\"Facebook Chat (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.FacebookChatLoader\\\",\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"OutlookMessageLoader\\\",\\n \\\"name\\\": \\\"Outlook Message (.msg)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.OutlookMessageLoader\\\",\\n \\\"defaultFor\\\": [\\\"msg\\\"],\\n \\\"allowdTypes\\\": [\\\"msg\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"PyPDFLoader\\\",\\n \\\"name\\\": \\\"PyPDF (.pdf)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.PyPDFLoader\\\",\\n \\\"defaultFor\\\": [\\\"pdf\\\"],\\n \\\"allowdTypes\\\": [\\\"pdf\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"STRLoader\\\",\\n \\\"name\\\": \\\"Subtitle (.str)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.STRLoader\\\",\\n \\\"defaultFor\\\": [\\\"str\\\"],\\n \\\"allowdTypes\\\": [\\\"str\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"TextLoader\\\",\\n \\\"name\\\": \\\"Text (.txt)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.TextLoader\\\",\\n \\\"defaultFor\\\": [\\\"txt\\\"],\\n \\\"allowdTypes\\\": [\\\"txt\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredEmailLoader\\\",\\n \\\"name\\\": \\\"Unstructured Email (.eml)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredEmailLoader\\\",\\n \\\"defaultFor\\\": [\\\"eml\\\"],\\n \\\"allowdTypes\\\": [\\\"eml\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredHTMLLoader\\\",\\n \\\"name\\\": \\\"Unstructured HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredHTMLLoader\\\",\\n \\\"defaultFor\\\": [\\\"html\\\", \\\"htm\\\"],\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredMarkdownLoader\\\",\\n \\\"name\\\": \\\"Unstructured Markdown (.md)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredMarkdownLoader\\\",\\n \\\"defaultFor\\\": [\\\"md\\\"],\\n \\\"allowdTypes\\\": [\\\"md\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredPowerPointLoader\\\",\\n \\\"name\\\": \\\"Unstructured PowerPoint (.pptx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredPowerPointLoader\\\",\\n \\\"defaultFor\\\": [\\\"pptx\\\"],\\n \\\"allowdTypes\\\": [\\\"pptx\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredWordLoader\\\",\\n \\\"name\\\": \\\"Unstructured Word (.docx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredWordLoader\\\",\\n \\\"defaultFor\\\": [\\\"docx\\\"],\\n \\\"allowdTypes\\\": [\\\"docx\\\"],\\n },\\n]\\n\\n\\n def build_config(self):\\n loader_options = [\\\"Automatic\\\"] + [\\n loader_info[\\\"name\\\"] for loader_info in self.loaders_info\\n ]\\n\\n file_types = []\\n suffixes = []\\n\\n for loader_info in self.loaders_info:\\n if \\\"allowedTypes\\\" in loader_info:\\n file_types.extend(loader_info[\\\"allowedTypes\\\"])\\n suffixes.extend([f\\\".{ext}\\\" for ext in loader_info[\\\"allowedTypes\\\"]])\\n\\n return {\\n \\\"directory_path\\\": {\\n \\\"display_name\\\": \\\"Directory Path\\\",\\n \\\"required\\\": True,\\n },\\n \\\"loader\\\": {\\n \\\"display_name\\\": \\\"Loader\\\",\\n \\\"is_list\\\": True,\\n \\\"required\\\": True,\\n \\\"options\\\": loader_options,\\n \\\"value\\\": \\\"Automatic\\\",\\n },\\n }\\n\\n def build(self, directory_path: str, loader: str) -> Document:\\n # Verifique se o diretório existe\\n if not os.path.exists(directory_path):\\n raise ValueError(f\\\"Directory not found: {directory_path}\\\")\\n\\n files = glob.glob(directory_path + \\\"/*.*\\\")\\n\\n\\n loader_info = None\\n if loader == \\\"Automatic\\\":\\n for file in files:\\n file_type = file.split(\\\".\\\")[-1]\\n\\n\\n for info in self.loaders_info:\\n if \\\"defaultFor\\\" in info:\\n if file_type in info[\\\"defaultFor\\\"]:\\n loader_info = info\\n break\\n if loader_info:\\n break\\n\\n if not loader_info:\\n raise ValueError(\\n \\\"No default loader found for any file in the directory\\\"\\n )\\n\\n else:\\n for info in self.loaders_info:\\n if info[\\\"name\\\"] == loader:\\n loader_info = info\\n break\\n\\n if not loader_info:\\n raise ValueError(f\\\"Loader {loader} not found in the loader info list\\\")\\n\\n loader_import = loader_info[\\\"import\\\"]\\n module_name, class_name = loader_import.rsplit(\\\".\\\", 1)\\n\\n try:\\n # Importe o loader dinamicamente\\n loader_module = __import__(module_name, fromlist=[class_name])\\n loader_instance = getattr(loader_module, class_name)\\n except ImportError as e:\\n raise ValueError(\\n f\\\"Loader {loader} could not be imported\\\\nLoader info:\\\\n{loader_info}\\\"\\n ) from e\\n\\n results = []\\n for file in files:\\n file_path = os.path.join(directory_path, file)\\n kwargs = loader_info.get(\\\"kwargs\\\", {})\\n result = loader_instance(file_path=file_path, **kwargs).load()\\n results.append(result)\\n self.status = results\\n return results\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"directory_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"directory_path\",\"display_name\":\"Directory Path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"/Users/ogabrielluiz/Projects/langflow2/docs\"},\"loader\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"Automatic\",\"password\":false,\"options\":[\"Automatic\",\"Airbyte JSON (.jsonl)\",\"JSON (.json)\",\"BeautifulSoup4 HTML (.html, .htm)\",\"CSV (.csv)\",\"CoNLL-U (.conllu)\",\"EverNote (.enex)\",\"Facebook Chat (.json)\",\"Outlook Message (.msg)\",\"PyPDF (.pdf)\",\"Subtitle (.str)\",\"Text (.txt)\",\"Unstructured Email (.eml)\",\"Unstructured HTML (.html, .htm)\",\"Unstructured Markdown (.md)\",\"Unstructured PowerPoint (.pptx)\",\"Unstructured Word (.docx)\"],\"name\":\"loader\",\"display_name\":\"Loader\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true}},\"description\":\"Generic File Loader\",\"base_classes\":[\"Document\"],\"display_name\":\"Directory Loader\",\"custom_fields\":{\"directory_path\":null,\"loader\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Ip6tG\"},\"id\":\"CustomComponent-Ip6tG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:38.570303\",\"folder\":null,\"id\":\"5fe4debc-b6a7-45d4-a694-c02d8aa93b08\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Whisper Transcriber\",\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import Optional, List, Dict, Union\\nfrom langflow.field_typing import (\\n AgentExecutor,\\n BaseChatMemory,\\n BaseLanguageModel,\\n BaseLLM,\\n BaseLoader,\\n BaseMemory,\\n BaseOutputParser,\\n BasePromptTemplate,\\n BaseRetriever,\\n Callable,\\n Chain,\\n ChatPromptTemplate,\\n Data,\\n Document,\\n Embeddings,\\n NestedDict,\\n Object,\\n PromptTemplate,\\n TextSplitter,\\n Tool,\\n VectorStore,\\n)\\n\\nfrom openai import OpenAI\\nclass Component(CustomComponent):\\n display_name: str = \\\"Whisper Transcriber\\\"\\n description: str = \\\"Converts audio to text using OpenAI's Whisper.\\\"\\n\\n def build_config(self):\\n return {\\\"audio\\\":{\\\"field_type\\\":\\\"file\\\",\\\"suffixes\\\":[\\\".mp3\\\", \\\".mp4\\\", \\\".m4a\\\"]},\\\"OpenAIKey\\\":{\\\"field_type\\\":\\\"str\\\",\\\"password\\\":True}}\\n\\n def build(self, audio:str, OpenAIKey:str) -> str:\\n \\n # TODO: if output path, persist & load it instead\\n \\n client = OpenAI(api_key=OpenAIKey)\\n \\n audio_file= open(audio, \\\"rb\\\")\\n transcript = client.audio.transcriptions.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file,\\n response_format=\\\"text\\\"\\n )\\n \\n \\n self.status = transcript\\n return transcript\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"OpenAIKey\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"OpenAIKey\",\"display_name\":\"OpenAIKey\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"audio\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"suffixes\":[\".mp3\",\".mp4\",\".m4a\"],\"password\":false,\"name\":\"audio\",\"display_name\":\"audio\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"file_path\":\"/Users/rodrigonader/Library/Caches/langflow/19b3e1c9-90bf-405f-898a-e982f47adf76/a3308ce7e9b10088fcd985aabb6d17b012c6b6e81ff8806356574474c9d10229.m4a\",\"value\":\"Audio Recording 2023-11-29 at 12.12.04.m4a\"}},\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"base_classes\":[\"str\"],\"display_name\":\"Whisper Transcriber\",\"custom_fields\":{\"OpenAIKey\":null,\"audio\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-GJRrs\"},\"id\":\"CustomComponent-GJRrs\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:39.710502\",\"folder\":null,\"id\":\"bd9e911d-46bd-429f-aa75-dd740430695e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Youtube Conversation\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":589,\"id\":\"CustomComponent-h0NSI\",\"type\":\"genericNode\",\"position\":{\"x\":714.9531293402755,\"y\":0.4994374160582993},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import requests\\nfrom langflow import CustomComponent\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.schema import Document\\nfrom langchain.document_loaders import YoutubeLoader\\n\\n# Example usage:\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"YouTube Transcript\\\"\\n description: str = \\\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\\\"\\n\\n def build_config(self):\\n return {\\\"url\\\": {\\\"multiline\\\": True, \\\"required\\\": True}}\\n\\n def build(self, url: str, llm: BaseLLM, dependencies: Document, language: str = \\\"en\\\") -> Document:\\n dependencies\\n response = requests.get(url)\\n loader = YoutubeLoader.from_youtube_url(url, add_video_info=True, language=[language])\\n result = loader.load()\\n self.repr_value = str(result)\\n return result\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"dependencies\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"dependencies\",\"display_name\":\"dependencies\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":false},\"language\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"en\",\"password\":false,\"name\":\"language\",\"display_name\":\"language\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\",\"base_classes\":[\"Document\"],\"display_name\":\"YouTube Transcript\",\"custom_fields\":{\"dependencies\":null,\"language\":null,\"llm\":null,\"url\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-h0NSI\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":714.9531293402755,\"y\":0.4994374160582993}},{\"width\":384,\"height\":629,\"id\":\"ChatOpenAI-q61Y2\",\"type\":\"genericNode\",\"position\":{\"x\":18,\"y\":625.5521045590924},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo-16k\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-q61Y2\"},\"selected\":false,\"positionAbsolute\":{\"x\":18,\"y\":625.5521045590924},\"dragging\":false},{\"width\":384,\"height\":539,\"id\":\"Chroma-gVhy7\",\"type\":\"genericNode\",\"position\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"data\":{\"type\":\"Chroma\",\"node\":{\"template\":{\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.Client\",\"list\":false},\"client_settings\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client_settings\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.config.Setting\",\"list\":true},\"documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":true},\"embedding\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"embedding\",\"display_name\":\"Embedding\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Embeddings\",\"list\":false},\"chroma_server_cors_allow_origins\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_cors_allow_origins\",\"display_name\":\"Chroma Server CORS Allow Origins\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"chroma_server_grpc_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_grpc_port\",\"display_name\":\"Chroma Server GRPC Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_host\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_host\",\"display_name\":\"Chroma Server Host\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_http_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_http_port\",\"display_name\":\"Chroma Server HTTP Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_ssl_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"chroma_server_ssl_enabled\",\"display_name\":\"Chroma Server SSL Enabled\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"collection_metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"collection_metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"collection_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"collection_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"ids\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"ids\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"metadatas\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadatas\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":true},\"persist\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"persist\",\"display_name\":\"Persist\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"persist_directory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"persist_directory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"search_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"{}\",\"password\":false,\"name\":\"search_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"NestedDict\",\"list\":false},\"_type\":\"Chroma\"},\"description\":\"Create a Chroma vectorstore from a raw documents.\",\"base_classes\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Chroma\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/chroma\",\"beta\":false,\"error\":null},\"id\":\"Chroma-gVhy7\"},\"selected\":false,\"positionAbsolute\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"dragging\":false},{\"width\":384,\"height\":501,\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"type\":\"genericNode\",\"position\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"data\":{\"type\":\"RecursiveCharacterTextSplitter\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\nfrom langflow import CustomComponent\\nfrom langchain.schema import Document\\nfrom langflow.utils.util import build_loader_repr_from_documents\\n\\n\\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\\n display_name: str = \\\"Recursive Character Text Splitter\\\"\\n description: str = \\\"Split text into chunks of a specified length.\\\"\\n documentation: str = \\\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\\\"\\n\\n def build_config(self):\\n return {\\n \\\"documents\\\": {\\n \\\"display_name\\\": \\\"Documents\\\",\\n \\\"info\\\": \\\"The documents to split.\\\",\\n },\\n \\\"separators\\\": {\\n \\\"display_name\\\": \\\"Separators\\\",\\n \\\"info\\\": 'The characters to split on.\\\\nIf left empty defaults to [\\\"\\\\\\\\n\\\\\\\\n\\\", \\\"\\\\\\\\n\\\", \\\" \\\", \\\"\\\"].',\\n \\\"is_list\\\": True,\\n },\\n \\\"chunk_size\\\": {\\n \\\"display_name\\\": \\\"Chunk Size\\\",\\n \\\"info\\\": \\\"The maximum length of each chunk.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 1000,\\n },\\n \\\"chunk_overlap\\\": {\\n \\\"display_name\\\": \\\"Chunk Overlap\\\",\\n \\\"info\\\": \\\"The amount of overlap between chunks.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 200,\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n documents: list[Document],\\n separators: Optional[list[str]] = None,\\n chunk_size: Optional[int] = 1000,\\n chunk_overlap: Optional[int] = 200,\\n ) -> list[Document]:\\n \\\"\\\"\\\"\\n Split text into chunks of a specified length.\\n\\n Args:\\n separators (list[str]): The characters to split on.\\n chunk_size (int): The maximum length of each chunk.\\n chunk_overlap (int): The amount of overlap between chunks.\\n length_function (function): The function to use to calculate the length of the text.\\n\\n Returns:\\n list[str]: The chunks of text.\\n \\\"\\\"\\\"\\n from langchain.text_splitter import RecursiveCharacterTextSplitter\\n\\n if separators == \\\"\\\":\\n separators = None\\n elif separators:\\n # check if the separators list has escaped characters\\n # if there are escaped characters, unescape them\\n separators = [x.encode().decode(\\\"unicode-escape\\\") for x in separators]\\n\\n # Make sure chunk_size and chunk_overlap are ints\\n if isinstance(chunk_size, str):\\n chunk_size = int(chunk_size)\\n if isinstance(chunk_overlap, str):\\n chunk_overlap = int(chunk_overlap)\\n splitter = RecursiveCharacterTextSplitter(\\n separators=separators,\\n chunk_size=chunk_size,\\n chunk_overlap=chunk_overlap,\\n )\\n\\n docs = splitter.split_documents(documents)\\n self.repr_value = build_loader_repr_from_documents(docs)\\n return docs\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"chunk_overlap\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"50\",\"password\":false,\"name\":\"chunk_overlap\",\"display_name\":\"Chunk Overlap\",\"advanced\":false,\"dynamic\":false,\"info\":\"The amount of overlap between chunks.\",\"type\":\"int\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"400\",\"password\":false,\"name\":\"chunk_size\",\"display_name\":\"Chunk Size\",\"advanced\":false,\"dynamic\":false,\"info\":\"The maximum length of each chunk.\",\"type\":\"int\",\"list\":false},\"documents\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"The documents to split.\",\"type\":\"Document\",\"list\":true},\"separators\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"separators\",\"display_name\":\"Separators\",\"advanced\":false,\"dynamic\":false,\"info\":\"The characters to split on.\\nIf left empty defaults to [\\\"\\\\n\\\\n\\\", \\\"\\\\n\\\", \\\" \\\", \\\"\\\"].\",\"type\":\"str\",\"list\":true,\"value\":[\" \"]}},\"description\":\"Split text into chunks of a specified length.\",\"base_classes\":[\"Document\"],\"display_name\":\"Recursive Character Text Splitter\",\"custom_fields\":{\"chunk_overlap\":null,\"chunk_size\":null,\"documents\":null,\"separators\":null},\"output_types\":[\"RecursiveCharacterTextSplitter\"],\"documentation\":\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\",\"beta\":true,\"error\":null},\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"selected\":false,\"positionAbsolute\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"dragging\":false},{\"width\":384,\"height\":367,\"id\":\"OpenAIEmbeddings-cduOO\",\"type\":\"genericNode\",\"position\":{\"x\":1405.1176670984544,\"y\":1029.459061269321},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{'Authorization': 'Bearer '}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-cduOO\"},\"selected\":false,\"positionAbsolute\":{\"x\":1405.1176670984544,\"y\":1029.459061269321}},{\"width\":384,\"height\":339,\"id\":\"RetrievalQA-4PmTB\",\"type\":\"genericNode\",\"position\":{\"x\":2711.7786966415715,\"y\":709.4450828605463},\"data\":{\"type\":\"RetrievalQA\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"combine_documents_chain\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"combine_documents_chain\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseCombineDocumentsChain\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"retriever\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"retriever\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseRetriever\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"query\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"result\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_source_documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_source_documents\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"RetrievalQA\"},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\",\"beta\":false,\"error\":null},\"id\":\"RetrievalQA-4PmTB\"},\"selected\":false,\"positionAbsolute\":{\"x\":2711.7786966415715,\"y\":709.4450828605463}},{\"width\":384,\"height\":333,\"id\":\"CombineDocsChain-yk0JF\",\"type\":\"genericNode\",\"position\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"data\":{\"type\":\"CombineDocsChain\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"chain_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"stuff\",\"password\":false,\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"name\":\"chain_type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"_type\":\"load_qa_chain\"},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"\",\"beta\":false,\"error\":null},\"id\":\"CombineDocsChain-yk0JF\"},\"selected\":false,\"positionAbsolute\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"dragging\":false},{\"width\":384,\"height\":417,\"id\":\"CustomComponent-y6Wg0\",\"type\":\"genericNode\",\"position\":{\"x\":39.400034102832365,\"y\":-499.03551482195707},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nimport subprocess\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\nfrom typing import List\\n\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"PIP Install\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n\\n def build(self, libs: List[str]) -> Document:\\n def install_package(package_name):\\n subprocess.check_call([\\\"pip\\\", \\\"install\\\", package_name])\\n for lib in libs:\\n install_package(lib)\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"libs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"libs\",\"display_name\":\"libs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"requests\",\"pytube\"]}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Document\"],\"display_name\":\"PIP Install\",\"custom_fields\":{\"libs\":null},\"output_types\":[],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-y6Wg0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":39.400034102832365,\"y\":-499.03551482195707}}],\"edges\":[{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œBaseLLMœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}-CustomComponent-h0NSI{œfieldNameœ:œllmœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œBaseLLMœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"BaseLLM\"}}},{\"source\":\"CustomComponent-y6Wg0\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-y6Wg0œ}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{œfieldNameœ:œdependenciesœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-y6Wg0{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-y6Wg0œ}-CustomComponent-h0NSI{œfieldNameœ:œdependenciesœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-y6Wg0\"},\"targetHandle\":{\"fieldName\":\"dependencies\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"CustomComponent-h0NSI\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-h0NSIœ}\",\"target\":\"RecursiveCharacterTextSplitter-1eaOX\",\"targetHandle\":\"{œfieldNameœ:œdocumentsœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-h0NSI{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-h0NSIœ}-RecursiveCharacterTextSplitter-1eaOX{œfieldNameœ:œdocumentsœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-h0NSI\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"inputTypes\":null,\"type\":\"Document\"}},\"selected\":false},{\"source\":\"OpenAIEmbeddings-cduOO\",\"sourceHandle\":\"{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-cduOOœ}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{œfieldNameœ:œembeddingœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAIEmbeddings-cduOO{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-cduOOœ}-Chroma-gVhy7{œfieldNameœ:œembeddingœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"dataType\":\"OpenAIEmbeddings\",\"id\":\"OpenAIEmbeddings-cduOO\"},\"targetHandle\":{\"fieldName\":\"embedding\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Embeddings\"}}},{\"source\":\"RecursiveCharacterTextSplitter-1eaOX\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{œfieldNameœ:œdocumentsœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-RecursiveCharacterTextSplitter-1eaOX{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ}-Chroma-gVhy7{œfieldNameœ:œdocumentsœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"RecursiveCharacterTextSplitter\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}\",\"target\":\"CombineDocsChain-yk0JF\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-yk0JFœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}-CombineDocsChain-yk0JF{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-yk0JFœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CombineDocsChain-yk0JF\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}}},{\"source\":\"CombineDocsChain-yk0JF\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œfunctionœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-yk0JFœ}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CombineDocsChain-yk0JF{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œfunctionœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-yk0JFœ}-RetrievalQA-4PmTB{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseCombineDocumentsChain\",\"function\"],\"dataType\":\"CombineDocsChain\",\"id\":\"CombineDocsChain-yk0JF\"},\"targetHandle\":{\"fieldName\":\"combine_documents_chain\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseCombineDocumentsChain\"}}},{\"source\":\"Chroma-gVhy7\",\"sourceHandle\":\"{œbaseClassesœ:[œVectorStoreœ,œChromaœ,œBaseRetrieverœ,œVectorStoreRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-gVhy7œ}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-Chroma-gVhy7{œbaseClassesœ:[œVectorStoreœ,œChromaœ,œBaseRetrieverœ,œVectorStoreRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-gVhy7œ}-RetrievalQA-4PmTB{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"dataType\":\"Chroma\",\"id\":\"Chroma-gVhy7\"},\"targetHandle\":{\"fieldName\":\"retriever\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseRetriever\"}}}],\"viewport\":{\"x\":189.54413265004274,\"y\":259.89949657174975,\"zoom\":0.291027508374689}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:59:08.830269\",\"folder\":null,\"id\":\"bc7eb94b-6fc6-49cb-9b19-35347ba51afa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Web Scraper - Content & Links\",\"description\":\"Fetch and parse text and links from a given URL.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-H7PBy\",\"type\":\"genericNode\",\"position\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-H7PBy\"},\"selected\":false,\"positionAbsolute\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VSAdc\",\"type\":\"genericNode\",\"position\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VSAdc\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859}},{\"width\":384,\"height\":374,\"data\":{\"id\":\"GroupNode-WXPMk\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"give me links\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-f6nOg{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-0XtUN{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}-CustomComponent-ODIcp{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-CustomComponent-FGzJJ{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-PromptTemplate-H9Udy{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}-CustomComponent-whsQ5{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"id\":\"GroupNode-WXPMk\",\"position\":{\"x\":873.0737834322758,\"y\":598.8401015776466},\"type\":\"genericNode\",\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":873.0737834322758,\"y\":598.8401015776466}}],\"edges\":[{\"source\":\"ChatOpenAI-VSAdc\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VSAdcœ}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VSAdc\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VSAdc{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VSAdcœ}-LLMChain-H7PBy{œfieldNameœ:œllmœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"GroupNode-WXPMk\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œGroupNode-WXPMkœ}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"GroupNode-WXPMk\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-GroupNode-WXPMk{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œGroupNode-WXPMkœ}-LLMChain-H7PBy{œfieldNameœ:œpromptœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":-348.6161822813733,\"y\":121.40545291211492,\"zoom\":0.6801854262029781}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:22:27.784647\",\"folder\":null,\"id\":\"efc3bf27-3cf1-4561-9a83-3df347572440\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Joliot\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-RQsU1\",\"type\":\"genericNode\",\"position\":{\"x\":514.4440482813261,\"y\":528.164086188516},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RQsU1\"},\"selected\":false,\"positionAbsolute\":{\"x\":514.4440482813261,\"y\":528.164086188516}},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-NTTcv\",\"type\":\"genericNode\",\"position\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-NTTcv\"},\"selected\":false,\"positionAbsolute\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055}},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-VELMV\",\"type\":\"genericNode\",\"position\":{\"x\":-222,\"y\":682.560723386973},\"data\":{\"id\":\"PromptTemplate-VELMV\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-f6nOg{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-0XtUN{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}-CustomComponent-ODIcp{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-CustomComponent-FGzJJ{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-PromptTemplate-H9Udy{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}-CustomComponent-whsQ5{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"selected\":false,\"positionAbsolute\":{\"x\":-222,\"y\":682.560723386973}}],\"edges\":[{\"source\":\"ChatOpenAI-NTTcv\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-NTTcvœ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-NTTcv{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-NTTcvœ}-LLMChain-RQsU1{œfieldNameœ:œllmœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-NTTcv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-VELMV\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-VELMVœ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"id\":\"reactflow__edge-PromptTemplate-VELMV{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-VELMVœ}-LLMChain-RQsU1{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-VELMV\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":298.29888454238517,\"y\":96.95765543775741,\"zoom\":0.5140569133280332}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:23:08.584967\",\"folder\":null,\"id\":\"5df79f1d-f592-4d59-8c0f-9f3c2f6465b1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Pasteur\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-cHel8\",\"type\":\"genericNode\",\"position\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-cHel8\"},\"selected\":false,\"positionAbsolute\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-LA6y0\",\"type\":\"genericNode\",\"position\":{\"x\":-272.94405331278074,\"y\":-603.148171441675},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-LA6y0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-272.94405331278074,\"y\":-603.148171441675}},{\"width\":384,\"height\":404,\"id\":\"CustomComponent-ZNoRM\",\"type\":\"genericNode\",\"position\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ZNoRM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"CustomComponent-zNSTv\",\"type\":\"genericNode\",\"position\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-zNSTv\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-Ihm2o\",\"type\":\"genericNode\",\"position\":{\"x\":-554.9404152016002,\"y\":683.6763775860567},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-Ihm2o\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-554.9404152016002,\"y\":683.6763775860567}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-6ST9l\",\"type\":\"genericNode\",\"position\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-6ST9l\"},\"selected\":false,\"positionAbsolute\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"dragging\":false},{\"width\":384,\"height\":654,\"id\":\"PromptTemplate-l35W1\",\"type\":\"genericNode\",\"position\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"display_name\":\"output_parser\"},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"input_types\"},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"display_name\":\"input_variables\"},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"partial_variables\"},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"display_name\":\"template\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"display_name\":\"template_format\"},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"display_name\":\"validate_template\"},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-l35W1\"},\"selected\":false,\"positionAbsolute\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"dragging\":false},{\"width\":384,\"height\":346,\"id\":\"CustomComponent-iTLf4\",\"type\":\"genericNode\",\"position\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"https://paperswithcode.com/\"}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-iTLf4\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-jWLUz\",\"type\":\"genericNode\",\"position\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-jWLUz\"},\"selected\":false,\"positionAbsolute\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"dragging\":false}],\"edges\":[{\"source\":\"ChatOpenAI-LA6y0\",\"target\":\"LLMChain-cHel8\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-LA6y0œ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-LA6y0{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-LA6y0œ}-LLMChain-cHel8{œfieldNameœ:œllmœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-LA6y0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}\",\"target\":\"CustomComponent-ZNoRM\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-ZNoRMœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-ZNoRM\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}-CustomComponent-ZNoRM{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-ZNoRMœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}\",\"target\":\"CustomComponent-Ihm2o\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-Ihm2oœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-Ihm2o\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}-CustomComponent-Ihm2o{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-Ihm2oœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-Ihm2o\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-Ihm2oœ}\",\"target\":\"CustomComponent-6ST9l\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-6ST9lœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-6ST9l\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-Ihm2o\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-Ihm2o{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-Ihm2oœ}-CustomComponent-6ST9l{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-6ST9lœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}\",\"target\":\"CustomComponent-zNSTv\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-zNSTvœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-zNSTv\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}-CustomComponent-zNSTv{œfieldNameœ:œurlœ,œidœ:œCustomComponent-zNSTvœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}-PromptTemplate-l35W1{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-6ST9l\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-6ST9lœ}\",\"target\":\"CustomComponent-jWLUz\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-jWLUzœ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-jWLUz\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-6ST9l\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-6ST9l{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-6ST9lœ}-CustomComponent-jWLUz{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-jWLUzœ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":false},{\"source\":\"CustomComponent-jWLUz\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-jWLUzœ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-jWLUz\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-jWLUz{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-jWLUzœ}-PromptTemplate-l35W1{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-ZNoRM\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ZNoRMœ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ZNoRM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ZNoRM{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ZNoRMœ}-PromptTemplate-l35W1{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"PromptTemplate-l35W1\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-l35W1œ}\",\"target\":\"LLMChain-cHel8\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-l35W1\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-mJqEg{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-mJqEgœ}-LLMChain-cHel8{œfieldNameœ:œpromptœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":206.6159172940935,\"y\":79.94375811155385,\"zoom\":0.5140569133280333}},\"is_component\":false,\"updated_at\":\"2023-12-06T00:23:04.515144\",\"folder\":null,\"id\":\"ecfb377a-7e88-405d-8d66-7560735ce446\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Lovelace\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:43:25.925753\",\"folder\":null,\"id\":\"30e71767-6128-40e4-9a6d-b9197b679971\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Custom Component\",\"description\":\"Create any custom component you want!\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Data) -> Data:\\n return param\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Data\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"CustomComponent\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-IxJqc\"},\"id\":\"CustomComponent-IxJqc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-05T22:08:27.080204\",\"folder\":null,\"id\":\"f3c56abb-96d8-4a09-80d3-f60181661b3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Wilson\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-05T23:49:58.272677\",\"folder\":null,\"id\":\"324499a6-17a6-49de-96b1-b88955ed2c3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Kowalevski\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:27.084387\",\"folder\":null,\"id\":\"e3168485-d31b-472a-907f-faf833bf7824\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Fermi\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.134463\",\"folder\":null,\"id\":\"d0ecea5d-bcf9-4b8e-88f0-3c243d309336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Friendly Ardinghelli\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.138184\",\"folder\":null,\"id\":\"a406912d-b0e2-4954-bef3-ee80c29eca3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Easley\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162908\",\"folder\":null,\"id\":\"57b32155-4c6e-4823-ad03-8dd09d8abc62\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Varahamihira\",\"description\":\"Create, Chain, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.135644\",\"folder\":null,\"id\":\"18daa0ff-2e5d-457a-95d7-710affec5c4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Joliot\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.139496\",\"folder\":null,\"id\":\"9255e938-280e-4ce7-91cd-8622126a7d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Carroll\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162240\",\"folder\":null,\"id\":\"a7a680b9-30b1-4438-ac24-da597de443aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Herschel\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:46:02.593504\",\"folder\":null,\"id\":\"37a439b0-7b1d-45e3-b4fa-5c73669bae3b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Joliot\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:04.845238\",\"folder\":null,\"id\":\"4d23fd0a-8ad5-46b9-bb99-eed4138e7426\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Babbage\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:41.899665\",\"folder\":null,\"id\":\"1c8ad5b9-5524-41fe-a762-52c75126b832\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Brown\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.702031\",\"folder\":null,\"id\":\"9d4c8e79-4904-4a51-a4bb-146c3d8db10e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Mahavira\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.786331\",\"folder\":null,\"id\":\"4ba370d1-1f8e-4a23-99aa-99e2cd9b7cbf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Gates\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.838989\",\"folder\":null,\"id\":\"992c3cd3-1d79-4986-8c04-88a34130fa30\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Mcclintock\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.932723\",\"folder\":null,\"id\":\"a65bfd13-44df-4090-aca0-5057e21e9997\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Feynman\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.931359\",\"folder\":null,\"id\":\"7a05dac5-c005-411d-9994-19d61e71ce78\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Perlman\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.054687\",\"folder\":null,\"id\":\"6db24541-7211-48e6-a792-1a4a99a0ef90\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Colden\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.078384\",\"folder\":null,\"id\":\"13ac42e8-9124-4bf4-9ea2-28671ef2d9a4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kaku\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:50:33.156776\",\"folder\":null,\"id\":\"79262d75-5c62-4b14-b067-f4297f5c912f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:13.295375\",\"folder\":null,\"id\":\"3b397e74-d8be-4728-9d6c-05f7c78106a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Mccarthy\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:27.632685\",\"folder\":null,\"id\":\"13f4e1fd-45eb-4271-92fd-0d70a31c61d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Lalande\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:54.628983\",\"folder\":null,\"id\":\"9cfd60d8-9311-47b0-b71b-f488f1940bc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Mirzakhani\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:52:52.622698\",\"folder\":null,\"id\":\"0d849403-0f75-455d-b4e4-0d622ee3305a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Brown\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:06.056636\",\"folder\":null,\"id\":\"8643ba14-52d6-4d36-9981-5fd37de5dd76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Kickass Watt\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:23.338727\",\"folder\":null,\"id\":\"818d3066-bf08-4bf9-adcd-739f8abbfa5d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:41.218861\",\"folder\":null,\"id\":\"28eff43e-0ecf-47bf-9851-f1492589978e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Optimistic Jennings\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:03.681106\",\"folder\":null,\"id\":\"68f59069-bc2a-464f-a983-4b61e32e01af\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Mirzakhani\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:31.761949\",\"folder\":null,\"id\":\"5d981c0e-81b3-44cc-a5be-8f55b92bfed5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:56:45.548598\",\"folder\":null,\"id\":\"e812ad47-47e8-422b-b94c-84fd0263c9c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Fermat\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:58:50.234270\",\"folder\":null,\"id\":\"82aaf449-e737-4699-9360-929ab6108dc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Albattani\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:59:53.946035\",\"folder\":null,\"id\":\"097cb080-274b-40ca-8dde-7900a949568a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kirch\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:00:51.745350\",\"folder\":null,\"id\":\"837d7b5f-8495-46a9-b00e-ad1b7ebb52f4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Kowalevski\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:02:53.336102\",\"folder\":null,\"id\":\"3ff079c2-d9f9-4da6-a22a-423fa35670ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Stallman\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:28.268357\",\"folder\":null,\"id\":\"c8b204dd-3d57-4bc8-aa13-1d559672e75b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Swirles\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:51.194455\",\"folder\":null,\"id\":\"a097f083-5880-4cf7-986b-51898bc68e11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dreamy Williams\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:04:36.678251\",\"folder\":null,\"id\":\"d9585f63-ce76-42ce-87bc-8e69601ea5c6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Hawking\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:05:13.672479\",\"folder\":null,\"id\":\"612a01d5-8c8d-4cc1-8c54-35626b7f4a6d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Kilby\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:10:37.047955\",\"folder\":null,\"id\":\"2d05a598-3cdf-452a-bd5d-b0e569e562e3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Insane Cori\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:12.426578\",\"folder\":null,\"id\":\"d1769a4a-c1e9-4d74-9273-1e76cfcf21f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Compassionate Tesla\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:52.806238\",\"folder\":null,\"id\":\"28c5d9dd-0466-4c80-9e58-b1e061cd358d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Goldstine\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:21:44.488510\",\"folder\":null,\"id\":\"b3c57e4f-28a1-4580-bf08-a9484bdd66e8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elegant Curie\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:23:47.610237\",\"folder\":null,\"id\":\"28fb024e-6ba1-4f5b-83b3-4742b3b8117c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Chandrasekhar\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:24:29.824530\",\"folder\":null,\"id\":\"d2b87cf7-9167-4030-8e9f-b8d9aa0cadee\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Nobel\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:26:51.210699\",\"folder\":null,\"id\":\"c2c9fbac-7d97-40c2-8055-dff608df9414\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Edison\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:27:35.822482\",\"folder\":null,\"id\":\"a55561cd-4b25-473f-bde5-884cbabb0d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Lichterman\",\"description\":\"Building Linguistic Labyrinths.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:29:09.259381\",\"folder\":null,\"id\":\"9c6fe6d4-8311-4fc6-8b02-2a816d7c059d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Bhaskara\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:31:36.053452\",\"folder\":null,\"id\":\"ef6fc1ab-aff8-45a1-8cd5-bc8e38565e4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Watt\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:32:26.765250\",\"folder\":null,\"id\":\"499b5351-9c09-4934-9f9d-a24be2fd8b24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Wien\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:33:23.648859\",\"folder\":null,\"id\":\"a57eda91-7f6e-410d-9990-385fe0c724f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Spence\",\"description\":\"Mapping Meaningful Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:34:22.576407\",\"folder\":null,\"id\":\"685f685e-8a1b-4b7e-9e21-6cdd72163c91\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Fermat\",\"description\":\"Create, Connect, Converse.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:35:44.920540\",\"folder\":null,\"id\":\"3e061766-b834-4fa4-ba9c-b060925d9703\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Volta\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:36:33.001572\",\"folder\":null,\"id\":\"135f2fd9-e005-40bc-a9bf-c25107388415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:37:16.208823\",\"folder\":null,\"id\":\"167cdb24-7e1c-475b-893a-cca2f125426c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Sinoussi\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:38:07.215401\",\"folder\":null,\"id\":\"48113cab-2c04-493f-8c2e-c8d067826aa2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Sagan\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:39:19.479656\",\"folder\":null,\"id\":\"28d292dc-e094-4ffe-a657-178892933267\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Hoover\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:02.895859\",\"folder\":null,\"id\":\"0c9849b7-b2d6-4d0e-8334-abfb3ae183dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Mendeleev\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:27.867247\",\"folder\":null,\"id\":\"d78c52e9-1941-4555-9bb9-abd01f176705\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Dubinsky\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:41:23.177402\",\"folder\":null,\"id\":\"5277a04c-b5da-4597-aaa2-a6b66ea11d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Poitras\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:08.731865\",\"folder\":null,\"id\":\"b0d0c8de-4eea-484a-a068-b13e63f7e71c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Ptolemy\",\"description\":\"Crafting Conversations, One Node at a Time.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:25.658996\",\"folder\":null,\"id\":\"b6f155e2-03eb-4232-9bab-145463382fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Loving Cray\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:43:57.530112\",\"folder\":null,\"id\":\"b75c10ca-9ecb-432b-88ab-e1847e836e22\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Pasteur\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:44:58.979393\",\"folder\":null,\"id\":\"3710eccb-e7a7-41d5-9339-d9c301515d17\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Gates\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:45:42.744174\",\"folder\":null,\"id\":\"fdd2271e-92f6-4349-8c01-2ec0e9e73f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Determined Khorana\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:10.084684\",\"folder\":null,\"id\":\"88b49a97-0888-4fea-8d9b-6ac2cc6d158e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Booth\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:41.577750\",\"folder\":null,\"id\":\"629afe54-8796-45be-a570-e3ac79c60792\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Mendeleev\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:47:22.631243\",\"folder\":null,\"id\":\"7bf481b0-73fe-4f5b-a3d4-1263d9d8e827\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Clever Varahamihira\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:49:51.026960\",\"folder\":null,\"id\":\"df9e86b6-56c9-4848-9010-102615314766\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Stallman\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:50:14.932236\",\"folder\":null,\"id\":\"3e66994c-9b7a-4b85-a917-65d1959d7352\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Wozniak\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:51:13.811894\",\"folder\":null,\"id\":\"d10f924a-5780-4255-9f41-3e102ae03e84\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hopeful Mirzakhani\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:23.906908\",\"folder\":null,\"id\":\"f3378fa8-ccaf-4a3b-90d6-b8ab0c4e481f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Joule\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:43.863440\",\"folder\":null,\"id\":\"deaa50e7-a8b1-46b1-856c-334ee781e1c2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Shockley\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:53:43.299699\",\"folder\":null,\"id\":\"c72eac2c-d924-40c6-a102-da524216d090\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Dewey\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:54:18.848827\",\"folder\":null,\"id\":\"d9425324-bb60-462e-b431-90a536f2bc76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Joliot\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:12.348608\",\"folder\":null,\"id\":\"621ba134-3fac-487c-98cd-96941439f1be\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Backstabbing Franklin\",\"description\":\"Craft Language Connections Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.491824\",\"folder\":null,\"id\":\"86ca9773-c7b7-4a1a-859a-6cbe0ddff206\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Swartz\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.524414\",\"folder\":null,\"id\":\"da1c02b7-d608-4498-9946-7d02f55fa103\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Volta\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.641432\",\"folder\":null,\"id\":\"8d5dd998-6b51-4f65-8331-086a7f3b11d7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Lichterman\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746120\",\"folder\":null,\"id\":\"942027d3-e2ea-48c6-8279-0a41b54e8862\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Einstein\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746904\",\"folder\":null,\"id\":\"9e9b6298-1073-4297-8ecc-3c620b432e70\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Planck\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.747420\",\"folder\":null,\"id\":\"7cd60c83-b797-4e60-af6d-cbc540657943\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Zobell\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.749951\",\"folder\":null,\"id\":\"dab08306-9521-4e15-aa11-e6a6a4e210f8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Knuth\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:16.772119\",\"folder\":null,\"id\":\"c9149590-636a-44f5-aaae-45a4e78fe4df\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Wright\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:52.954568\",\"folder\":null,\"id\":\"6b23b2ad-c07c-46f6-b9ad-268783d1712e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Vibrant Lalande\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.656156\",\"folder\":null,\"id\":\"ece3bcf6-a147-4559-862e-cacff9db5f48\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Gauss\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.717991\",\"folder\":null,\"id\":\"252b6021-ecad-4eaf-9e2f-106c4c89c496\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gigantic Rosalind\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.736261\",\"folder\":null,\"id\":\"b8cb6d8d-c0fb-4e8d-a46e-2c608dc8a714\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Hubble\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.769546\",\"folder\":null,\"id\":\"553a67db-7225-474c-978e-8a40cde2bfb2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Mclean\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.981063\",\"folder\":null,\"id\":\"e0865007-4d80-4edf-87ab-9e8d2892d719\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Murdock\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.982286\",\"folder\":null,\"id\":\"1021cd20-66e0-4b81-9c79-bfe729774d20\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Riemann\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.983216\",\"folder\":null,\"id\":\"089074d3-8a1e-4d85-a59d-b4717090e4d3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Tesla\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:00:35.704142\",\"folder\":null,\"id\":\"beb49d88-255e-4db4-931b-4ab4358f1097\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Boyd\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:13.569507\",\"folder\":null,\"id\":\"75b5ab8d-e0c0-43cf-912b-8578550e198a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Babbage\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:27.944868\",\"folder\":null,\"id\":\"503edd55-8f70-43e5-87fb-2324eaf62336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Bose\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:02:40.122079\",\"folder\":null,\"id\":\"ae4f2992-1a23-4a43-bec6-68b823935762\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Coulomb\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.263237\",\"folder\":null,\"id\":\"a2a464db-b02a-4440-ad9e-7b552ee6c027\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Drunk Newton\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.883766\",\"folder\":null,\"id\":\"1a5d9af7-5a96-4035-a09c-e15741785828\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Pasteur\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.933083\",\"folder\":null,\"id\":\"04b94873-0828-41dc-a850-fd4132c9b9f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Spence\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.967685\",\"folder\":null,\"id\":\"47003dc2-7884-48a3-aa66-e4185079f4d9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Noyce\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.983198\",\"folder\":null,\"id\":\"13769cb4-2e15-4d54-a28a-c97dc15db58c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Edison\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.018879\",\"folder\":null,\"id\":\"453dacde-6b10-406b-a5b3-f90f44be6899\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Snyder\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.205689\",\"folder\":null,\"id\":\"9544fac9-3002-47aa-86b9-102844fe9649\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khorana\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.243434\",\"folder\":null,\"id\":\"90498ef6-34f9-45c8-8cd0-fe6a36a26f41\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Albattani\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:05:07.775497\",\"folder\":null,\"id\":\"9577c416-8ce8-48f6-ad6d-ab2e003bb415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Charming Goodall\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:07:52.139318\",\"folder\":null,\"id\":\"f10dc08e-b9c7-44b3-8837-b95aee2f6dbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Ramanujan\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:08:22.448480\",\"folder\":null,\"id\":\"c864bd8c-67cd-465f-bf7d-7a35c7df37f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Mclean\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:09:56.507826\",\"folder\":null,\"id\":\"f0c13b19-ae23-40e6-88d6-d135897ee100\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Hawking\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:10:27.169757\",\"folder\":null,\"id\":\"0afb91b4-8f41-4270-900a-f5de647d45ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Lovelace\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:02.292233\",\"folder\":null,\"id\":\"0f1e5dcf-8769-4157-b495-5f215b490107\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Kilby\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:46.960966\",\"folder\":null,\"id\":\"310d03d9-dd50-4946-9a27-38ee06906212\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Almeida\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:12:24.475101\",\"folder\":null,\"id\":\"3cbc8fc2-a86f-4177-9a1c-a833b2a24283\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Roentgen\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:06.753571\",\"folder\":null,\"id\":\"c508e922-29e9-4234-84ae-505c5bdf41c1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Poitras\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.754605\",\"folder\":null,\"id\":\"1431df05-1b6f-41af-a063-a18d26a946ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khayyam\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.791627\",\"folder\":null,\"id\":\"344e03fb-fd49-4e87-be67-7dce04ba655b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zealous Mayer\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.803889\",\"folder\":null,\"id\":\"8b3ff1cb-3a6c-46ee-b09a-0e9f9f13a8b9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Ramanujan\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.822583\",\"folder\":null,\"id\":\"18961e76-f4b1-4968-926a-fed22cb04f69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Franklin\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.854440\",\"folder\":null,\"id\":\"0e0ee854-ab46-4333-a848-2e1239a24334\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Swirles\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.988932\",\"folder\":null,\"id\":\"cc7b8238-3d15-4f78-bd0c-8311691c9ff8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Swartz\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:08.028688\",\"folder\":null,\"id\":\"123369f9-c83c-4ed3-93b6-78ca29c271cf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kowalevski\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.097607\",\"folder\":null,\"id\":\"ed4b1490-e9e5-46bf-b337-166b48eaadd6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Golick\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.617772\",\"folder\":null,\"id\":\"9d1be311-c618-4e3e-aeb1-4161ab37850e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Newton\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.646124\",\"folder\":null,\"id\":\"63a75f99-1745-40d3-9e27-3d19a143be45\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Noyce\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.685781\",\"folder\":null,\"id\":\"b418ca87-eb17-42e8-b789-3fcb0cab3ddb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fluffy Fermat\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.705984\",\"folder\":null,\"id\":\"93802b07-eee9-4a2b-8691-7d9a231bd67e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Stoic Payne\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.723990\",\"folder\":null,\"id\":\"d62df661-0ae5-4b41-a9fb-71cb2e46ad52\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Darwin\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.818343\",\"folder\":null,\"id\":\"d1f62248-415c-474a-bfa6-3509a528a33b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Thompson\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.925999\",\"folder\":null,\"id\":\"d2267176-f020-4c52-90a4-7f944d7c1749\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Dewey\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:07.400402\",\"folder\":null,\"id\":\"8cf1ac8d-d34d-4e8a-a9da-be44672e1dfb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Zuse\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.384611\",\"folder\":null,\"id\":\"bae3cb5b-0f1b-4e95-bf58-7eab38da3d73\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hungry Zuse\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.436591\",\"folder\":null,\"id\":\"4dfafe3e-e9ef-405d-be72-550084411d69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Khayyam\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.435958\",\"folder\":null,\"id\":\"e0f81215-dc55-4b5a-b8cf-6e2fcbf297a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Mendel\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.470080\",\"folder\":null,\"id\":\"5022a71c-da47-4975-a4d0-6d2d9e760d3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Inquisitive Poitras\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.484430\",\"folder\":null,\"id\":\"4f1ff9e3-3500-404c-80af-2010bc46cdcb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Jones\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.661306\",\"folder\":null,\"id\":\"77af3e47-c2cc-42f6-99e1-78589439a447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.662877\",\"folder\":null,\"id\":\"6f3e2e56-b329-47e3-86cc-024c29203016\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Visvesvaraya\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.092917\",\"folder\":null,\"id\":\"449ac0ee-ee29-4a9f-9aff-fd6a86624457\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Tesla\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.630382\",\"folder\":null,\"id\":\"a2136ed3-dc75-4a8f-ab34-6887ff955b23\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noether\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.652058\",\"folder\":null,\"id\":\"fd1080f8-db07-481a-b2ba-60f67fcb20a6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Pasteur\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.688661\",\"folder\":null,\"id\":\"d534d5e1-92aa-4fb2-a795-7071c4feba47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Sinoussi\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.741385\",\"folder\":null,\"id\":\"85323170-c066-4d8f-acb0-1b142241389e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Ramanujan\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.790086\",\"folder\":null,\"id\":\"b0d18432-21ab-404b-acb6-57ef97353fad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sick Joliot\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-rVj1B\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-rVj1B\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":267.7156633365312,\"y\":716.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T18:52:26.999440\",\"folder\":null,\"id\":\"be39958a-ef42-4fa8-8e54-b611e56b5c97\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Graceful Lumiere\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:11.012069\",\"folder\":null,\"id\":\"f7dcecfd-533c-4f40-9dcb-f213962ed1a2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"aaaaa\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-P6Z0D\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-P6Z0D\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":266.7156633365312,\"y\":657.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T19:05:14.503144\",\"folder\":null,\"id\":\"c2411a20-57c6-44cc-a0d0-2c857453633d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Aryabhata\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":459,\"id\":\"CustomComponent-Qhbd7\",\"type\":\"genericNode\",\"position\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom openai import OpenAI\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"OpenAI STT english translator\\\"\\n description: str = \\\"Transcript and translate any audio to english\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"audio_path\\\":{\\\"display_name\\\":\\\"Audio path\\\",\\\"input_types\\\":[\\\"str\\\"]},\\\"openAI_key\\\":{\\\"display_name\\\":\\\"OpenAI key\\\",\\\"password\\\":True}}\\n\\n def build(self,audio_path:str,openAI_key:str) -> str:\\n client = OpenAI(api_key=openAI_key)\\n audio_file= open(audio_path, \\\"rb\\\")\\n transcript = client.audio.translations.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file\\n )\\n self.status = transcript.text\\n return transcript.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"audio_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"audio_path\",\"display_name\":\"Audio path\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"aaaaa\"},\"openAI_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openAI_key\",\"display_name\":\"OpenAI key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Transcript and translate any audio to english\",\"base_classes\":[\"str\"],\"display_name\":\"OpenAI STT english tra\",\"custom_fields\":{\"audio_path\":null,\"openAI_key\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Qhbd7\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913}}],\"edges\":[],\"viewport\":{\"x\":433.8372868055629,\"y\":250.9611989970935,\"zoom\":0.8467453123625275}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:16:56.971879\",\"folder\":null,\"id\":\"122eee5d-9734-4e51-9da5-b39bead64a8d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Wing\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:23.227017\",\"folder\":null,\"id\":\"171d0063-6446-4c6a-8f5b-786a38951d44\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Boyd\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.063781\",\"folder\":null,\"id\":\"3a7af50c-6555-4004-a86e-1ea37e477900\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Dewey\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.065404\",\"folder\":null,\"id\":\"dc4b4235-a550-41e2-9ddb-bcb352a1bc03\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Carroll\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.087501\",\"folder\":null,\"id\":\"9550e2bf-db7a-41f5-84e5-177a181bbeda\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Engelbart\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.112543\",\"folder\":null,\"id\":\"6a3a24bb-01cb-4d8e-8d17-0dc92d257322\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sassy Khayyam\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.147631\",\"folder\":null,\"id\":\"8d372f5e-ca12-4ea8-a1a1-8846afa72692\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Bell\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.212921\",\"folder\":null,\"id\":\"800f8785-0f41-4db3-aef8-9e3de5250526\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Bassi\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.395729\",\"folder\":null,\"id\":\"4589607a-065b-4a8f-ba52-5045d7b04086\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Volhard\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.263971\",\"folder\":null,\"id\":\"b2440ed8-44fa-4684-adf7-b5e84bff6577\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Ecstatic Poincare\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.377270\",\"folder\":null,\"id\":\"b996f514-e0b8-432f-969b-7276630a8f4b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Zuse\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.406385\",\"folder\":null,\"id\":\"6e2e9c12-0afc-499e-acdd-adf4b5f7d4fc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Hopper\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.413014\",\"folder\":null,\"id\":\"e020f1a5-aa12-45e7-ba50-6eb64a735e60\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Jang\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.433045\",\"folder\":null,\"id\":\"ee58f892-b7b2-408e-b4b9-9d862fc315aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Ohm\",\"description\":\"Promptly Ingenious!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.403404\",\"folder\":null,\"id\":\"023a1fc3-8807-4167-b6b2-f4e5daf036f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Degrasse\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.411655\",\"folder\":null,\"id\":\"085f106f-c1e9-4a0f-ba31-d2fafe685d9c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Volta\",\"description\":\"Catalyzing Business Growth through Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.408697\",\"folder\":null,\"id\":\"14481bb5-1353-452f-9359-d38c9419d79c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:21.774940\",\"folder\":null,\"id\":\"e9316292-4ee1-441b-8327-0b09a7831fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Easley\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.416556\",\"folder\":null,\"id\":\"668806ba-3efa-44de-aeb7-4ac082ba9172\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Mestorf\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.484048\",\"folder\":null,\"id\":\"3fc0a371-aada-4450-9d17-33d3cc05c870\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Franklin\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.509095\",\"folder\":null,\"id\":\"af967c98-5f08-4ee2-b1ce-6c16b4f9ebe2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bhaskara\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.508465\",\"folder\":null,\"id\":\"758c4164-b521-45d0-a15f-d49480e312eb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Edison\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.602296\",\"folder\":null,\"id\":\"f9d3d30f-8859-433f-bafc-ccf1a7196e35\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Ride\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.604061\",\"folder\":null,\"id\":\"0142bca5-eb61-42ed-9917-70c4c0f54eb0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noyce\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.603113\",\"folder\":null,\"id\":\"0b63d036-4669-4ceb-8ea4-34035340df77\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Bhabha\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.345767\",\"folder\":null,\"id\":\"8b9a66d4-a924-4b84-a2b5-5dd0645ac07a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Zobell\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.722319\",\"folder\":null,\"id\":\"c912fd6b-b32d-409f-a0e5-c6249b066429\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Shaw\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.750779\",\"folder\":null,\"id\":\"9d755cd4-c652-43e0-a68d-75a5475ce7a3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Giggly Newton\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.786602\",\"folder\":null,\"id\":\"0d3af7de-1ada-4c43-a69f-1bfad370ccfc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Yalow\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.792245\",\"folder\":null,\"id\":\"b6444376-4162-436b-8b40-f5a6afc850db\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Bhabha\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.890349\",\"folder\":null,\"id\":\"d90af439-fb34-4d27-98f2-06f7f9a9ed8c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Spirited Hoover\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.905750\",\"folder\":null,\"id\":\"31597ce2-de3c-490b-9ead-3f702f63cfd9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Davinci\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:08.001400\",\"folder\":null,\"id\":\"b43c63e9-a257-4a53-8acc-049e13706ac2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"23\",\"description\":\"23\",\"data\":{\"nodes\":[{\"width\":384,\"height\":467,\"id\":\"PromptTemplate-K7xiS\",\"type\":\"genericNode\",\"position\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"dasdas\",\"dasdasd\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"{dasdas}\\n{dasdasd}\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"dasdas\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdas\",\"display_name\":\"dasdas\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"dasdasd\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdasd\",\"display_name\":\"dasdasd\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"BasePromptTemplate\",\"StringPromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"dasdas\",\"dasdasd\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-K7xiS\"},\"selected\":false,\"positionAbsolute\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"dragging\":false},{\"width\":384,\"height\":366,\"id\":\"AirbyteJSONLoader-DXfcM\",\"type\":\"genericNode\",\"position\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"suffixes\":[\".json\"],\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\"json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-DXfcM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"dragging\":false},{\"width\":384,\"height\":376,\"id\":\"PromptRunner-ckWMH\",\"type\":\"genericNode\",\"position\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"data\":{\"type\":\"PromptRunner\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\n\\nclass PromptRunner(CustomComponent):\\n display_name: str = \\\"Prompt Runner\\\"\\n description: str = \\\"Run a Chain with the given PromptTemplate\\\"\\n beta: bool = True\\n field_config = {\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"prompt\\\": {\\n \\\"display_name\\\": \\\"Prompt Template\\\",\\n \\\"info\\\": \\\"Make sure the prompt has all variables filled.\\\",\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(self, llm: BaseLLM, prompt: PromptTemplate, inputs: dict = {}) -> Document:\\n chain = prompt | llm\\n # The input is an empty dict because the prompt is already filled\\n result = chain.invoke(input=inputs)\\n if hasattr(result, \\\"content\\\"):\\n result = result.content\\n self.repr_value = result\\n return Document(page_content=str(result))\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"inputs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"inputs\",\"display_name\":\"inputs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt Template\",\"advanced\":false,\"dynamic\":false,\"info\":\"Make sure the prompt has all variables filled.\",\"type\":\"PromptTemplate\",\"list\":false}},\"description\":\"Run a Chain with the given PromptTemplate\",\"base_classes\":[\"Document\"],\"display_name\":\"Prompt Runner\",\"custom_fields\":{\"inputs\":null,\"llm\":null,\"prompt\":null},\"output_types\":[\"PromptRunner\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"PromptRunner-ckWMH\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"dragging\":false}],\"edges\":[{\"source\":\"PromptRunner-ckWMH\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œPromptRunnerœ,œidœ:œPromptRunner-ckWMHœ}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{œfieldNameœ:œdasdasdœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdasd\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"PromptRunner\",\"id\":\"PromptRunner-ckWMH\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptRunner-ckWMH{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œPromptRunnerœ,œidœ:œPromptRunner-ckWMHœ}-PromptTemplate-K7xiS{œfieldNameœ:œdasdasdœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\"},{\"source\":\"AirbyteJSONLoader-DXfcM\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œAirbyteJSONLoaderœ,œidœ:œAirbyteJSONLoader-DXfcMœ}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{œfieldNameœ:œdasdasœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdas\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"AirbyteJSONLoader\",\"id\":\"AirbyteJSONLoader-DXfcM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-AirbyteJSONLoader-DXfcM{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œAirbyteJSONLoaderœ,œidœ:œAirbyteJSONLoader-DXfcMœ}-PromptTemplate-K7xiS{œfieldNameœ:œdasdasœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\"}],\"viewport\":{\"x\":721.09842496776,\"y\":-303.59762799439625,\"zoom\":0.6417129487814537}},\"is_component\":false,\"updated_at\":\"2023-12-08T22:52:14.560323\",\"folder\":null,\"id\":\"8533c46e-21fd-4b92-b68e-1086ea86c72d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Stonebraker\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:26:42.332360\",\"folder\":null,\"id\":\"92bc0875-4a73-44f2-9410-3b8342e404bf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (1)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-dMB5d\"},\"id\":\"CustomComponent-dMB5d\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:43.668665\",\"folder\":null,\"id\":\"912265df-9b87-4b30-a585-1ca59b944391\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (2)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-ipifC\"},\"id\":\"CustomComponent-ipifC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:49.799612\",\"folder\":null,\"id\":\"ca83ee08-2f93-427d-9897-80fef6dd5447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Y4qL7\"},\"id\":\"CustomComponent-Y4qL7\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:53.719960\",\"folder\":null,\"id\":\"5847602b-769a-4a82-82e8-a70f54a59929\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Williams\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:27:45.691254\",\"folder\":null,\"id\":\"0e3bdba9-127a-4399-81a4-2865b70a4a47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Shared Component\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-TK9Ea\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-TK9Ea\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:28:34.119070\",\"folder\":null,\"id\":\"29c1a247-47b0-457b-8666-7c0a67dc72b0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"teste cristhian\",\"description\":\"11111\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-P5wrB\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-P5wrB\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}},{\"width\":384,\"height\":626,\"id\":\"OpenAI-zpihD\",\"type\":\"genericNode\",\"position\":{\"x\":-56.983202536768374,\"y\":61.715652677908665},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-babbage-001\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false,\"value\":\"dasdasdasdsadasdas\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"1.4\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLanguageModel\",\"BaseLLM\",\"BaseOpenAI\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-zpihD\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-56.983202536768374,\"y\":61.715652677908665}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:40:48.453096\",\"folder\":null,\"id\":\"2e59d013-2acb-49a6-915b-9231a7e6eb58\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent (1)\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-jsHqy\"},\"id\":\"CSVAgent-jsHqy\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:31:17.317322\",\"folder\":null,\"id\":\"ab1034a9-9b5b-4c65-bf6e-9f098a403942\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Wilsonfasdfsd\",\"description\":\"Building Linguistic Labyrinths.fasdfads\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:43:45.298121\",\"folder\":null,\"id\":\"7d91c0c5-fba6-4c60-b4d1-11d430ef357a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (1)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-pAHh6\"},\"id\":\"AirbyteJSONLoader-pAHh6\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:47:58.573137\",\"folder\":null,\"id\":\"f0cc4292-97cc-4748-803d-949e30dcf661\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"ff2\":\"d3bbd\"},{\"w\":\"bvd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-0zU2Q\"},\"id\":\"AirbyteJSONLoader-0zU2Q\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:09.035318\",\"folder\":null,\"id\":\"5e3c0d55-1a00-4e15-9821-0c625c6415ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-Ub1Xe\"},\"id\":\"CSVAgent-Ub1Xe\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:16.985419\",\"folder\":null,\"id\":\"baee8061-4788-4ce6-928f-c6ce1ecb443c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Heisenberg\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":366,\"id\":\"CSVLoader-RMUx9\",\"type\":\"genericNode\",\"position\":{\"x\":111,\"y\":345.51250076293945},\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVLoader-RMUx9\"},\"positionAbsolute\":{\"x\":111,\"y\":345.51250076293945}}],\"edges\":[],\"viewport\":{\"x\":0,\"y\":0,\"zoom\":1}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:38:40.291137\",\"folder\":null,\"id\":\"109e9629-d569-4555-9d40-42203a5ed035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CohereEmbeddings\",\"description\":\"Cohere embedding models.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CohereEmbeddings\",\"node\":{\"template\":{\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cohere_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"cohere_api_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"embed-english-v2.0\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"truncate\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"truncate\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"user_agent\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"user_agent\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"CohereEmbeddings\"},\"description\":\"Cohere embedding models.\",\"base_classes\":[\"CohereEmbeddings\",\"Embeddings\"],\"display_name\":\"CohereEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/cohere\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CohereEmbeddings-HFUAf\"},\"id\":\"CohereEmbeddings-HFUAf\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:46.172344\",\"folder\":null,\"id\":\"662d8040-d47c-40db-bda1-66489a1c9d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (1)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-3wrib\"},\"id\":\"CSVLoader-3wrib\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:56:11.662526\",\"folder\":null,\"id\":\"4fae6aec-ddbd-498d-a4d1-ca0290f6a5ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (2)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-VEjyx\"},\"id\":\"CSVLoader-VEjyx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:57:37.560784\",\"folder\":null,\"id\":\"d80635ee-966c-41f2-981c-afa2c388ac6e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (3)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-PIhOc\"},\"id\":\"CSVLoader-PIhOc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:27.991966\",\"folder\":null,\"id\":\"c5cc4c32-77c8-4889-a9f8-2632466b7366\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (4)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-deB43\"},\"id\":\"CSVLoader-deB43\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:42.509243\",\"folder\":null,\"id\":\"0ab59938-ccf4-4bb9-b285-1f5da38648f0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-mdkLm\"},\"id\":\"CSVLoader-mdkLm\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:17.458354\",\"folder\":null,\"id\":\"f127b7e7-4149-492e-8998-6b1b35ec4153\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (5)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-FRc6Y\"},\"id\":\"CSVLoader-FRc6Y\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:26.958867\",\"folder\":null,\"id\":\"a870a096-725c-4914-add0-8d57d710b7e5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (2)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-Z0uol\"},\"id\":\"AirbyteJSONLoader-Z0uol\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:33.764117\",\"folder\":null,\"id\":\"2a37c76c-65c8-4c01-a72d-eb46f3d41a56\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-28ASv\"},\"id\":\"AmazonBedrockEmbeddings-28ASv\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:41.066618\",\"folder\":null,\"id\":\"850ba4e6-96ca-49a7-9b0c-4b7048fd52c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"ConversationBufferMemory\",\"description\":\"Buffer for storing conversation memory.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"ConversationBufferMemory\",\"node\":{\"template\":{\"chat_memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chat_memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMessageHistory\",\"list\":false},\"ai_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"AI\",\"password\":false,\"name\":\"ai_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"human_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"Human\",\"password\":false,\"name\":\"human_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"input_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"input_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"type\":\"str\",\"list\":false},\"memory_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"chat_history\",\"password\":false,\"name\":\"memory_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"output_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"output_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"type\":\"str\",\"list\":false},\"return_messages\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"return_messages\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationBufferMemory\"},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseMemory\",\"BaseChatMemory\",\"ConversationBufferMemory\"],\"display_name\":\"ConversationBufferMemory\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"ConversationBufferMemory-WaoLx\"},\"id\":\"ConversationBufferMemory-WaoLx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:04:46.058568\",\"folder\":null,\"id\":\"be650940-0449-4eb0-a708-056310f924fd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (1)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\"},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:05:50.570800\",\"folder\":null,\"id\":\"53ad1fe2-f3af-4354-86e0-eb141ce12859\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (2)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\"},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:06:11.415088\",\"folder\":null,\"id\":\"e9ed1c90-146e-452d-8ccd-ebf2e0da4331\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (3)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\"},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:07:06.411108\",\"folder\":null,\"id\":\"83783c57-64e3-41a6-aa7e-ed82f80f1e53\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (6)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-2pn2o\"},\"id\":\"CSVLoader-2pn2o\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:38:30.706258\",\"folder\":null,\"id\":\"c4ae9de6-9df3-4d3c-afc9-1752af4fecd7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-MJrAC\"},\"id\":\"AgentInitializer-MJrAC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:42:54.715163\",\"folder\":null,\"id\":\"ff84b5f9-5680-4084-a9f1-7d94fe675486\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer (1)\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-3lcZ4\"},\"id\":\"AgentInitializer-3lcZ4\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:43:20.819934\",\"folder\":null,\"id\":\"97f5db9f-d6cc-4555-88fb-3be102c67814\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Banach\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:52:49.951416\",\"folder\":null,\"id\":\"a600acd1-213a-4ce7-8648-ab2ee59f5918\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (3)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-JhQtx\"},\"id\":\"AirbyteJSONLoader-JhQtx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:44:49.587337\",\"folder\":null,\"id\":\"07c52ad7-ca52-4cdd-ab40-74a91dbad0dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (4)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-bIvDc\"},\"id\":\"AirbyteJSONLoader-bIvDc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:13.458500\",\"folder\":null,\"id\":\"53e4d256-3653-444b-b8e0-fb97b3ae5c7e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (5)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-2BLS8\"},\"id\":\"AirbyteJSONLoader-2BLS8\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:44.461699\",\"folder\":null,\"id\":\"b5158cc1-c6b8-4e25-907a-bc7e7637aa38\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (4)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-NsBzN\"},\"id\":\"AmazonBedrockEmbeddings-NsBzN\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:50:29.791575\",\"folder\":null,\"id\":\"3fb77f72-1be7-4ce0-ae89-a82b0eee9acf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Golick\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.707854\",\"folder\":null,\"id\":\"9c5d21c2-ea82-4cf4-a591-c3d3fd3f13e6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci (1)\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.761150\",\"folder\":null,\"id\":\"f8e2e16e-129c-4116-9626-2c6b524d97b7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Degrasse\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.764440\",\"folder\":null,\"id\":\"d7f4f7b5-effe-4834-8cab-4f2fc4f6e9de\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Archimedes\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.767546\",\"folder\":null,\"id\":\"2265d813-4a87-410f-b06a-65e35db8219e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Heyrovsky\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.765105\",\"folder\":null,\"id\":\"10bfd881-e67e-4c33-965d-ee041695edce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Carroll\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.811794\",\"folder\":null,\"id\":\"63fa5653-4513-47f2-8dfa-baeb1d981f93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Perlman\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.814993\",\"folder\":null,\"id\":\"f4bc5945-20d9-4703-a5bb-6a4a3ef7fc8e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Stallman\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.813144\",\"folder\":null,\"id\":\"8d8b80f9-4b74-4cd5-bc5c-08a32c4d2b95\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Einstein\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:19.518262\",\"folder\":null,\"id\":\"21808fd7-a492-4e29-8863-301c2785f542\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Swanson\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.185637\",\"folder\":null,\"id\":\"7752299a-4aa9-44db-8d9c-5c4a2ac1b071\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Pascal\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.223064\",\"folder\":null,\"id\":\"78f48a13-6a9f-42ce-9d58-ec9b63b381d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Bartik\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.239758\",\"folder\":null,\"id\":\"38074091-3d7c-4d42-b61b-ae195c1b8a4e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Condescending Joliot\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.271996\",\"folder\":null,\"id\":\"773020aa-5c2d-4632-ad9e-21276861ab93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kalam\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.283929\",\"folder\":null,\"id\":\"0092d077-6d31-401f-a739-b164476b90ed\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Bhabha\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.467739\",\"folder\":null,\"id\":\"4a395211-712d-4dd2-b3bb-e6b19200f15d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Babbage\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.742990\",\"folder\":null,\"id\":\"3f086a82-3e29-4328-9da8-e02dc9201744\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Volta\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:18.594247\",\"folder\":null,\"id\":\"659b8289-c8e8-413d-9b2b-51e68411f170\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Jennings\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:42.640309\",\"folder\":null,\"id\":\"f55f0640-d47e-4471-b1ba-3411d38ecac5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Shaw\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:58.376247\",\"folder\":null,\"id\":\"a039811e-449a-4244-83ed-4ddd731a0921\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock (1)\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:25:14.674524\",\"folder\":null,\"id\":\"0faf6144-6ca6-4f64-a343-665ae54774ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Volta\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:26:50.418029\",\"folder\":null,\"id\":\"c5d149d0-c401-4f5e-b79f-2abcc7b8d98d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Bubbly Curie\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:27:10.900899\",\"folder\":null,\"id\":\"7bb2d226-9740-433d-861f-a499632c5a13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Nobel\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:11.541630\",\"folder\":null,\"id\":\"947906d8-75ea-470c-a8e2-cc80c5d3bdbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Northcutt\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:37.169791\",\"folder\":null,\"id\":\"56f109fd-2c18-42ed-a9b2-089a678a0c11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Khayyam\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:24.686359\",\"folder\":null,\"id\":\"551d7bfa-49aa-43f1-a779-e47eabc2aaf2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Spence\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:47.738472\",\"folder\":null,\"id\":\"12aef128-130e-492e-bf84-62d4cb4cd456\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Lavoisier\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:31:43.272365\",\"folder\":null,\"id\":\"9952c044-6903-4fba-a270-6ed0b90c93c9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:32:23.972035\",\"folder\":null,\"id\":\"65f49582-c9fa-4c67-a2bc-4e8fa73ca731\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Perlman\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:26.984083\",\"folder\":null,\"id\":\"9ae57fe2-c677-47fa-a059-7d3d915a1178\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Cori\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:52.377359\",\"folder\":null,\"id\":\"2920dde2-5c24-4fe0-9c06-ef86b5a16a99\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"}]" }, "headersSize": -1, "bodySize": -1, @@ -336,16 +378,28 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, { "name": "Referer", "value": "http://localhost:3000/flows" }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -390,16 +444,28 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, { "name": "Referer", "value": "http://localhost:3000/flows" }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -444,16 +510,31 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, - { "name": "Referer", "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" }, + { + "name": "Referer", + "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" + }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -498,16 +579,31 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, - { "name": "Referer", "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" }, + { + "name": "Referer", + "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" + }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -531,7 +627,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "[{\"name\":\"Awesome Euclid\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-m2yFu\",\"type\":\"genericNode\",\"position\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"transcription\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"create an image prompt based on the song's lyrics to be used as the album cover of this song:\\n\\nlyrics:\\n{transcription}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"transcription\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"transcription\",\"display_name\":\"transcription\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"transcription\"],\"template\":[\"transcription\",\"question\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-m2yFu\"},\"selected\":false,\"positionAbsolute\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-urapv\",\"type\":\"genericNode\",\"position\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-urapv\"},\"selected\":false,\"positionAbsolute\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"dragging\":false},{\"width\":384,\"height\":806,\"id\":\"CustomComponent-IEIUl\",\"type\":\"genericNode\",\"position\":{\"x\":2364.865919667005,\"y\":88.43094097025096},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom platformdirs import user_cache_dir\\nimport base64\\nfrom PIL import Image\\nfrom io import BytesIO\\nfrom openai import OpenAI\\nfrom pathlib import Path\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Image generator\\\"\\n description: str = \\\"generate images using Dall-E\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\",\\\"input_types\\\":[\\\"str\\\"]},\\n \\\"api_key\\\":{\\\"display_name\\\":\\\"OpenAI API key\\\",\\\"password\\\":True},\\n \\\"model\\\":{\\\"display_name\\\":\\\"Model name\\\",\\\"advanced\\\":True,\\\"options\\\":[\\\"dall-e-2\\\",\\\"dall-e-3\\\"], \\\"value\\\":\\\"dall-e-3\\\"},\\n \\\"file_name\\\":{\\\"display_name\\\":\\\"File Name\\\"},\\n \\\"output_format\\\":{\\\"display_name\\\":\\\"Output format\\\",\\\"options\\\":[\\\"jpeg\\\",\\\"png\\\"],\\\"value\\\":\\\"jpeg\\\"},\\n \\\"width\\\":{\\\"display_name\\\":\\\"Width\\\" ,\\\"value\\\":1024},\\n \\\"height\\\":{\\\"display_name\\\":\\\"Height\\\", \\\"value\\\":1024}\\n }\\n\\n def build(self, prompt:str,api_key:str,model:str,file_name:str,output_format:str,width:int,height:int):\\n client = OpenAI(api_key=api_key)\\n cache_dir = Path(user_cache_dir(\\\"langflow\\\"))\\n images_dir = cache_dir / \\\"images\\\"\\n images_dir.mkdir(parents=True, exist_ok=True)\\n image_path = images_dir / f\\\"{file_name}.{output_format}\\\"\\n response = client.images.generate(\\n model=model,\\n prompt=prompt,\\n size=f\\\"{height}x{width}\\\",\\n response_format=\\\"b64_json\\\",\\n n=1,\\n )\\n # Decode base64-encoded image string\\n binary_data = base64.b64decode(response.data[0].b64_json)\\n # Create PIL Image object from binary image data\\n image_pil = Image.open(BytesIO(binary_data))\\n image_pil.save(image_path, format=output_format.upper())\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"api_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"api_key\",\"display_name\":\"OpenAI API key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"file_name\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"file_name\",\"display_name\":\"File Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"album\"},\"height\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"height\",\"display_name\":\"Height\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"dall-e-3\",\"password\":false,\"options\":[\"dall-e-2\",\"dall-e-3\"],\"name\":\"model\",\"display_name\":\"Model name\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"output_format\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"jpeg\",\"password\":false,\"options\":[\"jpeg\",\"png\"],\"name\":\"output_format\",\"display_name\":\"Output format\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"width\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"width\",\"display_name\":\"Width\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false}},\"description\":\"generate images using Dall-E\",\"base_classes\":[\"Data\"],\"display_name\":\"Image generator\",\"custom_fields\":{\"api_key\":null,\"file_name\":null,\"height\":null,\"model\":null,\"output_format\":null,\"prompt\":null,\"width\":null},\"output_types\":[\"Data\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-IEIUl\"},\"selected\":false,\"positionAbsolute\":{\"x\":2364.865919667005,\"y\":88.43094097025096}},{\"width\":384,\"height\":338,\"id\":\"LLMChain-KlJb3\",\"type\":\"genericNode\",\"position\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-KlJb3\"},\"selected\":false,\"positionAbsolute\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-bCuc0\",\"type\":\"genericNode\",\"position\":{\"x\":1747.8107777342625,\"y\":319.13729017446667},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Chain) -> str:\\n result = param.run({})\\n self.status = result\\n return result\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Chain\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"str\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-bCuc0\"},\"selected\":false,\"positionAbsolute\":{\"x\":1747.8107777342625,\"y\":319.13729017446667}}],\"edges\":[{\"source\":\"LLMChain-KlJb3\",\"target\":\"CustomComponent-bCuc0\",\"sourceHandle\":\"{œbaseClassesœ:[œChainœ,œCallableœ],œdataTypeœ:œLLMChainœ,œidœ:œLLMChain-KlJb3œ}\",\"targetHandle\":\"{œfieldNameœ:œparamœ,œidœ:œCustomComponent-bCuc0œ,œinputTypesœ:null,œtypeœ:œChainœ}\",\"id\":\"reactflow__edge-LLMChain-KlJb3{œbaseClassesœ:[œChainœ,œCallableœ],œdataTypeœ:œLLMChainœ,œidœ:œLLMChain-KlJb3œ}-CustomComponent-bCuc0{œfieldNameœ:œparamœ,œidœ:œCustomComponent-bCuc0œ,œinputTypesœ:null,œtypeœ:œChainœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"param\",\"id\":\"CustomComponent-bCuc0\",\"inputTypes\":null,\"type\":\"Chain\"},\"sourceHandle\":{\"baseClasses\":[\"Chain\",\"Callable\"],\"dataType\":\"LLMChain\",\"id\":\"LLMChain-KlJb3\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"ChatOpenAI-urapv\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-urapvœ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-urapv{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-urapvœ}-LLMChain-KlJb3{œfieldNameœ:œllmœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-urapv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-m2yFu\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{œbaseClassesœ:[œPromptTemplateœ,œStringPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-m2yFuœ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"id\":\"reactflow__edge-PromptTemplate-m2yFu{œbaseClassesœ:[œPromptTemplateœ,œStringPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-m2yFuœ}-LLMChain-KlJb3{œfieldNameœ:œpromptœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-m2yFu\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-bCuc0\",\"target\":\"CustomComponent-IEIUl\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-bCuc0œ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œCustomComponent-IEIUlœ,œinputTypesœ:[œstrœ],œtypeœ:œstrœ}\",\"id\":\"reactflow__edge-CustomComponent-bCuc0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-bCuc0œ}-CustomComponent-IEIUl{œfieldNameœ:œpromptœ,œidœ:œCustomComponent-IEIUlœ,œinputTypesœ:[œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"CustomComponent-IEIUl\",\"inputTypes\":[\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-bCuc0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":92.23454077990459,\"y\":183.8125619056221,\"zoom\":0.6070974421975234}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:33:18.503954\",\"folder\":null,\"id\":\"fe142ce5-32dc-4955-b186-672ced662f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Darwin\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"OpenAI-3ZVDh\",\"type\":\"genericNode\",\"position\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":256,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-davinci-003\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-3ZVDh\"},\"selected\":true,\"positionAbsolute\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-RFYXY\",\"type\":\"genericNode\",\"position\":{\"x\":586.672100458868,\"y\":10.967049167706678},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RFYXY\"},\"positionAbsolute\":{\"x\":586.672100458868,\"y\":10.967049167706678}},{\"width\":384,\"height\":242,\"id\":\"ChatPromptTemplate-ce1sg\",\"type\":\"genericNode\",\"position\":{\"x\":395.598984452791,\"y\":612.188491773035},\"data\":{\"type\":\"ChatPromptTemplate\",\"node\":{\"template\":{\"messages\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"messages\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseMessagePromptTemplate\",\"list\":true},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatPromptTemplate\"},\"description\":\"A prompt template for chat models.\",\"base_classes\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"display_name\":\"ChatPromptTemplate\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\",\"beta\":false,\"error\":null},\"id\":\"ChatPromptTemplate-ce1sg\"},\"selected\":false,\"positionAbsolute\":{\"x\":395.598984452791,\"y\":612.188491773035},\"dragging\":false}],\"edges\":[{\"source\":\"OpenAI-3ZVDh\",\"sourceHandle\":\"{œbaseClassesœ:[œOpenAIœ,œBaseLLMœ,œBaseOpenAIœ,œBaseLanguageModelœ],œdataTypeœ:œOpenAIœ,œidœ:œOpenAI-3ZVDhœ}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"dataType\":\"OpenAI\",\"id\":\"OpenAI-3ZVDh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAI-3ZVDh{œbaseClassesœ:[œOpenAIœ,œBaseLLMœ,œBaseOpenAIœ,œBaseLanguageModelœ],œdataTypeœ:œOpenAIœ,œidœ:œOpenAI-3ZVDhœ}-LLMChain-RFYXY{œfieldNameœ:œllmœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"ChatPromptTemplate-ce1sg\",\"sourceHandle\":\"{œbaseClassesœ:[œChatPromptTemplateœ,œBaseChatPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œChatPromptTemplateœ,œidœ:œChatPromptTemplate-ce1sgœ}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"ChatPromptTemplate\",\"id\":\"ChatPromptTemplate-ce1sg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatPromptTemplate-ce1sg{œbaseClassesœ:[œChatPromptTemplateœ,œBaseChatPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œChatPromptTemplateœ,œidœ:œChatPromptTemplate-ce1sgœ}-LLMChain-RFYXY{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":8.832868402772647,\"y\":189.85443326477025,\"zoom\":0.6070974421975235}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:50:19.584160\",\"folder\":null,\"id\":\"103766f0-1f50-427a-9ba7-2ab73343c524\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Easley\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VPh47\",\"type\":\"genericNode\",\"position\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VPh47\"},\"selected\":false,\"positionAbsolute\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-NgFyo\",\"type\":\"genericNode\",\"position\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-NgFyo\"},\"selected\":false,\"positionAbsolute\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-oAFjh\",\"type\":\"genericNode\",\"position\":{\"x\":-342.62522294052764,\"y\":391.20629510686103},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"links\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Answer everything with links\\n{links}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"links\",\"display_name\":\"links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"links\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-oAFjh\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-342.62522294052764,\"y\":391.20629510686103}}],\"edges\":[{\"source\":\"ChatOpenAI-VPh47\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseChatModelœ,œChatOpenAIœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VPh47œ}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VPh47\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VPh47{œbaseClassesœ:[œBaseChatModelœ,œChatOpenAIœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VPh47œ}-LLMChain-NgFyo{œfieldNameœ:œllmœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"PromptTemplate-oAFjh\",\"sourceHandle\":\"{œbaseClassesœ:[œBasePromptTemplateœ,œStringPromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-oAFjhœ}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-oAFjh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-oAFjh{œbaseClassesœ:[œBasePromptTemplateœ,œStringPromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-oAFjhœ}-LLMChain-NgFyo{œfieldNameœ:œpromptœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":338.6546182690814,\"y\":53.026340800283265,\"zoom\":0.7169776240079143}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:53:25.148460\",\"folder\":null,\"id\":\"a794fc48-5e9b-42a3-924f-7fe610500035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"(D) Basic Chat (1) (4)\",\"description\":\"Simplest possible chat model\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-fBcfh\",\"type\":\"genericNode\",\"position\":{\"x\":228.87326389541306,\"y\":465.8628482073749},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false,\"value\":60},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\"},\"id\":\"ChatOpenAI-fBcfh\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":228.87326389541306,\"y\":465.8628482073749}},{\"width\":384,\"height\":310,\"id\":\"ConversationChain-bVNex\",\"type\":\"genericNode\",\"position\":{\"x\":806,\"y\":554},\"data\":{\"type\":\"ConversationChain\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"_type\":\"default\"},\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLMOutputParser\",\"list\":false},\"prompt\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"input_variables\":[\"history\",\"input\"],\"output_parser\":null,\"partial_variables\":{},\"template\":\"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\\n\\nCurrent conversation:\\n{history}\\nHuman: {input}\\nAI:\",\"template_format\":\"f-string\",\"validate_template\":true,\"_type\":\"prompt\"},\"password\":false,\"name\":\"prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"input\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"llm_kwargs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"response\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_final_only\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_final_only\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationChain\"},\"description\":\"Chain to have a conversation and load context from memory.\",\"base_classes\":[\"ConversationChain\",\"Chain\",\"LLMChain\",\"function\"],\"display_name\":\"ConversationChain\",\"documentation\":\"\"},\"id\":\"ConversationChain-bVNex\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":806,\"y\":554}}],\"edges\":[{\"source\":\"ChatOpenAI-fBcfh\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseChatModelœ,œBaseLanguageModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-fBcfhœ}\",\"target\":\"ConversationChain-bVNex\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œConversationChain-bVNexœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"className\":\"stroke-gray-900 stroke-connection\",\"id\":\"reactflow__edge-ChatOpenAI-fBcfh{œbaseClassesœ:[œBaseChatModelœ,œBaseLanguageModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-fBcfhœ}-ConversationChain-bVNex{œfieldNameœ:œllmœ,œidœ:œConversationChain-bVNexœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-fBcfh\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"ConversationChain-bVNex\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}},\"style\":{\"stroke\":\"#555\"},\"animated\":false}],\"viewport\":{\"x\":-118.21416568593895,\"y\":-240.64815770363373,\"zoom\":0.7642485855675408}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:57:55.879806\",\"folder\":null,\"id\":\"bddebeea-b80a-4b28-8895-c4425687dcce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Directory Loader\",\"description\":\"Generic File Loader\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import os\\n\\nfrom langchain.schema import Document\\nfrom langflow import CustomComponent\\nimport glob\\n\\nclass DirectoryLoaderComponent(CustomComponent):\\n display_name: str = \\\"Directory Loader\\\"\\n description: str = \\\"Generic File Loader\\\"\\n beta = True\\n loaders_info = [\\n {\\n \\\"loader\\\": \\\"AirbyteJSONLoader\\\",\\n \\\"name\\\": \\\"Airbyte JSON (.jsonl)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.AirbyteJSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"jsonl\\\"],\\n \\\"allowdTypes\\\": [\\\"jsonl\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"JSONLoader\\\",\\n \\\"name\\\": \\\"JSON (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.JSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"json\\\"],\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n \\\"kwargs\\\": {\\\"jq_schema\\\": \\\".\\\", \\\"text_content\\\": False}\\n },\\n {\\n \\\"loader\\\": \\\"BSHTMLLoader\\\",\\n \\\"name\\\": \\\"BeautifulSoup4 HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.BSHTMLLoader\\\",\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CSVLoader\\\",\\n \\\"name\\\": \\\"CSV (.csv)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CSVLoader\\\",\\n \\\"defaultFor\\\": [\\\"csv\\\"],\\n \\\"allowdTypes\\\": [\\\"csv\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CoNLLULoader\\\",\\n \\\"name\\\": \\\"CoNLL-U (.conllu)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CoNLLULoader\\\",\\n \\\"defaultFor\\\": [\\\"conllu\\\"],\\n \\\"allowdTypes\\\": [\\\"conllu\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"EverNoteLoader\\\",\\n \\\"name\\\": \\\"EverNote (.enex)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.EverNoteLoader\\\",\\n \\\"defaultFor\\\": [\\\"enex\\\"],\\n \\\"allowdTypes\\\": [\\\"enex\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"FacebookChatLoader\\\",\\n \\\"name\\\": \\\"Facebook Chat (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.FacebookChatLoader\\\",\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"OutlookMessageLoader\\\",\\n \\\"name\\\": \\\"Outlook Message (.msg)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.OutlookMessageLoader\\\",\\n \\\"defaultFor\\\": [\\\"msg\\\"],\\n \\\"allowdTypes\\\": [\\\"msg\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"PyPDFLoader\\\",\\n \\\"name\\\": \\\"PyPDF (.pdf)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.PyPDFLoader\\\",\\n \\\"defaultFor\\\": [\\\"pdf\\\"],\\n \\\"allowdTypes\\\": [\\\"pdf\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"STRLoader\\\",\\n \\\"name\\\": \\\"Subtitle (.str)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.STRLoader\\\",\\n \\\"defaultFor\\\": [\\\"str\\\"],\\n \\\"allowdTypes\\\": [\\\"str\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"TextLoader\\\",\\n \\\"name\\\": \\\"Text (.txt)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.TextLoader\\\",\\n \\\"defaultFor\\\": [\\\"txt\\\"],\\n \\\"allowdTypes\\\": [\\\"txt\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredEmailLoader\\\",\\n \\\"name\\\": \\\"Unstructured Email (.eml)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredEmailLoader\\\",\\n \\\"defaultFor\\\": [\\\"eml\\\"],\\n \\\"allowdTypes\\\": [\\\"eml\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredHTMLLoader\\\",\\n \\\"name\\\": \\\"Unstructured HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredHTMLLoader\\\",\\n \\\"defaultFor\\\": [\\\"html\\\", \\\"htm\\\"],\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredMarkdownLoader\\\",\\n \\\"name\\\": \\\"Unstructured Markdown (.md)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredMarkdownLoader\\\",\\n \\\"defaultFor\\\": [\\\"md\\\"],\\n \\\"allowdTypes\\\": [\\\"md\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredPowerPointLoader\\\",\\n \\\"name\\\": \\\"Unstructured PowerPoint (.pptx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredPowerPointLoader\\\",\\n \\\"defaultFor\\\": [\\\"pptx\\\"],\\n \\\"allowdTypes\\\": [\\\"pptx\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredWordLoader\\\",\\n \\\"name\\\": \\\"Unstructured Word (.docx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredWordLoader\\\",\\n \\\"defaultFor\\\": [\\\"docx\\\"],\\n \\\"allowdTypes\\\": [\\\"docx\\\"],\\n },\\n]\\n\\n\\n def build_config(self):\\n loader_options = [\\\"Automatic\\\"] + [\\n loader_info[\\\"name\\\"] for loader_info in self.loaders_info\\n ]\\n\\n file_types = []\\n suffixes = []\\n\\n for loader_info in self.loaders_info:\\n if \\\"allowedTypes\\\" in loader_info:\\n file_types.extend(loader_info[\\\"allowedTypes\\\"])\\n suffixes.extend([f\\\".{ext}\\\" for ext in loader_info[\\\"allowedTypes\\\"]])\\n\\n return {\\n \\\"directory_path\\\": {\\n \\\"display_name\\\": \\\"Directory Path\\\",\\n \\\"required\\\": True,\\n },\\n \\\"loader\\\": {\\n \\\"display_name\\\": \\\"Loader\\\",\\n \\\"is_list\\\": True,\\n \\\"required\\\": True,\\n \\\"options\\\": loader_options,\\n \\\"value\\\": \\\"Automatic\\\",\\n },\\n }\\n\\n def build(self, directory_path: str, loader: str) -> Document:\\n # Verifique se o diretório existe\\n if not os.path.exists(directory_path):\\n raise ValueError(f\\\"Directory not found: {directory_path}\\\")\\n\\n files = glob.glob(directory_path + \\\"/*.*\\\")\\n\\n\\n loader_info = None\\n if loader == \\\"Automatic\\\":\\n for file in files:\\n file_type = file.split(\\\".\\\")[-1]\\n\\n\\n for info in self.loaders_info:\\n if \\\"defaultFor\\\" in info:\\n if file_type in info[\\\"defaultFor\\\"]:\\n loader_info = info\\n break\\n if loader_info:\\n break\\n\\n if not loader_info:\\n raise ValueError(\\n \\\"No default loader found for any file in the directory\\\"\\n )\\n\\n else:\\n for info in self.loaders_info:\\n if info[\\\"name\\\"] == loader:\\n loader_info = info\\n break\\n\\n if not loader_info:\\n raise ValueError(f\\\"Loader {loader} not found in the loader info list\\\")\\n\\n loader_import = loader_info[\\\"import\\\"]\\n module_name, class_name = loader_import.rsplit(\\\".\\\", 1)\\n\\n try:\\n # Importe o loader dinamicamente\\n loader_module = __import__(module_name, fromlist=[class_name])\\n loader_instance = getattr(loader_module, class_name)\\n except ImportError as e:\\n raise ValueError(\\n f\\\"Loader {loader} could not be imported\\\\nLoader info:\\\\n{loader_info}\\\"\\n ) from e\\n\\n results = []\\n for file in files:\\n file_path = os.path.join(directory_path, file)\\n kwargs = loader_info.get(\\\"kwargs\\\", {})\\n result = loader_instance(file_path=file_path, **kwargs).load()\\n results.append(result)\\n self.status = results\\n return results\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"directory_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"directory_path\",\"display_name\":\"Directory Path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"/Users/ogabrielluiz/Projects/langflow2/docs\"},\"loader\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"Automatic\",\"password\":false,\"options\":[\"Automatic\",\"Airbyte JSON (.jsonl)\",\"JSON (.json)\",\"BeautifulSoup4 HTML (.html, .htm)\",\"CSV (.csv)\",\"CoNLL-U (.conllu)\",\"EverNote (.enex)\",\"Facebook Chat (.json)\",\"Outlook Message (.msg)\",\"PyPDF (.pdf)\",\"Subtitle (.str)\",\"Text (.txt)\",\"Unstructured Email (.eml)\",\"Unstructured HTML (.html, .htm)\",\"Unstructured Markdown (.md)\",\"Unstructured PowerPoint (.pptx)\",\"Unstructured Word (.docx)\"],\"name\":\"loader\",\"display_name\":\"Loader\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true}},\"description\":\"Generic File Loader\",\"base_classes\":[\"Document\"],\"display_name\":\"Directory Loader\",\"custom_fields\":{\"directory_path\":null,\"loader\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Ip6tG\"},\"id\":\"CustomComponent-Ip6tG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:38.570303\",\"folder\":null,\"id\":\"5fe4debc-b6a7-45d4-a694-c02d8aa93b08\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Whisper Transcriber\",\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import Optional, List, Dict, Union\\nfrom langflow.field_typing import (\\n AgentExecutor,\\n BaseChatMemory,\\n BaseLanguageModel,\\n BaseLLM,\\n BaseLoader,\\n BaseMemory,\\n BaseOutputParser,\\n BasePromptTemplate,\\n BaseRetriever,\\n Callable,\\n Chain,\\n ChatPromptTemplate,\\n Data,\\n Document,\\n Embeddings,\\n NestedDict,\\n Object,\\n PromptTemplate,\\n TextSplitter,\\n Tool,\\n VectorStore,\\n)\\n\\nfrom openai import OpenAI\\nclass Component(CustomComponent):\\n display_name: str = \\\"Whisper Transcriber\\\"\\n description: str = \\\"Converts audio to text using OpenAI's Whisper.\\\"\\n\\n def build_config(self):\\n return {\\\"audio\\\":{\\\"field_type\\\":\\\"file\\\",\\\"suffixes\\\":[\\\".mp3\\\", \\\".mp4\\\", \\\".m4a\\\"]},\\\"OpenAIKey\\\":{\\\"field_type\\\":\\\"str\\\",\\\"password\\\":True}}\\n\\n def build(self, audio:str, OpenAIKey:str) -> str:\\n \\n # TODO: if output path, persist & load it instead\\n \\n client = OpenAI(api_key=OpenAIKey)\\n \\n audio_file= open(audio, \\\"rb\\\")\\n transcript = client.audio.transcriptions.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file,\\n response_format=\\\"text\\\"\\n )\\n \\n \\n self.status = transcript\\n return transcript\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"OpenAIKey\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"OpenAIKey\",\"display_name\":\"OpenAIKey\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"audio\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"suffixes\":[\".mp3\",\".mp4\",\".m4a\"],\"password\":false,\"name\":\"audio\",\"display_name\":\"audio\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"file_path\":\"/Users/rodrigonader/Library/Caches/langflow/19b3e1c9-90bf-405f-898a-e982f47adf76/a3308ce7e9b10088fcd985aabb6d17b012c6b6e81ff8806356574474c9d10229.m4a\",\"value\":\"Audio Recording 2023-11-29 at 12.12.04.m4a\"}},\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"base_classes\":[\"str\"],\"display_name\":\"Whisper Transcriber\",\"custom_fields\":{\"OpenAIKey\":null,\"audio\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-GJRrs\"},\"id\":\"CustomComponent-GJRrs\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:39.710502\",\"folder\":null,\"id\":\"bd9e911d-46bd-429f-aa75-dd740430695e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Youtube Conversation\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":589,\"id\":\"CustomComponent-h0NSI\",\"type\":\"genericNode\",\"position\":{\"x\":714.9531293402755,\"y\":0.4994374160582993},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import requests\\nfrom langflow import CustomComponent\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.schema import Document\\nfrom langchain.document_loaders import YoutubeLoader\\n\\n# Example usage:\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"YouTube Transcript\\\"\\n description: str = \\\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\\\"\\n\\n def build_config(self):\\n return {\\\"url\\\": {\\\"multiline\\\": True, \\\"required\\\": True}}\\n\\n def build(self, url: str, llm: BaseLLM, dependencies: Document, language: str = \\\"en\\\") -> Document:\\n dependencies\\n response = requests.get(url)\\n loader = YoutubeLoader.from_youtube_url(url, add_video_info=True, language=[language])\\n result = loader.load()\\n self.repr_value = str(result)\\n return result\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"dependencies\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"dependencies\",\"display_name\":\"dependencies\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":false},\"language\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"en\",\"password\":false,\"name\":\"language\",\"display_name\":\"language\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\",\"base_classes\":[\"Document\"],\"display_name\":\"YouTube Transcript\",\"custom_fields\":{\"dependencies\":null,\"language\":null,\"llm\":null,\"url\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-h0NSI\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":714.9531293402755,\"y\":0.4994374160582993}},{\"width\":384,\"height\":629,\"id\":\"ChatOpenAI-q61Y2\",\"type\":\"genericNode\",\"position\":{\"x\":18,\"y\":625.5521045590924},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo-16k\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-q61Y2\"},\"selected\":false,\"positionAbsolute\":{\"x\":18,\"y\":625.5521045590924},\"dragging\":false},{\"width\":384,\"height\":539,\"id\":\"Chroma-gVhy7\",\"type\":\"genericNode\",\"position\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"data\":{\"type\":\"Chroma\",\"node\":{\"template\":{\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.Client\",\"list\":false},\"client_settings\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client_settings\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.config.Setting\",\"list\":true},\"documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":true},\"embedding\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"embedding\",\"display_name\":\"Embedding\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Embeddings\",\"list\":false},\"chroma_server_cors_allow_origins\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_cors_allow_origins\",\"display_name\":\"Chroma Server CORS Allow Origins\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"chroma_server_grpc_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_grpc_port\",\"display_name\":\"Chroma Server GRPC Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_host\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_host\",\"display_name\":\"Chroma Server Host\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_http_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_http_port\",\"display_name\":\"Chroma Server HTTP Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_ssl_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"chroma_server_ssl_enabled\",\"display_name\":\"Chroma Server SSL Enabled\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"collection_metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"collection_metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"collection_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"collection_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"ids\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"ids\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"metadatas\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadatas\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":true},\"persist\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"persist\",\"display_name\":\"Persist\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"persist_directory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"persist_directory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"search_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"{}\",\"password\":false,\"name\":\"search_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"NestedDict\",\"list\":false},\"_type\":\"Chroma\"},\"description\":\"Create a Chroma vectorstore from a raw documents.\",\"base_classes\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Chroma\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/chroma\",\"beta\":false,\"error\":null},\"id\":\"Chroma-gVhy7\"},\"selected\":false,\"positionAbsolute\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"dragging\":false},{\"width\":384,\"height\":501,\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"type\":\"genericNode\",\"position\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"data\":{\"type\":\"RecursiveCharacterTextSplitter\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\nfrom langflow import CustomComponent\\nfrom langchain.schema import Document\\nfrom langflow.utils.util import build_loader_repr_from_documents\\n\\n\\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\\n display_name: str = \\\"Recursive Character Text Splitter\\\"\\n description: str = \\\"Split text into chunks of a specified length.\\\"\\n documentation: str = \\\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\\\"\\n\\n def build_config(self):\\n return {\\n \\\"documents\\\": {\\n \\\"display_name\\\": \\\"Documents\\\",\\n \\\"info\\\": \\\"The documents to split.\\\",\\n },\\n \\\"separators\\\": {\\n \\\"display_name\\\": \\\"Separators\\\",\\n \\\"info\\\": 'The characters to split on.\\\\nIf left empty defaults to [\\\"\\\\\\\\n\\\\\\\\n\\\", \\\"\\\\\\\\n\\\", \\\" \\\", \\\"\\\"].',\\n \\\"is_list\\\": True,\\n },\\n \\\"chunk_size\\\": {\\n \\\"display_name\\\": \\\"Chunk Size\\\",\\n \\\"info\\\": \\\"The maximum length of each chunk.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 1000,\\n },\\n \\\"chunk_overlap\\\": {\\n \\\"display_name\\\": \\\"Chunk Overlap\\\",\\n \\\"info\\\": \\\"The amount of overlap between chunks.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 200,\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n documents: list[Document],\\n separators: Optional[list[str]] = None,\\n chunk_size: Optional[int] = 1000,\\n chunk_overlap: Optional[int] = 200,\\n ) -> list[Document]:\\n \\\"\\\"\\\"\\n Split text into chunks of a specified length.\\n\\n Args:\\n separators (list[str]): The characters to split on.\\n chunk_size (int): The maximum length of each chunk.\\n chunk_overlap (int): The amount of overlap between chunks.\\n length_function (function): The function to use to calculate the length of the text.\\n\\n Returns:\\n list[str]: The chunks of text.\\n \\\"\\\"\\\"\\n from langchain.text_splitter import RecursiveCharacterTextSplitter\\n\\n if separators == \\\"\\\":\\n separators = None\\n elif separators:\\n # check if the separators list has escaped characters\\n # if there are escaped characters, unescape them\\n separators = [x.encode().decode(\\\"unicode-escape\\\") for x in separators]\\n\\n # Make sure chunk_size and chunk_overlap are ints\\n if isinstance(chunk_size, str):\\n chunk_size = int(chunk_size)\\n if isinstance(chunk_overlap, str):\\n chunk_overlap = int(chunk_overlap)\\n splitter = RecursiveCharacterTextSplitter(\\n separators=separators,\\n chunk_size=chunk_size,\\n chunk_overlap=chunk_overlap,\\n )\\n\\n docs = splitter.split_documents(documents)\\n self.repr_value = build_loader_repr_from_documents(docs)\\n return docs\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"chunk_overlap\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"50\",\"password\":false,\"name\":\"chunk_overlap\",\"display_name\":\"Chunk Overlap\",\"advanced\":false,\"dynamic\":false,\"info\":\"The amount of overlap between chunks.\",\"type\":\"int\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"400\",\"password\":false,\"name\":\"chunk_size\",\"display_name\":\"Chunk Size\",\"advanced\":false,\"dynamic\":false,\"info\":\"The maximum length of each chunk.\",\"type\":\"int\",\"list\":false},\"documents\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"The documents to split.\",\"type\":\"Document\",\"list\":true},\"separators\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"separators\",\"display_name\":\"Separators\",\"advanced\":false,\"dynamic\":false,\"info\":\"The characters to split on.\\nIf left empty defaults to [\\\"\\\\n\\\\n\\\", \\\"\\\\n\\\", \\\" \\\", \\\"\\\"].\",\"type\":\"str\",\"list\":true,\"value\":[\" \"]}},\"description\":\"Split text into chunks of a specified length.\",\"base_classes\":[\"Document\"],\"display_name\":\"Recursive Character Text Splitter\",\"custom_fields\":{\"chunk_overlap\":null,\"chunk_size\":null,\"documents\":null,\"separators\":null},\"output_types\":[\"RecursiveCharacterTextSplitter\"],\"documentation\":\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\",\"beta\":true,\"error\":null},\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"selected\":false,\"positionAbsolute\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"dragging\":false},{\"width\":384,\"height\":367,\"id\":\"OpenAIEmbeddings-cduOO\",\"type\":\"genericNode\",\"position\":{\"x\":1405.1176670984544,\"y\":1029.459061269321},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{'Authorization': 'Bearer '}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-cduOO\"},\"selected\":false,\"positionAbsolute\":{\"x\":1405.1176670984544,\"y\":1029.459061269321}},{\"width\":384,\"height\":339,\"id\":\"RetrievalQA-4PmTB\",\"type\":\"genericNode\",\"position\":{\"x\":2711.7786966415715,\"y\":709.4450828605463},\"data\":{\"type\":\"RetrievalQA\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"combine_documents_chain\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"combine_documents_chain\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseCombineDocumentsChain\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"retriever\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"retriever\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseRetriever\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"query\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"result\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_source_documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_source_documents\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"RetrievalQA\"},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\",\"beta\":false,\"error\":null},\"id\":\"RetrievalQA-4PmTB\"},\"selected\":false,\"positionAbsolute\":{\"x\":2711.7786966415715,\"y\":709.4450828605463}},{\"width\":384,\"height\":333,\"id\":\"CombineDocsChain-yk0JF\",\"type\":\"genericNode\",\"position\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"data\":{\"type\":\"CombineDocsChain\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"chain_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"stuff\",\"password\":false,\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"name\":\"chain_type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"_type\":\"load_qa_chain\"},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"\",\"beta\":false,\"error\":null},\"id\":\"CombineDocsChain-yk0JF\"},\"selected\":false,\"positionAbsolute\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"dragging\":false},{\"width\":384,\"height\":417,\"id\":\"CustomComponent-y6Wg0\",\"type\":\"genericNode\",\"position\":{\"x\":39.400034102832365,\"y\":-499.03551482195707},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nimport subprocess\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\nfrom typing import List\\n\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"PIP Install\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n\\n def build(self, libs: List[str]) -> Document:\\n def install_package(package_name):\\n subprocess.check_call([\\\"pip\\\", \\\"install\\\", package_name])\\n for lib in libs:\\n install_package(lib)\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"libs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"libs\",\"display_name\":\"libs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"requests\",\"pytube\"]}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Document\"],\"display_name\":\"PIP Install\",\"custom_fields\":{\"libs\":null},\"output_types\":[],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-y6Wg0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":39.400034102832365,\"y\":-499.03551482195707}}],\"edges\":[{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œBaseLLMœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}-CustomComponent-h0NSI{œfieldNameœ:œllmœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œBaseLLMœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"BaseLLM\"}}},{\"source\":\"CustomComponent-y6Wg0\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-y6Wg0œ}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{œfieldNameœ:œdependenciesœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-y6Wg0{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-y6Wg0œ}-CustomComponent-h0NSI{œfieldNameœ:œdependenciesœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-y6Wg0\"},\"targetHandle\":{\"fieldName\":\"dependencies\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"CustomComponent-h0NSI\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-h0NSIœ}\",\"target\":\"RecursiveCharacterTextSplitter-1eaOX\",\"targetHandle\":\"{œfieldNameœ:œdocumentsœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-h0NSI{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-h0NSIœ}-RecursiveCharacterTextSplitter-1eaOX{œfieldNameœ:œdocumentsœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-h0NSI\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"inputTypes\":null,\"type\":\"Document\"}},\"selected\":false},{\"source\":\"OpenAIEmbeddings-cduOO\",\"sourceHandle\":\"{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-cduOOœ}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{œfieldNameœ:œembeddingœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAIEmbeddings-cduOO{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-cduOOœ}-Chroma-gVhy7{œfieldNameœ:œembeddingœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"dataType\":\"OpenAIEmbeddings\",\"id\":\"OpenAIEmbeddings-cduOO\"},\"targetHandle\":{\"fieldName\":\"embedding\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Embeddings\"}}},{\"source\":\"RecursiveCharacterTextSplitter-1eaOX\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{œfieldNameœ:œdocumentsœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-RecursiveCharacterTextSplitter-1eaOX{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ}-Chroma-gVhy7{œfieldNameœ:œdocumentsœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"RecursiveCharacterTextSplitter\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}\",\"target\":\"CombineDocsChain-yk0JF\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-yk0JFœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}-CombineDocsChain-yk0JF{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-yk0JFœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CombineDocsChain-yk0JF\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}}},{\"source\":\"CombineDocsChain-yk0JF\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œfunctionœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-yk0JFœ}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CombineDocsChain-yk0JF{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œfunctionœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-yk0JFœ}-RetrievalQA-4PmTB{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseCombineDocumentsChain\",\"function\"],\"dataType\":\"CombineDocsChain\",\"id\":\"CombineDocsChain-yk0JF\"},\"targetHandle\":{\"fieldName\":\"combine_documents_chain\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseCombineDocumentsChain\"}}},{\"source\":\"Chroma-gVhy7\",\"sourceHandle\":\"{œbaseClassesœ:[œVectorStoreœ,œChromaœ,œBaseRetrieverœ,œVectorStoreRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-gVhy7œ}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-Chroma-gVhy7{œbaseClassesœ:[œVectorStoreœ,œChromaœ,œBaseRetrieverœ,œVectorStoreRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-gVhy7œ}-RetrievalQA-4PmTB{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"dataType\":\"Chroma\",\"id\":\"Chroma-gVhy7\"},\"targetHandle\":{\"fieldName\":\"retriever\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseRetriever\"}}}],\"viewport\":{\"x\":189.54413265004274,\"y\":259.89949657174975,\"zoom\":0.291027508374689}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:59:08.830269\",\"folder\":null,\"id\":\"bc7eb94b-6fc6-49cb-9b19-35347ba51afa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Web Scraper - Content & Links\",\"description\":\"Fetch and parse text and links from a given URL.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-H7PBy\",\"type\":\"genericNode\",\"position\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-H7PBy\"},\"selected\":false,\"positionAbsolute\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VSAdc\",\"type\":\"genericNode\",\"position\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VSAdc\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859}},{\"width\":384,\"height\":374,\"data\":{\"id\":\"GroupNode-WXPMk\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"give me links\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-f6nOg{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-0XtUN{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}-CustomComponent-ODIcp{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-CustomComponent-FGzJJ{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-PromptTemplate-H9Udy{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}-CustomComponent-whsQ5{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"id\":\"GroupNode-WXPMk\",\"position\":{\"x\":873.0737834322758,\"y\":598.8401015776466},\"type\":\"genericNode\",\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":873.0737834322758,\"y\":598.8401015776466}}],\"edges\":[{\"source\":\"ChatOpenAI-VSAdc\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VSAdcœ}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VSAdc\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VSAdc{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VSAdcœ}-LLMChain-H7PBy{œfieldNameœ:œllmœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"GroupNode-WXPMk\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œGroupNode-WXPMkœ}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"GroupNode-WXPMk\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-GroupNode-WXPMk{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œGroupNode-WXPMkœ}-LLMChain-H7PBy{œfieldNameœ:œpromptœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":-348.6161822813733,\"y\":121.40545291211492,\"zoom\":0.6801854262029781}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:22:27.784647\",\"folder\":null,\"id\":\"efc3bf27-3cf1-4561-9a83-3df347572440\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Joliot\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-RQsU1\",\"type\":\"genericNode\",\"position\":{\"x\":514.4440482813261,\"y\":528.164086188516},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RQsU1\"},\"selected\":false,\"positionAbsolute\":{\"x\":514.4440482813261,\"y\":528.164086188516}},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-NTTcv\",\"type\":\"genericNode\",\"position\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-NTTcv\"},\"selected\":false,\"positionAbsolute\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055}},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-VELMV\",\"type\":\"genericNode\",\"position\":{\"x\":-222,\"y\":682.560723386973},\"data\":{\"id\":\"PromptTemplate-VELMV\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-f6nOg{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-0XtUN{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}-CustomComponent-ODIcp{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-CustomComponent-FGzJJ{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-PromptTemplate-H9Udy{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}-CustomComponent-whsQ5{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"selected\":false,\"positionAbsolute\":{\"x\":-222,\"y\":682.560723386973}}],\"edges\":[{\"source\":\"ChatOpenAI-NTTcv\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-NTTcvœ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-NTTcv{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-NTTcvœ}-LLMChain-RQsU1{œfieldNameœ:œllmœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-NTTcv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-VELMV\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-VELMVœ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"id\":\"reactflow__edge-PromptTemplate-VELMV{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-VELMVœ}-LLMChain-RQsU1{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-VELMV\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":298.29888454238517,\"y\":96.95765543775741,\"zoom\":0.5140569133280332}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:23:08.584967\",\"folder\":null,\"id\":\"5df79f1d-f592-4d59-8c0f-9f3c2f6465b1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Pasteur\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-cHel8\",\"type\":\"genericNode\",\"position\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-cHel8\"},\"selected\":false,\"positionAbsolute\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-LA6y0\",\"type\":\"genericNode\",\"position\":{\"x\":-272.94405331278074,\"y\":-603.148171441675},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-LA6y0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-272.94405331278074,\"y\":-603.148171441675}},{\"width\":384,\"height\":404,\"id\":\"CustomComponent-ZNoRM\",\"type\":\"genericNode\",\"position\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ZNoRM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"CustomComponent-zNSTv\",\"type\":\"genericNode\",\"position\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-zNSTv\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-Ihm2o\",\"type\":\"genericNode\",\"position\":{\"x\":-554.9404152016002,\"y\":683.6763775860567},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-Ihm2o\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-554.9404152016002,\"y\":683.6763775860567}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-6ST9l\",\"type\":\"genericNode\",\"position\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-6ST9l\"},\"selected\":false,\"positionAbsolute\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"dragging\":false},{\"width\":384,\"height\":654,\"id\":\"PromptTemplate-l35W1\",\"type\":\"genericNode\",\"position\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"display_name\":\"output_parser\"},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"input_types\"},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"display_name\":\"input_variables\"},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"partial_variables\"},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"display_name\":\"template\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"display_name\":\"template_format\"},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"display_name\":\"validate_template\"},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-l35W1\"},\"selected\":false,\"positionAbsolute\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"dragging\":false},{\"width\":384,\"height\":346,\"id\":\"CustomComponent-iTLf4\",\"type\":\"genericNode\",\"position\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"https://paperswithcode.com/\"}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-iTLf4\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-jWLUz\",\"type\":\"genericNode\",\"position\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-jWLUz\"},\"selected\":false,\"positionAbsolute\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"dragging\":false}],\"edges\":[{\"source\":\"ChatOpenAI-LA6y0\",\"target\":\"LLMChain-cHel8\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-LA6y0œ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-LA6y0{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-LA6y0œ}-LLMChain-cHel8{œfieldNameœ:œllmœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-LA6y0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}\",\"target\":\"CustomComponent-ZNoRM\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-ZNoRMœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-ZNoRM\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}-CustomComponent-ZNoRM{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-ZNoRMœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}\",\"target\":\"CustomComponent-Ihm2o\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-Ihm2oœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-Ihm2o\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}-CustomComponent-Ihm2o{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-Ihm2oœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-Ihm2o\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-Ihm2oœ}\",\"target\":\"CustomComponent-6ST9l\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-6ST9lœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-6ST9l\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-Ihm2o\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-Ihm2o{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-Ihm2oœ}-CustomComponent-6ST9l{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-6ST9lœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}\",\"target\":\"CustomComponent-zNSTv\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-zNSTvœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-zNSTv\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}-CustomComponent-zNSTv{œfieldNameœ:œurlœ,œidœ:œCustomComponent-zNSTvœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}-PromptTemplate-l35W1{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-6ST9l\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-6ST9lœ}\",\"target\":\"CustomComponent-jWLUz\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-jWLUzœ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-jWLUz\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-6ST9l\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-6ST9l{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-6ST9lœ}-CustomComponent-jWLUz{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-jWLUzœ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":false},{\"source\":\"CustomComponent-jWLUz\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-jWLUzœ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-jWLUz\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-jWLUz{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-jWLUzœ}-PromptTemplate-l35W1{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-ZNoRM\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ZNoRMœ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ZNoRM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ZNoRM{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ZNoRMœ}-PromptTemplate-l35W1{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"PromptTemplate-l35W1\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-l35W1œ}\",\"target\":\"LLMChain-cHel8\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-l35W1\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-mJqEg{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-mJqEgœ}-LLMChain-cHel8{œfieldNameœ:œpromptœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":206.6159172940935,\"y\":79.94375811155385,\"zoom\":0.5140569133280333}},\"is_component\":false,\"updated_at\":\"2023-12-06T00:23:04.515144\",\"folder\":null,\"id\":\"ecfb377a-7e88-405d-8d66-7560735ce446\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Lovelace\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:43:25.925753\",\"folder\":null,\"id\":\"30e71767-6128-40e4-9a6d-b9197b679971\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Custom Component\",\"description\":\"Create any custom component you want!\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Data) -> Data:\\n return param\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Data\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"CustomComponent\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-IxJqc\"},\"id\":\"CustomComponent-IxJqc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-05T22:08:27.080204\",\"folder\":null,\"id\":\"f3c56abb-96d8-4a09-80d3-f60181661b3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Wilson\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-05T23:49:58.272677\",\"folder\":null,\"id\":\"324499a6-17a6-49de-96b1-b88955ed2c3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Kowalevski\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:27.084387\",\"folder\":null,\"id\":\"e3168485-d31b-472a-907f-faf833bf7824\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Fermi\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.134463\",\"folder\":null,\"id\":\"d0ecea5d-bcf9-4b8e-88f0-3c243d309336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Friendly Ardinghelli\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.138184\",\"folder\":null,\"id\":\"a406912d-b0e2-4954-bef3-ee80c29eca3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Easley\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162908\",\"folder\":null,\"id\":\"57b32155-4c6e-4823-ad03-8dd09d8abc62\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Varahamihira\",\"description\":\"Create, Chain, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.135644\",\"folder\":null,\"id\":\"18daa0ff-2e5d-457a-95d7-710affec5c4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Joliot\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.139496\",\"folder\":null,\"id\":\"9255e938-280e-4ce7-91cd-8622126a7d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Carroll\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162240\",\"folder\":null,\"id\":\"a7a680b9-30b1-4438-ac24-da597de443aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Herschel\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:46:02.593504\",\"folder\":null,\"id\":\"37a439b0-7b1d-45e3-b4fa-5c73669bae3b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Joliot\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:04.845238\",\"folder\":null,\"id\":\"4d23fd0a-8ad5-46b9-bb99-eed4138e7426\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Babbage\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:41.899665\",\"folder\":null,\"id\":\"1c8ad5b9-5524-41fe-a762-52c75126b832\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Brown\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.702031\",\"folder\":null,\"id\":\"9d4c8e79-4904-4a51-a4bb-146c3d8db10e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Mahavira\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.786331\",\"folder\":null,\"id\":\"4ba370d1-1f8e-4a23-99aa-99e2cd9b7cbf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Gates\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.838989\",\"folder\":null,\"id\":\"992c3cd3-1d79-4986-8c04-88a34130fa30\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Mcclintock\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.932723\",\"folder\":null,\"id\":\"a65bfd13-44df-4090-aca0-5057e21e9997\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Feynman\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.931359\",\"folder\":null,\"id\":\"7a05dac5-c005-411d-9994-19d61e71ce78\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Perlman\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.054687\",\"folder\":null,\"id\":\"6db24541-7211-48e6-a792-1a4a99a0ef90\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Colden\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.078384\",\"folder\":null,\"id\":\"13ac42e8-9124-4bf4-9ea2-28671ef2d9a4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kaku\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:50:33.156776\",\"folder\":null,\"id\":\"79262d75-5c62-4b14-b067-f4297f5c912f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:13.295375\",\"folder\":null,\"id\":\"3b397e74-d8be-4728-9d6c-05f7c78106a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Mccarthy\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:27.632685\",\"folder\":null,\"id\":\"13f4e1fd-45eb-4271-92fd-0d70a31c61d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Lalande\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:54.628983\",\"folder\":null,\"id\":\"9cfd60d8-9311-47b0-b71b-f488f1940bc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Mirzakhani\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:52:52.622698\",\"folder\":null,\"id\":\"0d849403-0f75-455d-b4e4-0d622ee3305a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Brown\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:06.056636\",\"folder\":null,\"id\":\"8643ba14-52d6-4d36-9981-5fd37de5dd76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Kickass Watt\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:23.338727\",\"folder\":null,\"id\":\"818d3066-bf08-4bf9-adcd-739f8abbfa5d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:41.218861\",\"folder\":null,\"id\":\"28eff43e-0ecf-47bf-9851-f1492589978e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Optimistic Jennings\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:03.681106\",\"folder\":null,\"id\":\"68f59069-bc2a-464f-a983-4b61e32e01af\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Mirzakhani\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:31.761949\",\"folder\":null,\"id\":\"5d981c0e-81b3-44cc-a5be-8f55b92bfed5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:56:45.548598\",\"folder\":null,\"id\":\"e812ad47-47e8-422b-b94c-84fd0263c9c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Fermat\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:58:50.234270\",\"folder\":null,\"id\":\"82aaf449-e737-4699-9360-929ab6108dc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Albattani\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:59:53.946035\",\"folder\":null,\"id\":\"097cb080-274b-40ca-8dde-7900a949568a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kirch\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:00:51.745350\",\"folder\":null,\"id\":\"837d7b5f-8495-46a9-b00e-ad1b7ebb52f4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Kowalevski\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:02:53.336102\",\"folder\":null,\"id\":\"3ff079c2-d9f9-4da6-a22a-423fa35670ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Stallman\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:28.268357\",\"folder\":null,\"id\":\"c8b204dd-3d57-4bc8-aa13-1d559672e75b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Swirles\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:51.194455\",\"folder\":null,\"id\":\"a097f083-5880-4cf7-986b-51898bc68e11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dreamy Williams\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:04:36.678251\",\"folder\":null,\"id\":\"d9585f63-ce76-42ce-87bc-8e69601ea5c6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Hawking\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:05:13.672479\",\"folder\":null,\"id\":\"612a01d5-8c8d-4cc1-8c54-35626b7f4a6d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Kilby\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:10:37.047955\",\"folder\":null,\"id\":\"2d05a598-3cdf-452a-bd5d-b0e569e562e3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Insane Cori\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:12.426578\",\"folder\":null,\"id\":\"d1769a4a-c1e9-4d74-9273-1e76cfcf21f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Compassionate Tesla\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:52.806238\",\"folder\":null,\"id\":\"28c5d9dd-0466-4c80-9e58-b1e061cd358d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Goldstine\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:21:44.488510\",\"folder\":null,\"id\":\"b3c57e4f-28a1-4580-bf08-a9484bdd66e8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elegant Curie\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:23:47.610237\",\"folder\":null,\"id\":\"28fb024e-6ba1-4f5b-83b3-4742b3b8117c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Chandrasekhar\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:24:29.824530\",\"folder\":null,\"id\":\"d2b87cf7-9167-4030-8e9f-b8d9aa0cadee\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Nobel\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:26:51.210699\",\"folder\":null,\"id\":\"c2c9fbac-7d97-40c2-8055-dff608df9414\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Edison\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:27:35.822482\",\"folder\":null,\"id\":\"a55561cd-4b25-473f-bde5-884cbabb0d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Lichterman\",\"description\":\"Building Linguistic Labyrinths.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:29:09.259381\",\"folder\":null,\"id\":\"9c6fe6d4-8311-4fc6-8b02-2a816d7c059d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Bhaskara\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:31:36.053452\",\"folder\":null,\"id\":\"ef6fc1ab-aff8-45a1-8cd5-bc8e38565e4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Watt\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:32:26.765250\",\"folder\":null,\"id\":\"499b5351-9c09-4934-9f9d-a24be2fd8b24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Wien\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:33:23.648859\",\"folder\":null,\"id\":\"a57eda91-7f6e-410d-9990-385fe0c724f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Spence\",\"description\":\"Mapping Meaningful Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:34:22.576407\",\"folder\":null,\"id\":\"685f685e-8a1b-4b7e-9e21-6cdd72163c91\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Fermat\",\"description\":\"Create, Connect, Converse.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:35:44.920540\",\"folder\":null,\"id\":\"3e061766-b834-4fa4-ba9c-b060925d9703\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Volta\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:36:33.001572\",\"folder\":null,\"id\":\"135f2fd9-e005-40bc-a9bf-c25107388415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:37:16.208823\",\"folder\":null,\"id\":\"167cdb24-7e1c-475b-893a-cca2f125426c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Sinoussi\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:38:07.215401\",\"folder\":null,\"id\":\"48113cab-2c04-493f-8c2e-c8d067826aa2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Sagan\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:39:19.479656\",\"folder\":null,\"id\":\"28d292dc-e094-4ffe-a657-178892933267\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Hoover\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:02.895859\",\"folder\":null,\"id\":\"0c9849b7-b2d6-4d0e-8334-abfb3ae183dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Mendeleev\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:27.867247\",\"folder\":null,\"id\":\"d78c52e9-1941-4555-9bb9-abd01f176705\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Dubinsky\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:41:23.177402\",\"folder\":null,\"id\":\"5277a04c-b5da-4597-aaa2-a6b66ea11d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Poitras\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:08.731865\",\"folder\":null,\"id\":\"b0d0c8de-4eea-484a-a068-b13e63f7e71c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Ptolemy\",\"description\":\"Crafting Conversations, One Node at a Time.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:25.658996\",\"folder\":null,\"id\":\"b6f155e2-03eb-4232-9bab-145463382fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Loving Cray\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:43:57.530112\",\"folder\":null,\"id\":\"b75c10ca-9ecb-432b-88ab-e1847e836e22\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Pasteur\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:44:58.979393\",\"folder\":null,\"id\":\"3710eccb-e7a7-41d5-9339-d9c301515d17\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Gates\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:45:42.744174\",\"folder\":null,\"id\":\"fdd2271e-92f6-4349-8c01-2ec0e9e73f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Determined Khorana\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:10.084684\",\"folder\":null,\"id\":\"88b49a97-0888-4fea-8d9b-6ac2cc6d158e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Booth\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:41.577750\",\"folder\":null,\"id\":\"629afe54-8796-45be-a570-e3ac79c60792\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Mendeleev\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:47:22.631243\",\"folder\":null,\"id\":\"7bf481b0-73fe-4f5b-a3d4-1263d9d8e827\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Clever Varahamihira\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:49:51.026960\",\"folder\":null,\"id\":\"df9e86b6-56c9-4848-9010-102615314766\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Stallman\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:50:14.932236\",\"folder\":null,\"id\":\"3e66994c-9b7a-4b85-a917-65d1959d7352\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Wozniak\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:51:13.811894\",\"folder\":null,\"id\":\"d10f924a-5780-4255-9f41-3e102ae03e84\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hopeful Mirzakhani\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:23.906908\",\"folder\":null,\"id\":\"f3378fa8-ccaf-4a3b-90d6-b8ab0c4e481f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Joule\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:43.863440\",\"folder\":null,\"id\":\"deaa50e7-a8b1-46b1-856c-334ee781e1c2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Shockley\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:53:43.299699\",\"folder\":null,\"id\":\"c72eac2c-d924-40c6-a102-da524216d090\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Dewey\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:54:18.848827\",\"folder\":null,\"id\":\"d9425324-bb60-462e-b431-90a536f2bc76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Joliot\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:12.348608\",\"folder\":null,\"id\":\"621ba134-3fac-487c-98cd-96941439f1be\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Backstabbing Franklin\",\"description\":\"Craft Language Connections Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.491824\",\"folder\":null,\"id\":\"86ca9773-c7b7-4a1a-859a-6cbe0ddff206\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Swartz\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.524414\",\"folder\":null,\"id\":\"da1c02b7-d608-4498-9946-7d02f55fa103\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Volta\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.641432\",\"folder\":null,\"id\":\"8d5dd998-6b51-4f65-8331-086a7f3b11d7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Lichterman\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746120\",\"folder\":null,\"id\":\"942027d3-e2ea-48c6-8279-0a41b54e8862\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Einstein\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746904\",\"folder\":null,\"id\":\"9e9b6298-1073-4297-8ecc-3c620b432e70\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Planck\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.747420\",\"folder\":null,\"id\":\"7cd60c83-b797-4e60-af6d-cbc540657943\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Zobell\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.749951\",\"folder\":null,\"id\":\"dab08306-9521-4e15-aa11-e6a6a4e210f8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Knuth\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:16.772119\",\"folder\":null,\"id\":\"c9149590-636a-44f5-aaae-45a4e78fe4df\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Wright\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:52.954568\",\"folder\":null,\"id\":\"6b23b2ad-c07c-46f6-b9ad-268783d1712e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Vibrant Lalande\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.656156\",\"folder\":null,\"id\":\"ece3bcf6-a147-4559-862e-cacff9db5f48\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Gauss\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.717991\",\"folder\":null,\"id\":\"252b6021-ecad-4eaf-9e2f-106c4c89c496\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gigantic Rosalind\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.736261\",\"folder\":null,\"id\":\"b8cb6d8d-c0fb-4e8d-a46e-2c608dc8a714\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Hubble\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.769546\",\"folder\":null,\"id\":\"553a67db-7225-474c-978e-8a40cde2bfb2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Mclean\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.981063\",\"folder\":null,\"id\":\"e0865007-4d80-4edf-87ab-9e8d2892d719\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Murdock\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.982286\",\"folder\":null,\"id\":\"1021cd20-66e0-4b81-9c79-bfe729774d20\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Riemann\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.983216\",\"folder\":null,\"id\":\"089074d3-8a1e-4d85-a59d-b4717090e4d3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Tesla\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:00:35.704142\",\"folder\":null,\"id\":\"beb49d88-255e-4db4-931b-4ab4358f1097\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Boyd\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:13.569507\",\"folder\":null,\"id\":\"75b5ab8d-e0c0-43cf-912b-8578550e198a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Babbage\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:27.944868\",\"folder\":null,\"id\":\"503edd55-8f70-43e5-87fb-2324eaf62336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Bose\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:02:40.122079\",\"folder\":null,\"id\":\"ae4f2992-1a23-4a43-bec6-68b823935762\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Coulomb\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.263237\",\"folder\":null,\"id\":\"a2a464db-b02a-4440-ad9e-7b552ee6c027\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Drunk Newton\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.883766\",\"folder\":null,\"id\":\"1a5d9af7-5a96-4035-a09c-e15741785828\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Pasteur\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.933083\",\"folder\":null,\"id\":\"04b94873-0828-41dc-a850-fd4132c9b9f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Spence\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.967685\",\"folder\":null,\"id\":\"47003dc2-7884-48a3-aa66-e4185079f4d9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Noyce\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.983198\",\"folder\":null,\"id\":\"13769cb4-2e15-4d54-a28a-c97dc15db58c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Edison\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.018879\",\"folder\":null,\"id\":\"453dacde-6b10-406b-a5b3-f90f44be6899\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Snyder\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.205689\",\"folder\":null,\"id\":\"9544fac9-3002-47aa-86b9-102844fe9649\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khorana\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.243434\",\"folder\":null,\"id\":\"90498ef6-34f9-45c8-8cd0-fe6a36a26f41\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Albattani\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:05:07.775497\",\"folder\":null,\"id\":\"9577c416-8ce8-48f6-ad6d-ab2e003bb415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Charming Goodall\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:07:52.139318\",\"folder\":null,\"id\":\"f10dc08e-b9c7-44b3-8837-b95aee2f6dbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Ramanujan\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:08:22.448480\",\"folder\":null,\"id\":\"c864bd8c-67cd-465f-bf7d-7a35c7df37f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Mclean\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:09:56.507826\",\"folder\":null,\"id\":\"f0c13b19-ae23-40e6-88d6-d135897ee100\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Hawking\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:10:27.169757\",\"folder\":null,\"id\":\"0afb91b4-8f41-4270-900a-f5de647d45ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Lovelace\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:02.292233\",\"folder\":null,\"id\":\"0f1e5dcf-8769-4157-b495-5f215b490107\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Kilby\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:46.960966\",\"folder\":null,\"id\":\"310d03d9-dd50-4946-9a27-38ee06906212\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Almeida\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:12:24.475101\",\"folder\":null,\"id\":\"3cbc8fc2-a86f-4177-9a1c-a833b2a24283\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Roentgen\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:06.753571\",\"folder\":null,\"id\":\"c508e922-29e9-4234-84ae-505c5bdf41c1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Poitras\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.754605\",\"folder\":null,\"id\":\"1431df05-1b6f-41af-a063-a18d26a946ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khayyam\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.791627\",\"folder\":null,\"id\":\"344e03fb-fd49-4e87-be67-7dce04ba655b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zealous Mayer\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.803889\",\"folder\":null,\"id\":\"8b3ff1cb-3a6c-46ee-b09a-0e9f9f13a8b9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Ramanujan\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.822583\",\"folder\":null,\"id\":\"18961e76-f4b1-4968-926a-fed22cb04f69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Franklin\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.854440\",\"folder\":null,\"id\":\"0e0ee854-ab46-4333-a848-2e1239a24334\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Swirles\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.988932\",\"folder\":null,\"id\":\"cc7b8238-3d15-4f78-bd0c-8311691c9ff8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Swartz\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:08.028688\",\"folder\":null,\"id\":\"123369f9-c83c-4ed3-93b6-78ca29c271cf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kowalevski\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.097607\",\"folder\":null,\"id\":\"ed4b1490-e9e5-46bf-b337-166b48eaadd6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Golick\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.617772\",\"folder\":null,\"id\":\"9d1be311-c618-4e3e-aeb1-4161ab37850e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Newton\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.646124\",\"folder\":null,\"id\":\"63a75f99-1745-40d3-9e27-3d19a143be45\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Noyce\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.685781\",\"folder\":null,\"id\":\"b418ca87-eb17-42e8-b789-3fcb0cab3ddb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fluffy Fermat\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.705984\",\"folder\":null,\"id\":\"93802b07-eee9-4a2b-8691-7d9a231bd67e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Stoic Payne\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.723990\",\"folder\":null,\"id\":\"d62df661-0ae5-4b41-a9fb-71cb2e46ad52\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Darwin\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.818343\",\"folder\":null,\"id\":\"d1f62248-415c-474a-bfa6-3509a528a33b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Thompson\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.925999\",\"folder\":null,\"id\":\"d2267176-f020-4c52-90a4-7f944d7c1749\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Dewey\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:07.400402\",\"folder\":null,\"id\":\"8cf1ac8d-d34d-4e8a-a9da-be44672e1dfb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Zuse\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.384611\",\"folder\":null,\"id\":\"bae3cb5b-0f1b-4e95-bf58-7eab38da3d73\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hungry Zuse\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.436591\",\"folder\":null,\"id\":\"4dfafe3e-e9ef-405d-be72-550084411d69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Khayyam\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.435958\",\"folder\":null,\"id\":\"e0f81215-dc55-4b5a-b8cf-6e2fcbf297a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Mendel\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.470080\",\"folder\":null,\"id\":\"5022a71c-da47-4975-a4d0-6d2d9e760d3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Inquisitive Poitras\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.484430\",\"folder\":null,\"id\":\"4f1ff9e3-3500-404c-80af-2010bc46cdcb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Jones\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.661306\",\"folder\":null,\"id\":\"77af3e47-c2cc-42f6-99e1-78589439a447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.662877\",\"folder\":null,\"id\":\"6f3e2e56-b329-47e3-86cc-024c29203016\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Visvesvaraya\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.092917\",\"folder\":null,\"id\":\"449ac0ee-ee29-4a9f-9aff-fd6a86624457\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Tesla\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.630382\",\"folder\":null,\"id\":\"a2136ed3-dc75-4a8f-ab34-6887ff955b23\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noether\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.652058\",\"folder\":null,\"id\":\"fd1080f8-db07-481a-b2ba-60f67fcb20a6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Pasteur\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.688661\",\"folder\":null,\"id\":\"d534d5e1-92aa-4fb2-a795-7071c4feba47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Sinoussi\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.741385\",\"folder\":null,\"id\":\"85323170-c066-4d8f-acb0-1b142241389e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Ramanujan\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.790086\",\"folder\":null,\"id\":\"b0d18432-21ab-404b-acb6-57ef97353fad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sick Joliot\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-rVj1B\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-rVj1B\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":267.7156633365312,\"y\":716.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T18:52:26.999440\",\"folder\":null,\"id\":\"be39958a-ef42-4fa8-8e54-b611e56b5c97\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Graceful Lumiere\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:11.012069\",\"folder\":null,\"id\":\"f7dcecfd-533c-4f40-9dcb-f213962ed1a2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"aaaaa\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-P6Z0D\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-P6Z0D\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":266.7156633365312,\"y\":657.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T19:05:14.503144\",\"folder\":null,\"id\":\"c2411a20-57c6-44cc-a0d0-2c857453633d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Aryabhata\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":459,\"id\":\"CustomComponent-Qhbd7\",\"type\":\"genericNode\",\"position\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom openai import OpenAI\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"OpenAI STT english translator\\\"\\n description: str = \\\"Transcript and translate any audio to english\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"audio_path\\\":{\\\"display_name\\\":\\\"Audio path\\\",\\\"input_types\\\":[\\\"str\\\"]},\\\"openAI_key\\\":{\\\"display_name\\\":\\\"OpenAI key\\\",\\\"password\\\":True}}\\n\\n def build(self,audio_path:str,openAI_key:str) -> str:\\n client = OpenAI(api_key=openAI_key)\\n audio_file= open(audio_path, \\\"rb\\\")\\n transcript = client.audio.translations.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file\\n )\\n self.status = transcript.text\\n return transcript.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"audio_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"audio_path\",\"display_name\":\"Audio path\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"aaaaa\"},\"openAI_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openAI_key\",\"display_name\":\"OpenAI key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Transcript and translate any audio to english\",\"base_classes\":[\"str\"],\"display_name\":\"OpenAI STT english tra\",\"custom_fields\":{\"audio_path\":null,\"openAI_key\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Qhbd7\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913}}],\"edges\":[],\"viewport\":{\"x\":433.8372868055629,\"y\":250.9611989970935,\"zoom\":0.8467453123625275}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:16:56.971879\",\"folder\":null,\"id\":\"122eee5d-9734-4e51-9da5-b39bead64a8d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Wing\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:23.227017\",\"folder\":null,\"id\":\"171d0063-6446-4c6a-8f5b-786a38951d44\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Boyd\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.063781\",\"folder\":null,\"id\":\"3a7af50c-6555-4004-a86e-1ea37e477900\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Dewey\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.065404\",\"folder\":null,\"id\":\"dc4b4235-a550-41e2-9ddb-bcb352a1bc03\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Carroll\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.087501\",\"folder\":null,\"id\":\"9550e2bf-db7a-41f5-84e5-177a181bbeda\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Engelbart\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.112543\",\"folder\":null,\"id\":\"6a3a24bb-01cb-4d8e-8d17-0dc92d257322\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sassy Khayyam\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.147631\",\"folder\":null,\"id\":\"8d372f5e-ca12-4ea8-a1a1-8846afa72692\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Bell\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.212921\",\"folder\":null,\"id\":\"800f8785-0f41-4db3-aef8-9e3de5250526\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Bassi\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.395729\",\"folder\":null,\"id\":\"4589607a-065b-4a8f-ba52-5045d7b04086\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Volhard\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.263971\",\"folder\":null,\"id\":\"b2440ed8-44fa-4684-adf7-b5e84bff6577\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Ecstatic Poincare\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.377270\",\"folder\":null,\"id\":\"b996f514-e0b8-432f-969b-7276630a8f4b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Zuse\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.406385\",\"folder\":null,\"id\":\"6e2e9c12-0afc-499e-acdd-adf4b5f7d4fc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Hopper\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.413014\",\"folder\":null,\"id\":\"e020f1a5-aa12-45e7-ba50-6eb64a735e60\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Jang\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.433045\",\"folder\":null,\"id\":\"ee58f892-b7b2-408e-b4b9-9d862fc315aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Ohm\",\"description\":\"Promptly Ingenious!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.403404\",\"folder\":null,\"id\":\"023a1fc3-8807-4167-b6b2-f4e5daf036f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Degrasse\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.411655\",\"folder\":null,\"id\":\"085f106f-c1e9-4a0f-ba31-d2fafe685d9c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Volta\",\"description\":\"Catalyzing Business Growth through Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.408697\",\"folder\":null,\"id\":\"14481bb5-1353-452f-9359-d38c9419d79c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:21.774940\",\"folder\":null,\"id\":\"e9316292-4ee1-441b-8327-0b09a7831fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Easley\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.416556\",\"folder\":null,\"id\":\"668806ba-3efa-44de-aeb7-4ac082ba9172\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Mestorf\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.484048\",\"folder\":null,\"id\":\"3fc0a371-aada-4450-9d17-33d3cc05c870\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Franklin\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.509095\",\"folder\":null,\"id\":\"af967c98-5f08-4ee2-b1ce-6c16b4f9ebe2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bhaskara\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.508465\",\"folder\":null,\"id\":\"758c4164-b521-45d0-a15f-d49480e312eb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Edison\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.602296\",\"folder\":null,\"id\":\"f9d3d30f-8859-433f-bafc-ccf1a7196e35\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Ride\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.604061\",\"folder\":null,\"id\":\"0142bca5-eb61-42ed-9917-70c4c0f54eb0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noyce\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.603113\",\"folder\":null,\"id\":\"0b63d036-4669-4ceb-8ea4-34035340df77\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Bhabha\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.345767\",\"folder\":null,\"id\":\"8b9a66d4-a924-4b84-a2b5-5dd0645ac07a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Zobell\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.722319\",\"folder\":null,\"id\":\"c912fd6b-b32d-409f-a0e5-c6249b066429\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Shaw\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.750779\",\"folder\":null,\"id\":\"9d755cd4-c652-43e0-a68d-75a5475ce7a3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Giggly Newton\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.786602\",\"folder\":null,\"id\":\"0d3af7de-1ada-4c43-a69f-1bfad370ccfc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Yalow\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.792245\",\"folder\":null,\"id\":\"b6444376-4162-436b-8b40-f5a6afc850db\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Bhabha\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.890349\",\"folder\":null,\"id\":\"d90af439-fb34-4d27-98f2-06f7f9a9ed8c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Spirited Hoover\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.905750\",\"folder\":null,\"id\":\"31597ce2-de3c-490b-9ead-3f702f63cfd9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Davinci\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:08.001400\",\"folder\":null,\"id\":\"b43c63e9-a257-4a53-8acc-049e13706ac2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"23\",\"description\":\"23\",\"data\":{\"nodes\":[{\"width\":384,\"height\":467,\"id\":\"PromptTemplate-K7xiS\",\"type\":\"genericNode\",\"position\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"dasdas\",\"dasdasd\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"{dasdas}\\n{dasdasd}\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"dasdas\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdas\",\"display_name\":\"dasdas\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"dasdasd\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdasd\",\"display_name\":\"dasdasd\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"BasePromptTemplate\",\"StringPromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"dasdas\",\"dasdasd\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-K7xiS\"},\"selected\":false,\"positionAbsolute\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"dragging\":false},{\"width\":384,\"height\":366,\"id\":\"AirbyteJSONLoader-DXfcM\",\"type\":\"genericNode\",\"position\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"suffixes\":[\".json\"],\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\"json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-DXfcM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"dragging\":false},{\"width\":384,\"height\":376,\"id\":\"PromptRunner-ckWMH\",\"type\":\"genericNode\",\"position\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"data\":{\"type\":\"PromptRunner\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\n\\nclass PromptRunner(CustomComponent):\\n display_name: str = \\\"Prompt Runner\\\"\\n description: str = \\\"Run a Chain with the given PromptTemplate\\\"\\n beta: bool = True\\n field_config = {\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"prompt\\\": {\\n \\\"display_name\\\": \\\"Prompt Template\\\",\\n \\\"info\\\": \\\"Make sure the prompt has all variables filled.\\\",\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(self, llm: BaseLLM, prompt: PromptTemplate, inputs: dict = {}) -> Document:\\n chain = prompt | llm\\n # The input is an empty dict because the prompt is already filled\\n result = chain.invoke(input=inputs)\\n if hasattr(result, \\\"content\\\"):\\n result = result.content\\n self.repr_value = result\\n return Document(page_content=str(result))\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"inputs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"inputs\",\"display_name\":\"inputs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt Template\",\"advanced\":false,\"dynamic\":false,\"info\":\"Make sure the prompt has all variables filled.\",\"type\":\"PromptTemplate\",\"list\":false}},\"description\":\"Run a Chain with the given PromptTemplate\",\"base_classes\":[\"Document\"],\"display_name\":\"Prompt Runner\",\"custom_fields\":{\"inputs\":null,\"llm\":null,\"prompt\":null},\"output_types\":[\"PromptRunner\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"PromptRunner-ckWMH\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"dragging\":false}],\"edges\":[{\"source\":\"PromptRunner-ckWMH\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œPromptRunnerœ,œidœ:œPromptRunner-ckWMHœ}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{œfieldNameœ:œdasdasdœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdasd\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"PromptRunner\",\"id\":\"PromptRunner-ckWMH\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptRunner-ckWMH{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œPromptRunnerœ,œidœ:œPromptRunner-ckWMHœ}-PromptTemplate-K7xiS{œfieldNameœ:œdasdasdœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\"},{\"source\":\"AirbyteJSONLoader-DXfcM\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œAirbyteJSONLoaderœ,œidœ:œAirbyteJSONLoader-DXfcMœ}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{œfieldNameœ:œdasdasœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdas\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"AirbyteJSONLoader\",\"id\":\"AirbyteJSONLoader-DXfcM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-AirbyteJSONLoader-DXfcM{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œAirbyteJSONLoaderœ,œidœ:œAirbyteJSONLoader-DXfcMœ}-PromptTemplate-K7xiS{œfieldNameœ:œdasdasœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\"}],\"viewport\":{\"x\":721.09842496776,\"y\":-303.59762799439625,\"zoom\":0.6417129487814537}},\"is_component\":false,\"updated_at\":\"2023-12-08T22:52:14.560323\",\"folder\":null,\"id\":\"8533c46e-21fd-4b92-b68e-1086ea86c72d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Stonebraker\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:26:42.332360\",\"folder\":null,\"id\":\"92bc0875-4a73-44f2-9410-3b8342e404bf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (1)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-dMB5d\"},\"id\":\"CustomComponent-dMB5d\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:43.668665\",\"folder\":null,\"id\":\"912265df-9b87-4b30-a585-1ca59b944391\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (2)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-ipifC\"},\"id\":\"CustomComponent-ipifC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:49.799612\",\"folder\":null,\"id\":\"ca83ee08-2f93-427d-9897-80fef6dd5447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Y4qL7\"},\"id\":\"CustomComponent-Y4qL7\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:53.719960\",\"folder\":null,\"id\":\"5847602b-769a-4a82-82e8-a70f54a59929\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Williams\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:27:45.691254\",\"folder\":null,\"id\":\"0e3bdba9-127a-4399-81a4-2865b70a4a47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Shared Component\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-TK9Ea\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-TK9Ea\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:28:34.119070\",\"folder\":null,\"id\":\"29c1a247-47b0-457b-8666-7c0a67dc72b0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"teste cristhian\",\"description\":\"11111\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-P5wrB\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-P5wrB\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}},{\"width\":384,\"height\":626,\"id\":\"OpenAI-zpihD\",\"type\":\"genericNode\",\"position\":{\"x\":-56.983202536768374,\"y\":61.715652677908665},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-babbage-001\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false,\"value\":\"dasdasdasdsadasdas\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"1.4\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLanguageModel\",\"BaseLLM\",\"BaseOpenAI\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-zpihD\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-56.983202536768374,\"y\":61.715652677908665}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:40:48.453096\",\"folder\":null,\"id\":\"2e59d013-2acb-49a6-915b-9231a7e6eb58\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent (1)\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-jsHqy\"},\"id\":\"CSVAgent-jsHqy\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:31:17.317322\",\"folder\":null,\"id\":\"ab1034a9-9b5b-4c65-bf6e-9f098a403942\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Wilsonfasdfsd\",\"description\":\"Building Linguistic Labyrinths.fasdfads\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:43:45.298121\",\"folder\":null,\"id\":\"7d91c0c5-fba6-4c60-b4d1-11d430ef357a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (1)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-pAHh6\"},\"id\":\"AirbyteJSONLoader-pAHh6\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:47:58.573137\",\"folder\":null,\"id\":\"f0cc4292-97cc-4748-803d-949e30dcf661\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"ff2\":\"d3bbd\"},{\"w\":\"bvd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-0zU2Q\"},\"id\":\"AirbyteJSONLoader-0zU2Q\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:09.035318\",\"folder\":null,\"id\":\"5e3c0d55-1a00-4e15-9821-0c625c6415ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-Ub1Xe\"},\"id\":\"CSVAgent-Ub1Xe\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:16.985419\",\"folder\":null,\"id\":\"baee8061-4788-4ce6-928f-c6ce1ecb443c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Heisenberg\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":366,\"id\":\"CSVLoader-RMUx9\",\"type\":\"genericNode\",\"position\":{\"x\":111,\"y\":345.51250076293945},\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVLoader-RMUx9\"},\"positionAbsolute\":{\"x\":111,\"y\":345.51250076293945}}],\"edges\":[],\"viewport\":{\"x\":0,\"y\":0,\"zoom\":1}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:38:40.291137\",\"folder\":null,\"id\":\"109e9629-d569-4555-9d40-42203a5ed035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CohereEmbeddings\",\"description\":\"Cohere embedding models.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CohereEmbeddings\",\"node\":{\"template\":{\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cohere_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"cohere_api_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"embed-english-v2.0\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"truncate\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"truncate\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"user_agent\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"user_agent\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"CohereEmbeddings\"},\"description\":\"Cohere embedding models.\",\"base_classes\":[\"CohereEmbeddings\",\"Embeddings\"],\"display_name\":\"CohereEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/cohere\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CohereEmbeddings-HFUAf\"},\"id\":\"CohereEmbeddings-HFUAf\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:46.172344\",\"folder\":null,\"id\":\"662d8040-d47c-40db-bda1-66489a1c9d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (1)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-3wrib\"},\"id\":\"CSVLoader-3wrib\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:56:11.662526\",\"folder\":null,\"id\":\"4fae6aec-ddbd-498d-a4d1-ca0290f6a5ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (2)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-VEjyx\"},\"id\":\"CSVLoader-VEjyx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:57:37.560784\",\"folder\":null,\"id\":\"d80635ee-966c-41f2-981c-afa2c388ac6e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (3)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-PIhOc\"},\"id\":\"CSVLoader-PIhOc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:27.991966\",\"folder\":null,\"id\":\"c5cc4c32-77c8-4889-a9f8-2632466b7366\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (4)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-deB43\"},\"id\":\"CSVLoader-deB43\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:42.509243\",\"folder\":null,\"id\":\"0ab59938-ccf4-4bb9-b285-1f5da38648f0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-mdkLm\"},\"id\":\"CSVLoader-mdkLm\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:17.458354\",\"folder\":null,\"id\":\"f127b7e7-4149-492e-8998-6b1b35ec4153\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (5)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-FRc6Y\"},\"id\":\"CSVLoader-FRc6Y\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:26.958867\",\"folder\":null,\"id\":\"a870a096-725c-4914-add0-8d57d710b7e5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (2)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-Z0uol\"},\"id\":\"AirbyteJSONLoader-Z0uol\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:33.764117\",\"folder\":null,\"id\":\"2a37c76c-65c8-4c01-a72d-eb46f3d41a56\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-28ASv\"},\"id\":\"AmazonBedrockEmbeddings-28ASv\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:41.066618\",\"folder\":null,\"id\":\"850ba4e6-96ca-49a7-9b0c-4b7048fd52c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"ConversationBufferMemory\",\"description\":\"Buffer for storing conversation memory.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"ConversationBufferMemory\",\"node\":{\"template\":{\"chat_memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chat_memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMessageHistory\",\"list\":false},\"ai_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"AI\",\"password\":false,\"name\":\"ai_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"human_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"Human\",\"password\":false,\"name\":\"human_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"input_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"input_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"type\":\"str\",\"list\":false},\"memory_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"chat_history\",\"password\":false,\"name\":\"memory_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"output_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"output_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"type\":\"str\",\"list\":false},\"return_messages\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"return_messages\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationBufferMemory\"},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseMemory\",\"BaseChatMemory\",\"ConversationBufferMemory\"],\"display_name\":\"ConversationBufferMemory\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"ConversationBufferMemory-WaoLx\"},\"id\":\"ConversationBufferMemory-WaoLx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:04:46.058568\",\"folder\":null,\"id\":\"be650940-0449-4eb0-a708-056310f924fd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (1)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\"},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:05:50.570800\",\"folder\":null,\"id\":\"53ad1fe2-f3af-4354-86e0-eb141ce12859\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (2)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\"},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:06:11.415088\",\"folder\":null,\"id\":\"e9ed1c90-146e-452d-8ccd-ebf2e0da4331\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (3)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\"},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:07:06.411108\",\"folder\":null,\"id\":\"83783c57-64e3-41a6-aa7e-ed82f80f1e53\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (6)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-2pn2o\"},\"id\":\"CSVLoader-2pn2o\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:38:30.706258\",\"folder\":null,\"id\":\"c4ae9de6-9df3-4d3c-afc9-1752af4fecd7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-MJrAC\"},\"id\":\"AgentInitializer-MJrAC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:42:54.715163\",\"folder\":null,\"id\":\"ff84b5f9-5680-4084-a9f1-7d94fe675486\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer (1)\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-3lcZ4\"},\"id\":\"AgentInitializer-3lcZ4\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:43:20.819934\",\"folder\":null,\"id\":\"97f5db9f-d6cc-4555-88fb-3be102c67814\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Banach\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:52:49.951416\",\"folder\":null,\"id\":\"a600acd1-213a-4ce7-8648-ab2ee59f5918\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (3)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-JhQtx\"},\"id\":\"AirbyteJSONLoader-JhQtx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:44:49.587337\",\"folder\":null,\"id\":\"07c52ad7-ca52-4cdd-ab40-74a91dbad0dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (4)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-bIvDc\"},\"id\":\"AirbyteJSONLoader-bIvDc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:13.458500\",\"folder\":null,\"id\":\"53e4d256-3653-444b-b8e0-fb97b3ae5c7e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (5)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-2BLS8\"},\"id\":\"AirbyteJSONLoader-2BLS8\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:44.461699\",\"folder\":null,\"id\":\"b5158cc1-c6b8-4e25-907a-bc7e7637aa38\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (4)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-NsBzN\"},\"id\":\"AmazonBedrockEmbeddings-NsBzN\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:50:29.791575\",\"folder\":null,\"id\":\"3fb77f72-1be7-4ce0-ae89-a82b0eee9acf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Golick\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.707854\",\"folder\":null,\"id\":\"9c5d21c2-ea82-4cf4-a591-c3d3fd3f13e6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci (1)\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.761150\",\"folder\":null,\"id\":\"f8e2e16e-129c-4116-9626-2c6b524d97b7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Degrasse\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.764440\",\"folder\":null,\"id\":\"d7f4f7b5-effe-4834-8cab-4f2fc4f6e9de\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Archimedes\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.767546\",\"folder\":null,\"id\":\"2265d813-4a87-410f-b06a-65e35db8219e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Heyrovsky\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.765105\",\"folder\":null,\"id\":\"10bfd881-e67e-4c33-965d-ee041695edce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Carroll\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.811794\",\"folder\":null,\"id\":\"63fa5653-4513-47f2-8dfa-baeb1d981f93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Perlman\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.814993\",\"folder\":null,\"id\":\"f4bc5945-20d9-4703-a5bb-6a4a3ef7fc8e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Stallman\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.813144\",\"folder\":null,\"id\":\"8d8b80f9-4b74-4cd5-bc5c-08a32c4d2b95\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Einstein\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:19.518262\",\"folder\":null,\"id\":\"21808fd7-a492-4e29-8863-301c2785f542\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Swanson\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.185637\",\"folder\":null,\"id\":\"7752299a-4aa9-44db-8d9c-5c4a2ac1b071\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Pascal\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.223064\",\"folder\":null,\"id\":\"78f48a13-6a9f-42ce-9d58-ec9b63b381d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Bartik\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.239758\",\"folder\":null,\"id\":\"38074091-3d7c-4d42-b61b-ae195c1b8a4e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Condescending Joliot\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.271996\",\"folder\":null,\"id\":\"773020aa-5c2d-4632-ad9e-21276861ab93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kalam\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.283929\",\"folder\":null,\"id\":\"0092d077-6d31-401f-a739-b164476b90ed\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Bhabha\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.467739\",\"folder\":null,\"id\":\"4a395211-712d-4dd2-b3bb-e6b19200f15d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Babbage\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.742990\",\"folder\":null,\"id\":\"3f086a82-3e29-4328-9da8-e02dc9201744\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Volta\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:18.594247\",\"folder\":null,\"id\":\"659b8289-c8e8-413d-9b2b-51e68411f170\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Jennings\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:42.640309\",\"folder\":null,\"id\":\"f55f0640-d47e-4471-b1ba-3411d38ecac5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Shaw\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:58.376247\",\"folder\":null,\"id\":\"a039811e-449a-4244-83ed-4ddd731a0921\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock (1)\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:25:14.674524\",\"folder\":null,\"id\":\"0faf6144-6ca6-4f64-a343-665ae54774ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Volta\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:26:50.418029\",\"folder\":null,\"id\":\"c5d149d0-c401-4f5e-b79f-2abcc7b8d98d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Bubbly Curie\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:27:10.900899\",\"folder\":null,\"id\":\"7bb2d226-9740-433d-861f-a499632c5a13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Nobel\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:11.541630\",\"folder\":null,\"id\":\"947906d8-75ea-470c-a8e2-cc80c5d3bdbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Northcutt\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:37.169791\",\"folder\":null,\"id\":\"56f109fd-2c18-42ed-a9b2-089a678a0c11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Khayyam\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:24.686359\",\"folder\":null,\"id\":\"551d7bfa-49aa-43f1-a779-e47eabc2aaf2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Spence\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:47.738472\",\"folder\":null,\"id\":\"12aef128-130e-492e-bf84-62d4cb4cd456\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Lavoisier\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:31:43.272365\",\"folder\":null,\"id\":\"9952c044-6903-4fba-a270-6ed0b90c93c9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:32:23.972035\",\"folder\":null,\"id\":\"65f49582-c9fa-4c67-a2bc-4e8fa73ca731\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Perlman\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:26.984083\",\"folder\":null,\"id\":\"9ae57fe2-c677-47fa-a059-7d3d915a1178\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Cori\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:52.377359\",\"folder\":null,\"id\":\"2920dde2-5c24-4fe0-9c06-ef86b5a16a99\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"}]" + "text": "[{\"name\":\"Awesome Euclid\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-m2yFu\",\"type\":\"genericNode\",\"position\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"transcription\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"create an image prompt based on the song's lyrics to be used as the album cover of this song:\\n\\nlyrics:\\n{transcription}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"transcription\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"transcription\",\"display_name\":\"transcription\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"transcription\"],\"template\":[\"transcription\",\"question\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-m2yFu\"},\"selected\":false,\"positionAbsolute\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-urapv\",\"type\":\"genericNode\",\"position\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-urapv\"},\"selected\":false,\"positionAbsolute\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"dragging\":false},{\"width\":384,\"height\":806,\"id\":\"CustomComponent-IEIUl\",\"type\":\"genericNode\",\"position\":{\"x\":2364.865919667005,\"y\":88.43094097025096},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom platformdirs import user_cache_dir\\nimport base64\\nfrom PIL import Image\\nfrom io import BytesIO\\nfrom openai import OpenAI\\nfrom pathlib import Path\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Image generator\\\"\\n description: str = \\\"generate images using Dall-E\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\",\\\"input_types\\\":[\\\"str\\\"]},\\n \\\"api_key\\\":{\\\"display_name\\\":\\\"OpenAI API key\\\",\\\"password\\\":True},\\n \\\"model\\\":{\\\"display_name\\\":\\\"Model name\\\",\\\"advanced\\\":True,\\\"options\\\":[\\\"dall-e-2\\\",\\\"dall-e-3\\\"], \\\"value\\\":\\\"dall-e-3\\\"},\\n \\\"file_name\\\":{\\\"display_name\\\":\\\"File Name\\\"},\\n \\\"output_format\\\":{\\\"display_name\\\":\\\"Output format\\\",\\\"options\\\":[\\\"jpeg\\\",\\\"png\\\"],\\\"value\\\":\\\"jpeg\\\"},\\n \\\"width\\\":{\\\"display_name\\\":\\\"Width\\\" ,\\\"value\\\":1024},\\n \\\"height\\\":{\\\"display_name\\\":\\\"Height\\\", \\\"value\\\":1024}\\n }\\n\\n def build(self, prompt:str,api_key:str,model:str,file_name:str,output_format:str,width:int,height:int):\\n client = OpenAI(api_key=api_key)\\n cache_dir = Path(user_cache_dir(\\\"langflow\\\"))\\n images_dir = cache_dir / \\\"images\\\"\\n images_dir.mkdir(parents=True, exist_ok=True)\\n image_path = images_dir / f\\\"{file_name}.{output_format}\\\"\\n response = client.images.generate(\\n model=model,\\n prompt=prompt,\\n size=f\\\"{height}x{width}\\\",\\n response_format=\\\"b64_json\\\",\\n n=1,\\n )\\n # Decode base64-encoded image string\\n binary_data = base64.b64decode(response.data[0].b64_json)\\n # Create PIL Image object from binary image data\\n image_pil = Image.open(BytesIO(binary_data))\\n image_pil.save(image_path, format=output_format.upper())\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"api_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"api_key\",\"display_name\":\"OpenAI API key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"file_name\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"file_name\",\"display_name\":\"File Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"album\"},\"height\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"height\",\"display_name\":\"Height\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"dall-e-3\",\"password\":false,\"options\":[\"dall-e-2\",\"dall-e-3\"],\"name\":\"model\",\"display_name\":\"Model name\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"output_format\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"jpeg\",\"password\":false,\"options\":[\"jpeg\",\"png\"],\"name\":\"output_format\",\"display_name\":\"Output format\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"width\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"width\",\"display_name\":\"Width\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false}},\"description\":\"generate images using Dall-E\",\"base_classes\":[\"Data\"],\"display_name\":\"Image generator\",\"custom_fields\":{\"api_key\":null,\"file_name\":null,\"height\":null,\"model\":null,\"output_format\":null,\"prompt\":null,\"width\":null},\"output_types\":[\"Data\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-IEIUl\"},\"selected\":false,\"positionAbsolute\":{\"x\":2364.865919667005,\"y\":88.43094097025096}},{\"width\":384,\"height\":338,\"id\":\"LLMChain-KlJb3\",\"type\":\"genericNode\",\"position\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-KlJb3\"},\"selected\":false,\"positionAbsolute\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-bCuc0\",\"type\":\"genericNode\",\"position\":{\"x\":1747.8107777342625,\"y\":319.13729017446667},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Chain) -> str:\\n result = param.run({})\\n self.status = result\\n return result\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Chain\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"str\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-bCuc0\"},\"selected\":false,\"positionAbsolute\":{\"x\":1747.8107777342625,\"y\":319.13729017446667}}],\"edges\":[{\"source\":\"LLMChain-KlJb3\",\"target\":\"CustomComponent-bCuc0\",\"sourceHandle\":\"{œbaseClassesœ:[œChainœ,œCallableœ],œdataTypeœ:œLLMChainœ,œidœ:œLLMChain-KlJb3œ}\",\"targetHandle\":\"{œfieldNameœ:œparamœ,œidœ:œCustomComponent-bCuc0œ,œinputTypesœ:null,œtypeœ:œChainœ}\",\"id\":\"reactflow__edge-LLMChain-KlJb3{œbaseClassesœ:[œChainœ,œCallableœ],œdataTypeœ:œLLMChainœ,œidœ:œLLMChain-KlJb3œ}-CustomComponent-bCuc0{œfieldNameœ:œparamœ,œidœ:œCustomComponent-bCuc0œ,œinputTypesœ:null,œtypeœ:œChainœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"param\",\"id\":\"CustomComponent-bCuc0\",\"inputTypes\":null,\"type\":\"Chain\"},\"sourceHandle\":{\"baseClasses\":[\"Chain\",\"Callable\"],\"dataType\":\"LLMChain\",\"id\":\"LLMChain-KlJb3\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"ChatOpenAI-urapv\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-urapvœ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-urapv{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-urapvœ}-LLMChain-KlJb3{œfieldNameœ:œllmœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-urapv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-m2yFu\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{œbaseClassesœ:[œPromptTemplateœ,œStringPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-m2yFuœ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"id\":\"reactflow__edge-PromptTemplate-m2yFu{œbaseClassesœ:[œPromptTemplateœ,œStringPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-m2yFuœ}-LLMChain-KlJb3{œfieldNameœ:œpromptœ,œidœ:œLLMChain-KlJb3œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-m2yFu\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-bCuc0\",\"target\":\"CustomComponent-IEIUl\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-bCuc0œ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œCustomComponent-IEIUlœ,œinputTypesœ:[œstrœ],œtypeœ:œstrœ}\",\"id\":\"reactflow__edge-CustomComponent-bCuc0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-bCuc0œ}-CustomComponent-IEIUl{œfieldNameœ:œpromptœ,œidœ:œCustomComponent-IEIUlœ,œinputTypesœ:[œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"CustomComponent-IEIUl\",\"inputTypes\":[\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-bCuc0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":92.23454077990459,\"y\":183.8125619056221,\"zoom\":0.6070974421975234}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:33:18.503954\",\"folder\":null,\"id\":\"fe142ce5-32dc-4955-b186-672ced662f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Darwin\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"OpenAI-3ZVDh\",\"type\":\"genericNode\",\"position\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":256,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-davinci-003\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-3ZVDh\"},\"selected\":true,\"positionAbsolute\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-RFYXY\",\"type\":\"genericNode\",\"position\":{\"x\":586.672100458868,\"y\":10.967049167706678},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RFYXY\"},\"positionAbsolute\":{\"x\":586.672100458868,\"y\":10.967049167706678}},{\"width\":384,\"height\":242,\"id\":\"ChatPromptTemplate-ce1sg\",\"type\":\"genericNode\",\"position\":{\"x\":395.598984452791,\"y\":612.188491773035},\"data\":{\"type\":\"ChatPromptTemplate\",\"node\":{\"template\":{\"messages\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"messages\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseMessagePromptTemplate\",\"list\":true},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatPromptTemplate\"},\"description\":\"A prompt template for chat models.\",\"base_classes\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"display_name\":\"ChatPromptTemplate\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\",\"beta\":false,\"error\":null},\"id\":\"ChatPromptTemplate-ce1sg\"},\"selected\":false,\"positionAbsolute\":{\"x\":395.598984452791,\"y\":612.188491773035},\"dragging\":false}],\"edges\":[{\"source\":\"OpenAI-3ZVDh\",\"sourceHandle\":\"{œbaseClassesœ:[œOpenAIœ,œBaseLLMœ,œBaseOpenAIœ,œBaseLanguageModelœ],œdataTypeœ:œOpenAIœ,œidœ:œOpenAI-3ZVDhœ}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"dataType\":\"OpenAI\",\"id\":\"OpenAI-3ZVDh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAI-3ZVDh{œbaseClassesœ:[œOpenAIœ,œBaseLLMœ,œBaseOpenAIœ,œBaseLanguageModelœ],œdataTypeœ:œOpenAIœ,œidœ:œOpenAI-3ZVDhœ}-LLMChain-RFYXY{œfieldNameœ:œllmœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"ChatPromptTemplate-ce1sg\",\"sourceHandle\":\"{œbaseClassesœ:[œChatPromptTemplateœ,œBaseChatPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œChatPromptTemplateœ,œidœ:œChatPromptTemplate-ce1sgœ}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"ChatPromptTemplate\",\"id\":\"ChatPromptTemplate-ce1sg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatPromptTemplate-ce1sg{œbaseClassesœ:[œChatPromptTemplateœ,œBaseChatPromptTemplateœ,œBasePromptTemplateœ],œdataTypeœ:œChatPromptTemplateœ,œidœ:œChatPromptTemplate-ce1sgœ}-LLMChain-RFYXY{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RFYXYœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":8.832868402772647,\"y\":189.85443326477025,\"zoom\":0.6070974421975235}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:50:19.584160\",\"folder\":null,\"id\":\"103766f0-1f50-427a-9ba7-2ab73343c524\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Easley\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VPh47\",\"type\":\"genericNode\",\"position\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VPh47\"},\"selected\":false,\"positionAbsolute\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-NgFyo\",\"type\":\"genericNode\",\"position\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-NgFyo\"},\"selected\":false,\"positionAbsolute\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-oAFjh\",\"type\":\"genericNode\",\"position\":{\"x\":-342.62522294052764,\"y\":391.20629510686103},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"links\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Answer everything with links\\n{links}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"links\",\"display_name\":\"links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"links\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-oAFjh\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-342.62522294052764,\"y\":391.20629510686103}}],\"edges\":[{\"source\":\"ChatOpenAI-VPh47\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseChatModelœ,œChatOpenAIœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VPh47œ}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VPh47\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VPh47{œbaseClassesœ:[œBaseChatModelœ,œChatOpenAIœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VPh47œ}-LLMChain-NgFyo{œfieldNameœ:œllmœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"PromptTemplate-oAFjh\",\"sourceHandle\":\"{œbaseClassesœ:[œBasePromptTemplateœ,œStringPromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-oAFjhœ}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-oAFjh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-oAFjh{œbaseClassesœ:[œBasePromptTemplateœ,œStringPromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-oAFjhœ}-LLMChain-NgFyo{œfieldNameœ:œpromptœ,œidœ:œLLMChain-NgFyoœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":338.6546182690814,\"y\":53.026340800283265,\"zoom\":0.7169776240079143}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:53:25.148460\",\"folder\":null,\"id\":\"a794fc48-5e9b-42a3-924f-7fe610500035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"(D) Basic Chat (1) (4)\",\"description\":\"Simplest possible chat model\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-fBcfh\",\"type\":\"genericNode\",\"position\":{\"x\":228.87326389541306,\"y\":465.8628482073749},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false,\"value\":60},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\"},\"id\":\"ChatOpenAI-fBcfh\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":228.87326389541306,\"y\":465.8628482073749}},{\"width\":384,\"height\":310,\"id\":\"ConversationChain-bVNex\",\"type\":\"genericNode\",\"position\":{\"x\":806,\"y\":554},\"data\":{\"type\":\"ConversationChain\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"_type\":\"default\"},\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLMOutputParser\",\"list\":false},\"prompt\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"input_variables\":[\"history\",\"input\"],\"output_parser\":null,\"partial_variables\":{},\"template\":\"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\\n\\nCurrent conversation:\\n{history}\\nHuman: {input}\\nAI:\",\"template_format\":\"f-string\",\"validate_template\":true,\"_type\":\"prompt\"},\"password\":false,\"name\":\"prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"input\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"llm_kwargs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"response\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_final_only\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_final_only\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationChain\"},\"description\":\"Chain to have a conversation and load context from memory.\",\"base_classes\":[\"ConversationChain\",\"Chain\",\"LLMChain\",\"function\"],\"display_name\":\"ConversationChain\",\"documentation\":\"\"},\"id\":\"ConversationChain-bVNex\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":806,\"y\":554}}],\"edges\":[{\"source\":\"ChatOpenAI-fBcfh\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseChatModelœ,œBaseLanguageModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-fBcfhœ}\",\"target\":\"ConversationChain-bVNex\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œConversationChain-bVNexœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"className\":\"stroke-gray-900 stroke-connection\",\"id\":\"reactflow__edge-ChatOpenAI-fBcfh{œbaseClassesœ:[œBaseChatModelœ,œBaseLanguageModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-fBcfhœ}-ConversationChain-bVNex{œfieldNameœ:œllmœ,œidœ:œConversationChain-bVNexœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-fBcfh\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"ConversationChain-bVNex\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}},\"style\":{\"stroke\":\"#555\"},\"animated\":false}],\"viewport\":{\"x\":-118.21416568593895,\"y\":-240.64815770363373,\"zoom\":0.7642485855675408}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:57:55.879806\",\"folder\":null,\"id\":\"bddebeea-b80a-4b28-8895-c4425687dcce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Directory Loader\",\"description\":\"Generic File Loader\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import os\\n\\nfrom langchain.schema import Document\\nfrom langflow import CustomComponent\\nimport glob\\n\\nclass DirectoryLoaderComponent(CustomComponent):\\n display_name: str = \\\"Directory Loader\\\"\\n description: str = \\\"Generic File Loader\\\"\\n beta = True\\n loaders_info = [\\n {\\n \\\"loader\\\": \\\"AirbyteJSONLoader\\\",\\n \\\"name\\\": \\\"Airbyte JSON (.jsonl)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.AirbyteJSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"jsonl\\\"],\\n \\\"allowdTypes\\\": [\\\"jsonl\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"JSONLoader\\\",\\n \\\"name\\\": \\\"JSON (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.JSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"json\\\"],\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n \\\"kwargs\\\": {\\\"jq_schema\\\": \\\".\\\", \\\"text_content\\\": False}\\n },\\n {\\n \\\"loader\\\": \\\"BSHTMLLoader\\\",\\n \\\"name\\\": \\\"BeautifulSoup4 HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.BSHTMLLoader\\\",\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CSVLoader\\\",\\n \\\"name\\\": \\\"CSV (.csv)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CSVLoader\\\",\\n \\\"defaultFor\\\": [\\\"csv\\\"],\\n \\\"allowdTypes\\\": [\\\"csv\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CoNLLULoader\\\",\\n \\\"name\\\": \\\"CoNLL-U (.conllu)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CoNLLULoader\\\",\\n \\\"defaultFor\\\": [\\\"conllu\\\"],\\n \\\"allowdTypes\\\": [\\\"conllu\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"EverNoteLoader\\\",\\n \\\"name\\\": \\\"EverNote (.enex)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.EverNoteLoader\\\",\\n \\\"defaultFor\\\": [\\\"enex\\\"],\\n \\\"allowdTypes\\\": [\\\"enex\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"FacebookChatLoader\\\",\\n \\\"name\\\": \\\"Facebook Chat (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.FacebookChatLoader\\\",\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"OutlookMessageLoader\\\",\\n \\\"name\\\": \\\"Outlook Message (.msg)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.OutlookMessageLoader\\\",\\n \\\"defaultFor\\\": [\\\"msg\\\"],\\n \\\"allowdTypes\\\": [\\\"msg\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"PyPDFLoader\\\",\\n \\\"name\\\": \\\"PyPDF (.pdf)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.PyPDFLoader\\\",\\n \\\"defaultFor\\\": [\\\"pdf\\\"],\\n \\\"allowdTypes\\\": [\\\"pdf\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"STRLoader\\\",\\n \\\"name\\\": \\\"Subtitle (.str)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.STRLoader\\\",\\n \\\"defaultFor\\\": [\\\"str\\\"],\\n \\\"allowdTypes\\\": [\\\"str\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"TextLoader\\\",\\n \\\"name\\\": \\\"Text (.txt)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.TextLoader\\\",\\n \\\"defaultFor\\\": [\\\"txt\\\"],\\n \\\"allowdTypes\\\": [\\\"txt\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredEmailLoader\\\",\\n \\\"name\\\": \\\"Unstructured Email (.eml)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredEmailLoader\\\",\\n \\\"defaultFor\\\": [\\\"eml\\\"],\\n \\\"allowdTypes\\\": [\\\"eml\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredHTMLLoader\\\",\\n \\\"name\\\": \\\"Unstructured HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredHTMLLoader\\\",\\n \\\"defaultFor\\\": [\\\"html\\\", \\\"htm\\\"],\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredMarkdownLoader\\\",\\n \\\"name\\\": \\\"Unstructured Markdown (.md)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredMarkdownLoader\\\",\\n \\\"defaultFor\\\": [\\\"md\\\"],\\n \\\"allowdTypes\\\": [\\\"md\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredPowerPointLoader\\\",\\n \\\"name\\\": \\\"Unstructured PowerPoint (.pptx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredPowerPointLoader\\\",\\n \\\"defaultFor\\\": [\\\"pptx\\\"],\\n \\\"allowdTypes\\\": [\\\"pptx\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredWordLoader\\\",\\n \\\"name\\\": \\\"Unstructured Word (.docx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredWordLoader\\\",\\n \\\"defaultFor\\\": [\\\"docx\\\"],\\n \\\"allowdTypes\\\": [\\\"docx\\\"],\\n },\\n]\\n\\n\\n def build_config(self):\\n loader_options = [\\\"Automatic\\\"] + [\\n loader_info[\\\"name\\\"] for loader_info in self.loaders_info\\n ]\\n\\n file_types = []\\n suffixes = []\\n\\n for loader_info in self.loaders_info:\\n if \\\"allowedTypes\\\" in loader_info:\\n file_types.extend(loader_info[\\\"allowedTypes\\\"])\\n suffixes.extend([f\\\".{ext}\\\" for ext in loader_info[\\\"allowedTypes\\\"]])\\n\\n return {\\n \\\"directory_path\\\": {\\n \\\"display_name\\\": \\\"Directory Path\\\",\\n \\\"required\\\": True,\\n },\\n \\\"loader\\\": {\\n \\\"display_name\\\": \\\"Loader\\\",\\n \\\"is_list\\\": True,\\n \\\"required\\\": True,\\n \\\"options\\\": loader_options,\\n \\\"value\\\": \\\"Automatic\\\",\\n },\\n }\\n\\n def build(self, directory_path: str, loader: str) -> Document:\\n # Verifique se o diretório existe\\n if not os.path.exists(directory_path):\\n raise ValueError(f\\\"Directory not found: {directory_path}\\\")\\n\\n files = glob.glob(directory_path + \\\"/*.*\\\")\\n\\n\\n loader_info = None\\n if loader == \\\"Automatic\\\":\\n for file in files:\\n file_type = file.split(\\\".\\\")[-1]\\n\\n\\n for info in self.loaders_info:\\n if \\\"defaultFor\\\" in info:\\n if file_type in info[\\\"defaultFor\\\"]:\\n loader_info = info\\n break\\n if loader_info:\\n break\\n\\n if not loader_info:\\n raise ValueError(\\n \\\"No default loader found for any file in the directory\\\"\\n )\\n\\n else:\\n for info in self.loaders_info:\\n if info[\\\"name\\\"] == loader:\\n loader_info = info\\n break\\n\\n if not loader_info:\\n raise ValueError(f\\\"Loader {loader} not found in the loader info list\\\")\\n\\n loader_import = loader_info[\\\"import\\\"]\\n module_name, class_name = loader_import.rsplit(\\\".\\\", 1)\\n\\n try:\\n # Importe o loader dinamicamente\\n loader_module = __import__(module_name, fromlist=[class_name])\\n loader_instance = getattr(loader_module, class_name)\\n except ImportError as e:\\n raise ValueError(\\n f\\\"Loader {loader} could not be imported\\\\nLoader info:\\\\n{loader_info}\\\"\\n ) from e\\n\\n results = []\\n for file in files:\\n file_path = os.path.join(directory_path, file)\\n kwargs = loader_info.get(\\\"kwargs\\\", {})\\n result = loader_instance(file_path=file_path, **kwargs).load()\\n results.append(result)\\n self.status = results\\n return results\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"directory_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"directory_path\",\"display_name\":\"Directory Path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"/Users/ogabrielluiz/Projects/langflow2/docs\"},\"loader\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"Automatic\",\"password\":false,\"options\":[\"Automatic\",\"Airbyte JSON (.jsonl)\",\"JSON (.json)\",\"BeautifulSoup4 HTML (.html, .htm)\",\"CSV (.csv)\",\"CoNLL-U (.conllu)\",\"EverNote (.enex)\",\"Facebook Chat (.json)\",\"Outlook Message (.msg)\",\"PyPDF (.pdf)\",\"Subtitle (.str)\",\"Text (.txt)\",\"Unstructured Email (.eml)\",\"Unstructured HTML (.html, .htm)\",\"Unstructured Markdown (.md)\",\"Unstructured PowerPoint (.pptx)\",\"Unstructured Word (.docx)\"],\"name\":\"loader\",\"display_name\":\"Loader\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true}},\"description\":\"Generic File Loader\",\"base_classes\":[\"Document\"],\"display_name\":\"Directory Loader\",\"custom_fields\":{\"directory_path\":null,\"loader\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Ip6tG\"},\"id\":\"CustomComponent-Ip6tG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:38.570303\",\"folder\":null,\"id\":\"5fe4debc-b6a7-45d4-a694-c02d8aa93b08\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Whisper Transcriber\",\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import Optional, List, Dict, Union\\nfrom langflow.field_typing import (\\n AgentExecutor,\\n BaseChatMemory,\\n BaseLanguageModel,\\n BaseLLM,\\n BaseLoader,\\n BaseMemory,\\n BaseOutputParser,\\n BasePromptTemplate,\\n BaseRetriever,\\n Callable,\\n Chain,\\n ChatPromptTemplate,\\n Data,\\n Document,\\n Embeddings,\\n NestedDict,\\n Object,\\n PromptTemplate,\\n TextSplitter,\\n Tool,\\n VectorStore,\\n)\\n\\nfrom openai import OpenAI\\nclass Component(CustomComponent):\\n display_name: str = \\\"Whisper Transcriber\\\"\\n description: str = \\\"Converts audio to text using OpenAI's Whisper.\\\"\\n\\n def build_config(self):\\n return {\\\"audio\\\":{\\\"field_type\\\":\\\"file\\\",\\\"suffixes\\\":[\\\".mp3\\\", \\\".mp4\\\", \\\".m4a\\\"]},\\\"OpenAIKey\\\":{\\\"field_type\\\":\\\"str\\\",\\\"password\\\":True}}\\n\\n def build(self, audio:str, OpenAIKey:str) -> str:\\n \\n # TODO: if output path, persist & load it instead\\n \\n client = OpenAI(api_key=OpenAIKey)\\n \\n audio_file= open(audio, \\\"rb\\\")\\n transcript = client.audio.transcriptions.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file,\\n response_format=\\\"text\\\"\\n )\\n \\n \\n self.status = transcript\\n return transcript\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"OpenAIKey\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"OpenAIKey\",\"display_name\":\"OpenAIKey\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"audio\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"suffixes\":[\".mp3\",\".mp4\",\".m4a\"],\"password\":false,\"name\":\"audio\",\"display_name\":\"audio\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"file_path\":\"/Users/rodrigonader/Library/Caches/langflow/19b3e1c9-90bf-405f-898a-e982f47adf76/a3308ce7e9b10088fcd985aabb6d17b012c6b6e81ff8806356574474c9d10229.m4a\",\"value\":\"Audio Recording 2023-11-29 at 12.12.04.m4a\"}},\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"base_classes\":[\"str\"],\"display_name\":\"Whisper Transcriber\",\"custom_fields\":{\"OpenAIKey\":null,\"audio\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-GJRrs\"},\"id\":\"CustomComponent-GJRrs\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:39.710502\",\"folder\":null,\"id\":\"bd9e911d-46bd-429f-aa75-dd740430695e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Youtube Conversation\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":589,\"id\":\"CustomComponent-h0NSI\",\"type\":\"genericNode\",\"position\":{\"x\":714.9531293402755,\"y\":0.4994374160582993},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import requests\\nfrom langflow import CustomComponent\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.schema import Document\\nfrom langchain.document_loaders import YoutubeLoader\\n\\n# Example usage:\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"YouTube Transcript\\\"\\n description: str = \\\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\\\"\\n\\n def build_config(self):\\n return {\\\"url\\\": {\\\"multiline\\\": True, \\\"required\\\": True}}\\n\\n def build(self, url: str, llm: BaseLLM, dependencies: Document, language: str = \\\"en\\\") -> Document:\\n dependencies\\n response = requests.get(url)\\n loader = YoutubeLoader.from_youtube_url(url, add_video_info=True, language=[language])\\n result = loader.load()\\n self.repr_value = str(result)\\n return result\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"dependencies\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"dependencies\",\"display_name\":\"dependencies\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":false},\"language\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"en\",\"password\":false,\"name\":\"language\",\"display_name\":\"language\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\",\"base_classes\":[\"Document\"],\"display_name\":\"YouTube Transcript\",\"custom_fields\":{\"dependencies\":null,\"language\":null,\"llm\":null,\"url\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-h0NSI\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":714.9531293402755,\"y\":0.4994374160582993}},{\"width\":384,\"height\":629,\"id\":\"ChatOpenAI-q61Y2\",\"type\":\"genericNode\",\"position\":{\"x\":18,\"y\":625.5521045590924},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo-16k\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-q61Y2\"},\"selected\":false,\"positionAbsolute\":{\"x\":18,\"y\":625.5521045590924},\"dragging\":false},{\"width\":384,\"height\":539,\"id\":\"Chroma-gVhy7\",\"type\":\"genericNode\",\"position\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"data\":{\"type\":\"Chroma\",\"node\":{\"template\":{\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.Client\",\"list\":false},\"client_settings\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client_settings\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.config.Setting\",\"list\":true},\"documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":true},\"embedding\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"embedding\",\"display_name\":\"Embedding\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Embeddings\",\"list\":false},\"chroma_server_cors_allow_origins\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_cors_allow_origins\",\"display_name\":\"Chroma Server CORS Allow Origins\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"chroma_server_grpc_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_grpc_port\",\"display_name\":\"Chroma Server GRPC Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_host\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_host\",\"display_name\":\"Chroma Server Host\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_http_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_http_port\",\"display_name\":\"Chroma Server HTTP Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_ssl_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"chroma_server_ssl_enabled\",\"display_name\":\"Chroma Server SSL Enabled\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"collection_metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"collection_metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"collection_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"collection_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"ids\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"ids\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"metadatas\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadatas\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":true},\"persist\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"persist\",\"display_name\":\"Persist\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"persist_directory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"persist_directory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"search_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"{}\",\"password\":false,\"name\":\"search_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"NestedDict\",\"list\":false},\"_type\":\"Chroma\"},\"description\":\"Create a Chroma vectorstore from a raw documents.\",\"base_classes\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Chroma\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/chroma\",\"beta\":false,\"error\":null},\"id\":\"Chroma-gVhy7\"},\"selected\":false,\"positionAbsolute\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"dragging\":false},{\"width\":384,\"height\":501,\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"type\":\"genericNode\",\"position\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"data\":{\"type\":\"RecursiveCharacterTextSplitter\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\nfrom langflow import CustomComponent\\nfrom langchain.schema import Document\\nfrom langflow.utils.util import build_loader_repr_from_documents\\n\\n\\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\\n display_name: str = \\\"Recursive Character Text Splitter\\\"\\n description: str = \\\"Split text into chunks of a specified length.\\\"\\n documentation: str = \\\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\\\"\\n\\n def build_config(self):\\n return {\\n \\\"documents\\\": {\\n \\\"display_name\\\": \\\"Documents\\\",\\n \\\"info\\\": \\\"The documents to split.\\\",\\n },\\n \\\"separators\\\": {\\n \\\"display_name\\\": \\\"Separators\\\",\\n \\\"info\\\": 'The characters to split on.\\\\nIf left empty defaults to [\\\"\\\\\\\\n\\\\\\\\n\\\", \\\"\\\\\\\\n\\\", \\\" \\\", \\\"\\\"].',\\n \\\"is_list\\\": True,\\n },\\n \\\"chunk_size\\\": {\\n \\\"display_name\\\": \\\"Chunk Size\\\",\\n \\\"info\\\": \\\"The maximum length of each chunk.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 1000,\\n },\\n \\\"chunk_overlap\\\": {\\n \\\"display_name\\\": \\\"Chunk Overlap\\\",\\n \\\"info\\\": \\\"The amount of overlap between chunks.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 200,\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n documents: list[Document],\\n separators: Optional[list[str]] = None,\\n chunk_size: Optional[int] = 1000,\\n chunk_overlap: Optional[int] = 200,\\n ) -> list[Document]:\\n \\\"\\\"\\\"\\n Split text into chunks of a specified length.\\n\\n Args:\\n separators (list[str]): The characters to split on.\\n chunk_size (int): The maximum length of each chunk.\\n chunk_overlap (int): The amount of overlap between chunks.\\n length_function (function): The function to use to calculate the length of the text.\\n\\n Returns:\\n list[str]: The chunks of text.\\n \\\"\\\"\\\"\\n from langchain.text_splitter import RecursiveCharacterTextSplitter\\n\\n if separators == \\\"\\\":\\n separators = None\\n elif separators:\\n # check if the separators list has escaped characters\\n # if there are escaped characters, unescape them\\n separators = [x.encode().decode(\\\"unicode-escape\\\") for x in separators]\\n\\n # Make sure chunk_size and chunk_overlap are ints\\n if isinstance(chunk_size, str):\\n chunk_size = int(chunk_size)\\n if isinstance(chunk_overlap, str):\\n chunk_overlap = int(chunk_overlap)\\n splitter = RecursiveCharacterTextSplitter(\\n separators=separators,\\n chunk_size=chunk_size,\\n chunk_overlap=chunk_overlap,\\n )\\n\\n docs = splitter.split_documents(documents)\\n self.repr_value = build_loader_repr_from_documents(docs)\\n return docs\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"chunk_overlap\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"50\",\"password\":false,\"name\":\"chunk_overlap\",\"display_name\":\"Chunk Overlap\",\"advanced\":false,\"dynamic\":false,\"info\":\"The amount of overlap between chunks.\",\"type\":\"int\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"400\",\"password\":false,\"name\":\"chunk_size\",\"display_name\":\"Chunk Size\",\"advanced\":false,\"dynamic\":false,\"info\":\"The maximum length of each chunk.\",\"type\":\"int\",\"list\":false},\"documents\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"The documents to split.\",\"type\":\"Document\",\"list\":true},\"separators\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"separators\",\"display_name\":\"Separators\",\"advanced\":false,\"dynamic\":false,\"info\":\"The characters to split on.\\nIf left empty defaults to [\\\"\\\\n\\\\n\\\", \\\"\\\\n\\\", \\\" \\\", \\\"\\\"].\",\"type\":\"str\",\"list\":true,\"value\":[\" \"]}},\"description\":\"Split text into chunks of a specified length.\",\"base_classes\":[\"Document\"],\"display_name\":\"Recursive Character Text Splitter\",\"custom_fields\":{\"chunk_overlap\":null,\"chunk_size\":null,\"documents\":null,\"separators\":null},\"output_types\":[\"RecursiveCharacterTextSplitter\"],\"documentation\":\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\",\"beta\":true,\"error\":null},\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"selected\":false,\"positionAbsolute\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"dragging\":false},{\"width\":384,\"height\":367,\"id\":\"OpenAIEmbeddings-cduOO\",\"type\":\"genericNode\",\"position\":{\"x\":1405.1176670984544,\"y\":1029.459061269321},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{'Authorization': 'Bearer '}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-cduOO\"},\"selected\":false,\"positionAbsolute\":{\"x\":1405.1176670984544,\"y\":1029.459061269321}},{\"width\":384,\"height\":339,\"id\":\"RetrievalQA-4PmTB\",\"type\":\"genericNode\",\"position\":{\"x\":2711.7786966415715,\"y\":709.4450828605463},\"data\":{\"type\":\"RetrievalQA\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"combine_documents_chain\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"combine_documents_chain\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseCombineDocumentsChain\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"retriever\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"retriever\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseRetriever\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"query\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"result\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_source_documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_source_documents\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"RetrievalQA\"},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\",\"beta\":false,\"error\":null},\"id\":\"RetrievalQA-4PmTB\"},\"selected\":false,\"positionAbsolute\":{\"x\":2711.7786966415715,\"y\":709.4450828605463}},{\"width\":384,\"height\":333,\"id\":\"CombineDocsChain-yk0JF\",\"type\":\"genericNode\",\"position\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"data\":{\"type\":\"CombineDocsChain\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"chain_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"stuff\",\"password\":false,\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"name\":\"chain_type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"_type\":\"load_qa_chain\"},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"\",\"beta\":false,\"error\":null},\"id\":\"CombineDocsChain-yk0JF\"},\"selected\":false,\"positionAbsolute\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"dragging\":false},{\"width\":384,\"height\":417,\"id\":\"CustomComponent-y6Wg0\",\"type\":\"genericNode\",\"position\":{\"x\":39.400034102832365,\"y\":-499.03551482195707},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nimport subprocess\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\nfrom typing import List\\n\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"PIP Install\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n\\n def build(self, libs: List[str]) -> Document:\\n def install_package(package_name):\\n subprocess.check_call([\\\"pip\\\", \\\"install\\\", package_name])\\n for lib in libs:\\n install_package(lib)\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"libs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"libs\",\"display_name\":\"libs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"requests\",\"pytube\"]}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Document\"],\"display_name\":\"PIP Install\",\"custom_fields\":{\"libs\":null},\"output_types\":[],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-y6Wg0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":39.400034102832365,\"y\":-499.03551482195707}}],\"edges\":[{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œBaseLLMœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}-CustomComponent-h0NSI{œfieldNameœ:œllmœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œBaseLLMœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"BaseLLM\"}}},{\"source\":\"CustomComponent-y6Wg0\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-y6Wg0œ}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{œfieldNameœ:œdependenciesœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-y6Wg0{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-y6Wg0œ}-CustomComponent-h0NSI{œfieldNameœ:œdependenciesœ,œidœ:œCustomComponent-h0NSIœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-y6Wg0\"},\"targetHandle\":{\"fieldName\":\"dependencies\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"CustomComponent-h0NSI\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-h0NSIœ}\",\"target\":\"RecursiveCharacterTextSplitter-1eaOX\",\"targetHandle\":\"{œfieldNameœ:œdocumentsœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-h0NSI{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-h0NSIœ}-RecursiveCharacterTextSplitter-1eaOX{œfieldNameœ:œdocumentsœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-h0NSI\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"inputTypes\":null,\"type\":\"Document\"}},\"selected\":false},{\"source\":\"OpenAIEmbeddings-cduOO\",\"sourceHandle\":\"{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-cduOOœ}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{œfieldNameœ:œembeddingœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAIEmbeddings-cduOO{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-cduOOœ}-Chroma-gVhy7{œfieldNameœ:œembeddingœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"dataType\":\"OpenAIEmbeddings\",\"id\":\"OpenAIEmbeddings-cduOO\"},\"targetHandle\":{\"fieldName\":\"embedding\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Embeddings\"}}},{\"source\":\"RecursiveCharacterTextSplitter-1eaOX\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{œfieldNameœ:œdocumentsœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-RecursiveCharacterTextSplitter-1eaOX{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-1eaOXœ}-Chroma-gVhy7{œfieldNameœ:œdocumentsœ,œidœ:œChroma-gVhy7œ,œinputTypesœ:null,œtypeœ:œDocumentœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"RecursiveCharacterTextSplitter\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}\",\"target\":\"CombineDocsChain-yk0JF\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-yk0JFœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{œbaseClassesœ:[œChatOpenAIœ,œBaseChatModelœ,œBaseLanguageModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-q61Y2œ}-CombineDocsChain-yk0JF{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-yk0JFœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CombineDocsChain-yk0JF\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}}},{\"source\":\"CombineDocsChain-yk0JF\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œfunctionœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-yk0JFœ}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CombineDocsChain-yk0JF{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œfunctionœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-yk0JFœ}-RetrievalQA-4PmTB{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseCombineDocumentsChain\",\"function\"],\"dataType\":\"CombineDocsChain\",\"id\":\"CombineDocsChain-yk0JF\"},\"targetHandle\":{\"fieldName\":\"combine_documents_chain\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseCombineDocumentsChain\"}}},{\"source\":\"Chroma-gVhy7\",\"sourceHandle\":\"{œbaseClassesœ:[œVectorStoreœ,œChromaœ,œBaseRetrieverœ,œVectorStoreRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-gVhy7œ}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-Chroma-gVhy7{œbaseClassesœ:[œVectorStoreœ,œChromaœ,œBaseRetrieverœ,œVectorStoreRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-gVhy7œ}-RetrievalQA-4PmTB{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-4PmTBœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"dataType\":\"Chroma\",\"id\":\"Chroma-gVhy7\"},\"targetHandle\":{\"fieldName\":\"retriever\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseRetriever\"}}}],\"viewport\":{\"x\":189.54413265004274,\"y\":259.89949657174975,\"zoom\":0.291027508374689}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:59:08.830269\",\"folder\":null,\"id\":\"bc7eb94b-6fc6-49cb-9b19-35347ba51afa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Web Scraper - Content & Links\",\"description\":\"Fetch and parse text and links from a given URL.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-H7PBy\",\"type\":\"genericNode\",\"position\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-H7PBy\"},\"selected\":false,\"positionAbsolute\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VSAdc\",\"type\":\"genericNode\",\"position\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VSAdc\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859}},{\"width\":384,\"height\":374,\"data\":{\"id\":\"GroupNode-WXPMk\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"give me links\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-f6nOg{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-0XtUN{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}-CustomComponent-ODIcp{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-CustomComponent-FGzJJ{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-PromptTemplate-H9Udy{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}-CustomComponent-whsQ5{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"id\":\"GroupNode-WXPMk\",\"position\":{\"x\":873.0737834322758,\"y\":598.8401015776466},\"type\":\"genericNode\",\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":873.0737834322758,\"y\":598.8401015776466}}],\"edges\":[{\"source\":\"ChatOpenAI-VSAdc\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VSAdcœ}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VSAdc\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VSAdc{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-VSAdcœ}-LLMChain-H7PBy{œfieldNameœ:œllmœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\"},{\"source\":\"GroupNode-WXPMk\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œGroupNode-WXPMkœ}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"GroupNode-WXPMk\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-GroupNode-WXPMk{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œGroupNode-WXPMkœ}-LLMChain-H7PBy{œfieldNameœ:œpromptœ,œidœ:œLLMChain-H7PByœ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":-348.6161822813733,\"y\":121.40545291211492,\"zoom\":0.6801854262029781}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:22:27.784647\",\"folder\":null,\"id\":\"efc3bf27-3cf1-4561-9a83-3df347572440\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Joliot\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-RQsU1\",\"type\":\"genericNode\",\"position\":{\"x\":514.4440482813261,\"y\":528.164086188516},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RQsU1\"},\"selected\":false,\"positionAbsolute\":{\"x\":514.4440482813261,\"y\":528.164086188516}},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-NTTcv\",\"type\":\"genericNode\",\"position\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-NTTcv\"},\"selected\":false,\"positionAbsolute\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055}},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-VELMV\",\"type\":\"genericNode\",\"position\":{\"x\":-222,\"y\":682.560723386973},\"data\":{\"id\":\"PromptTemplate-VELMV\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-f6nOg{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-f6nOgœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-FGzJJœ}-CustomComponent-0XtUN{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-0XtUNœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-0XtUNœ}-CustomComponent-ODIcp{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-ODIcpœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-CustomComponent-FGzJJ{œfieldNameœ:œurlœ,œidœ:œCustomComponent-FGzJJœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-OACE0œ}-PromptTemplate-H9Udy{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ODIcpœ}-CustomComponent-whsQ5{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-whsQ5œ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-whsQ5œ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-f6nOgœ}-PromptTemplate-H9Udy{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-H9Udyœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"selected\":false,\"positionAbsolute\":{\"x\":-222,\"y\":682.560723386973}}],\"edges\":[{\"source\":\"ChatOpenAI-NTTcv\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-NTTcvœ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-NTTcv{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-NTTcvœ}-LLMChain-RQsU1{œfieldNameœ:œllmœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-NTTcv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-VELMV\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-VELMVœ}\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"id\":\"reactflow__edge-PromptTemplate-VELMV{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-VELMVœ}-LLMChain-RQsU1{œfieldNameœ:œpromptœ,œidœ:œLLMChain-RQsU1œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-VELMV\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":298.29888454238517,\"y\":96.95765543775741,\"zoom\":0.5140569133280332}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:23:08.584967\",\"folder\":null,\"id\":\"5df79f1d-f592-4d59-8c0f-9f3c2f6465b1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Pasteur\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-cHel8\",\"type\":\"genericNode\",\"position\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-cHel8\"},\"selected\":false,\"positionAbsolute\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-LA6y0\",\"type\":\"genericNode\",\"position\":{\"x\":-272.94405331278074,\"y\":-603.148171441675},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-LA6y0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-272.94405331278074,\"y\":-603.148171441675}},{\"width\":384,\"height\":404,\"id\":\"CustomComponent-ZNoRM\",\"type\":\"genericNode\",\"position\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ZNoRM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"CustomComponent-zNSTv\",\"type\":\"genericNode\",\"position\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-zNSTv\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-Ihm2o\",\"type\":\"genericNode\",\"position\":{\"x\":-554.9404152016002,\"y\":683.6763775860567},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-Ihm2o\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-554.9404152016002,\"y\":683.6763775860567}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-6ST9l\",\"type\":\"genericNode\",\"position\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-6ST9l\"},\"selected\":false,\"positionAbsolute\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"dragging\":false},{\"width\":384,\"height\":654,\"id\":\"PromptTemplate-l35W1\",\"type\":\"genericNode\",\"position\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"display_name\":\"output_parser\"},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"input_types\"},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"display_name\":\"input_variables\"},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"partial_variables\"},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"display_name\":\"template\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"display_name\":\"template_format\"},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"display_name\":\"validate_template\"},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-l35W1\"},\"selected\":false,\"positionAbsolute\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"dragging\":false},{\"width\":384,\"height\":346,\"id\":\"CustomComponent-iTLf4\",\"type\":\"genericNode\",\"position\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"https://paperswithcode.com/\"}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-iTLf4\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-jWLUz\",\"type\":\"genericNode\",\"position\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-jWLUz\"},\"selected\":false,\"positionAbsolute\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"dragging\":false}],\"edges\":[{\"source\":\"ChatOpenAI-LA6y0\",\"target\":\"LLMChain-cHel8\",\"sourceHandle\":\"{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-LA6y0œ}\",\"targetHandle\":\"{œfieldNameœ:œllmœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"id\":\"reactflow__edge-ChatOpenAI-LA6y0{œbaseClassesœ:[œBaseLanguageModelœ,œChatOpenAIœ,œBaseChatModelœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-LA6y0œ}-LLMChain-cHel8{œfieldNameœ:œllmœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-LA6y0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}\",\"target\":\"CustomComponent-ZNoRM\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-ZNoRMœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-ZNoRM\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}-CustomComponent-ZNoRM{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-ZNoRMœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}\",\"target\":\"CustomComponent-Ihm2o\",\"targetHandle\":\"{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-Ihm2oœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-Ihm2o\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-zNSTvœ}-CustomComponent-Ihm2o{œfieldNameœ:œhtml_contentœ,œidœ:œCustomComponent-Ihm2oœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-Ihm2o\",\"sourceHandle\":\"{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-Ihm2oœ}\",\"target\":\"CustomComponent-6ST9l\",\"targetHandle\":\"{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-6ST9lœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-6ST9l\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-Ihm2o\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-Ihm2o{œbaseClassesœ:[œDataœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-Ihm2oœ}-CustomComponent-6ST9l{œfieldNameœ:œsoupœ,œidœ:œCustomComponent-6ST9lœ,œinputTypesœ:null,œtypeœ:œDataœ}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}\",\"target\":\"CustomComponent-zNSTv\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œCustomComponent-zNSTvœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-zNSTv\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}-CustomComponent-zNSTv{œfieldNameœ:œurlœ,œidœ:œCustomComponent-zNSTvœ,œinputTypesœ:[œDataœ,œstrœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-iTLf4œ}-PromptTemplate-l35W1{œfieldNameœ:œurlœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-6ST9l\",\"sourceHandle\":\"{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-6ST9lœ}\",\"target\":\"CustomComponent-jWLUz\",\"targetHandle\":\"{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-jWLUzœ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-jWLUz\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-6ST9l\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-6ST9l{œbaseClassesœ:[œlistœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-6ST9lœ}-CustomComponent-jWLUz{œfieldNameœ:œitemsœ,œidœ:œCustomComponent-jWLUzœ,œinputTypesœ:null,œtypeœ:œlistœ}\",\"selected\":false},{\"source\":\"CustomComponent-jWLUz\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-jWLUzœ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-jWLUz\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-jWLUz{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-jWLUzœ}-PromptTemplate-l35W1{œfieldNameœ:œhtml_linksœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"CustomComponent-ZNoRM\",\"sourceHandle\":\"{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ZNoRMœ}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ZNoRM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ZNoRM{œbaseClassesœ:[œstrœ],œdataTypeœ:œCustomComponentœ,œidœ:œCustomComponent-ZNoRMœ}-PromptTemplate-l35W1{œfieldNameœ:œhtml_markdownœ,œidœ:œPromptTemplate-l35W1œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"selected\":false},{\"source\":\"PromptTemplate-l35W1\",\"sourceHandle\":\"{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-l35W1œ}\",\"target\":\"LLMChain-cHel8\",\"targetHandle\":\"{œfieldNameœ:œpromptœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-l35W1\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-mJqEg{œbaseClassesœ:[œStringPromptTemplateœ,œBasePromptTemplateœ,œPromptTemplateœ],œdataTypeœ:œPromptTemplateœ,œidœ:œPromptTemplate-mJqEgœ}-LLMChain-cHel8{œfieldNameœ:œpromptœ,œidœ:œLLMChain-cHel8œ,œinputTypesœ:null,œtypeœ:œBasePromptTemplateœ}\"}],\"viewport\":{\"x\":206.6159172940935,\"y\":79.94375811155385,\"zoom\":0.5140569133280333}},\"is_component\":false,\"updated_at\":\"2023-12-06T00:23:04.515144\",\"folder\":null,\"id\":\"ecfb377a-7e88-405d-8d66-7560735ce446\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Lovelace\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:43:25.925753\",\"folder\":null,\"id\":\"30e71767-6128-40e4-9a6d-b9197b679971\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Custom Component\",\"description\":\"Create any custom component you want!\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Data) -> Data:\\n return param\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Data\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"CustomComponent\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-IxJqc\"},\"id\":\"CustomComponent-IxJqc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-05T22:08:27.080204\",\"folder\":null,\"id\":\"f3c56abb-96d8-4a09-80d3-f60181661b3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Wilson\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-05T23:49:58.272677\",\"folder\":null,\"id\":\"324499a6-17a6-49de-96b1-b88955ed2c3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Kowalevski\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:27.084387\",\"folder\":null,\"id\":\"e3168485-d31b-472a-907f-faf833bf7824\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Fermi\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.134463\",\"folder\":null,\"id\":\"d0ecea5d-bcf9-4b8e-88f0-3c243d309336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Friendly Ardinghelli\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.138184\",\"folder\":null,\"id\":\"a406912d-b0e2-4954-bef3-ee80c29eca3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Easley\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162908\",\"folder\":null,\"id\":\"57b32155-4c6e-4823-ad03-8dd09d8abc62\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Varahamihira\",\"description\":\"Create, Chain, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.135644\",\"folder\":null,\"id\":\"18daa0ff-2e5d-457a-95d7-710affec5c4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Joliot\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.139496\",\"folder\":null,\"id\":\"9255e938-280e-4ce7-91cd-8622126a7d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Carroll\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162240\",\"folder\":null,\"id\":\"a7a680b9-30b1-4438-ac24-da597de443aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Herschel\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:46:02.593504\",\"folder\":null,\"id\":\"37a439b0-7b1d-45e3-b4fa-5c73669bae3b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Joliot\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:04.845238\",\"folder\":null,\"id\":\"4d23fd0a-8ad5-46b9-bb99-eed4138e7426\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Babbage\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:41.899665\",\"folder\":null,\"id\":\"1c8ad5b9-5524-41fe-a762-52c75126b832\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Brown\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.702031\",\"folder\":null,\"id\":\"9d4c8e79-4904-4a51-a4bb-146c3d8db10e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Mahavira\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.786331\",\"folder\":null,\"id\":\"4ba370d1-1f8e-4a23-99aa-99e2cd9b7cbf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Gates\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.838989\",\"folder\":null,\"id\":\"992c3cd3-1d79-4986-8c04-88a34130fa30\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Mcclintock\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.932723\",\"folder\":null,\"id\":\"a65bfd13-44df-4090-aca0-5057e21e9997\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Feynman\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.931359\",\"folder\":null,\"id\":\"7a05dac5-c005-411d-9994-19d61e71ce78\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Perlman\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.054687\",\"folder\":null,\"id\":\"6db24541-7211-48e6-a792-1a4a99a0ef90\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Colden\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.078384\",\"folder\":null,\"id\":\"13ac42e8-9124-4bf4-9ea2-28671ef2d9a4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kaku\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:50:33.156776\",\"folder\":null,\"id\":\"79262d75-5c62-4b14-b067-f4297f5c912f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:13.295375\",\"folder\":null,\"id\":\"3b397e74-d8be-4728-9d6c-05f7c78106a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Mccarthy\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:27.632685\",\"folder\":null,\"id\":\"13f4e1fd-45eb-4271-92fd-0d70a31c61d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Lalande\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:54.628983\",\"folder\":null,\"id\":\"9cfd60d8-9311-47b0-b71b-f488f1940bc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Mirzakhani\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:52:52.622698\",\"folder\":null,\"id\":\"0d849403-0f75-455d-b4e4-0d622ee3305a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Brown\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:06.056636\",\"folder\":null,\"id\":\"8643ba14-52d6-4d36-9981-5fd37de5dd76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Kickass Watt\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:23.338727\",\"folder\":null,\"id\":\"818d3066-bf08-4bf9-adcd-739f8abbfa5d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:41.218861\",\"folder\":null,\"id\":\"28eff43e-0ecf-47bf-9851-f1492589978e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Optimistic Jennings\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:03.681106\",\"folder\":null,\"id\":\"68f59069-bc2a-464f-a983-4b61e32e01af\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Mirzakhani\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:31.761949\",\"folder\":null,\"id\":\"5d981c0e-81b3-44cc-a5be-8f55b92bfed5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:56:45.548598\",\"folder\":null,\"id\":\"e812ad47-47e8-422b-b94c-84fd0263c9c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Fermat\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:58:50.234270\",\"folder\":null,\"id\":\"82aaf449-e737-4699-9360-929ab6108dc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Albattani\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:59:53.946035\",\"folder\":null,\"id\":\"097cb080-274b-40ca-8dde-7900a949568a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kirch\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:00:51.745350\",\"folder\":null,\"id\":\"837d7b5f-8495-46a9-b00e-ad1b7ebb52f4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Kowalevski\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:02:53.336102\",\"folder\":null,\"id\":\"3ff079c2-d9f9-4da6-a22a-423fa35670ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Stallman\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:28.268357\",\"folder\":null,\"id\":\"c8b204dd-3d57-4bc8-aa13-1d559672e75b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Swirles\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:51.194455\",\"folder\":null,\"id\":\"a097f083-5880-4cf7-986b-51898bc68e11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dreamy Williams\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:04:36.678251\",\"folder\":null,\"id\":\"d9585f63-ce76-42ce-87bc-8e69601ea5c6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Hawking\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:05:13.672479\",\"folder\":null,\"id\":\"612a01d5-8c8d-4cc1-8c54-35626b7f4a6d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Kilby\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:10:37.047955\",\"folder\":null,\"id\":\"2d05a598-3cdf-452a-bd5d-b0e569e562e3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Insane Cori\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:12.426578\",\"folder\":null,\"id\":\"d1769a4a-c1e9-4d74-9273-1e76cfcf21f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Compassionate Tesla\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:52.806238\",\"folder\":null,\"id\":\"28c5d9dd-0466-4c80-9e58-b1e061cd358d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Goldstine\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:21:44.488510\",\"folder\":null,\"id\":\"b3c57e4f-28a1-4580-bf08-a9484bdd66e8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elegant Curie\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:23:47.610237\",\"folder\":null,\"id\":\"28fb024e-6ba1-4f5b-83b3-4742b3b8117c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Chandrasekhar\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:24:29.824530\",\"folder\":null,\"id\":\"d2b87cf7-9167-4030-8e9f-b8d9aa0cadee\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Nobel\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:26:51.210699\",\"folder\":null,\"id\":\"c2c9fbac-7d97-40c2-8055-dff608df9414\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Edison\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:27:35.822482\",\"folder\":null,\"id\":\"a55561cd-4b25-473f-bde5-884cbabb0d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Lichterman\",\"description\":\"Building Linguistic Labyrinths.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:29:09.259381\",\"folder\":null,\"id\":\"9c6fe6d4-8311-4fc6-8b02-2a816d7c059d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Bhaskara\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:31:36.053452\",\"folder\":null,\"id\":\"ef6fc1ab-aff8-45a1-8cd5-bc8e38565e4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Watt\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:32:26.765250\",\"folder\":null,\"id\":\"499b5351-9c09-4934-9f9d-a24be2fd8b24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Wien\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:33:23.648859\",\"folder\":null,\"id\":\"a57eda91-7f6e-410d-9990-385fe0c724f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Spence\",\"description\":\"Mapping Meaningful Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:34:22.576407\",\"folder\":null,\"id\":\"685f685e-8a1b-4b7e-9e21-6cdd72163c91\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Fermat\",\"description\":\"Create, Connect, Converse.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:35:44.920540\",\"folder\":null,\"id\":\"3e061766-b834-4fa4-ba9c-b060925d9703\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Volta\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:36:33.001572\",\"folder\":null,\"id\":\"135f2fd9-e005-40bc-a9bf-c25107388415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:37:16.208823\",\"folder\":null,\"id\":\"167cdb24-7e1c-475b-893a-cca2f125426c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Sinoussi\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:38:07.215401\",\"folder\":null,\"id\":\"48113cab-2c04-493f-8c2e-c8d067826aa2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Sagan\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:39:19.479656\",\"folder\":null,\"id\":\"28d292dc-e094-4ffe-a657-178892933267\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Hoover\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:02.895859\",\"folder\":null,\"id\":\"0c9849b7-b2d6-4d0e-8334-abfb3ae183dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Mendeleev\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:27.867247\",\"folder\":null,\"id\":\"d78c52e9-1941-4555-9bb9-abd01f176705\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Dubinsky\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:41:23.177402\",\"folder\":null,\"id\":\"5277a04c-b5da-4597-aaa2-a6b66ea11d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Poitras\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:08.731865\",\"folder\":null,\"id\":\"b0d0c8de-4eea-484a-a068-b13e63f7e71c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Ptolemy\",\"description\":\"Crafting Conversations, One Node at a Time.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:25.658996\",\"folder\":null,\"id\":\"b6f155e2-03eb-4232-9bab-145463382fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Loving Cray\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:43:57.530112\",\"folder\":null,\"id\":\"b75c10ca-9ecb-432b-88ab-e1847e836e22\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Pasteur\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:44:58.979393\",\"folder\":null,\"id\":\"3710eccb-e7a7-41d5-9339-d9c301515d17\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Gates\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:45:42.744174\",\"folder\":null,\"id\":\"fdd2271e-92f6-4349-8c01-2ec0e9e73f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Determined Khorana\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:10.084684\",\"folder\":null,\"id\":\"88b49a97-0888-4fea-8d9b-6ac2cc6d158e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Booth\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:41.577750\",\"folder\":null,\"id\":\"629afe54-8796-45be-a570-e3ac79c60792\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Mendeleev\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:47:22.631243\",\"folder\":null,\"id\":\"7bf481b0-73fe-4f5b-a3d4-1263d9d8e827\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Clever Varahamihira\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:49:51.026960\",\"folder\":null,\"id\":\"df9e86b6-56c9-4848-9010-102615314766\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Stallman\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:50:14.932236\",\"folder\":null,\"id\":\"3e66994c-9b7a-4b85-a917-65d1959d7352\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Wozniak\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:51:13.811894\",\"folder\":null,\"id\":\"d10f924a-5780-4255-9f41-3e102ae03e84\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hopeful Mirzakhani\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:23.906908\",\"folder\":null,\"id\":\"f3378fa8-ccaf-4a3b-90d6-b8ab0c4e481f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Joule\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:43.863440\",\"folder\":null,\"id\":\"deaa50e7-a8b1-46b1-856c-334ee781e1c2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Shockley\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:53:43.299699\",\"folder\":null,\"id\":\"c72eac2c-d924-40c6-a102-da524216d090\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Dewey\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:54:18.848827\",\"folder\":null,\"id\":\"d9425324-bb60-462e-b431-90a536f2bc76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Joliot\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:12.348608\",\"folder\":null,\"id\":\"621ba134-3fac-487c-98cd-96941439f1be\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Backstabbing Franklin\",\"description\":\"Craft Language Connections Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.491824\",\"folder\":null,\"id\":\"86ca9773-c7b7-4a1a-859a-6cbe0ddff206\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Swartz\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.524414\",\"folder\":null,\"id\":\"da1c02b7-d608-4498-9946-7d02f55fa103\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Volta\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.641432\",\"folder\":null,\"id\":\"8d5dd998-6b51-4f65-8331-086a7f3b11d7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Lichterman\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746120\",\"folder\":null,\"id\":\"942027d3-e2ea-48c6-8279-0a41b54e8862\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Einstein\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746904\",\"folder\":null,\"id\":\"9e9b6298-1073-4297-8ecc-3c620b432e70\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Planck\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.747420\",\"folder\":null,\"id\":\"7cd60c83-b797-4e60-af6d-cbc540657943\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Zobell\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.749951\",\"folder\":null,\"id\":\"dab08306-9521-4e15-aa11-e6a6a4e210f8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Knuth\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:16.772119\",\"folder\":null,\"id\":\"c9149590-636a-44f5-aaae-45a4e78fe4df\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Wright\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:52.954568\",\"folder\":null,\"id\":\"6b23b2ad-c07c-46f6-b9ad-268783d1712e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Vibrant Lalande\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.656156\",\"folder\":null,\"id\":\"ece3bcf6-a147-4559-862e-cacff9db5f48\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Gauss\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.717991\",\"folder\":null,\"id\":\"252b6021-ecad-4eaf-9e2f-106c4c89c496\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gigantic Rosalind\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.736261\",\"folder\":null,\"id\":\"b8cb6d8d-c0fb-4e8d-a46e-2c608dc8a714\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Hubble\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.769546\",\"folder\":null,\"id\":\"553a67db-7225-474c-978e-8a40cde2bfb2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Mclean\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.981063\",\"folder\":null,\"id\":\"e0865007-4d80-4edf-87ab-9e8d2892d719\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Murdock\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.982286\",\"folder\":null,\"id\":\"1021cd20-66e0-4b81-9c79-bfe729774d20\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Riemann\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.983216\",\"folder\":null,\"id\":\"089074d3-8a1e-4d85-a59d-b4717090e4d3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Tesla\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:00:35.704142\",\"folder\":null,\"id\":\"beb49d88-255e-4db4-931b-4ab4358f1097\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Boyd\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:13.569507\",\"folder\":null,\"id\":\"75b5ab8d-e0c0-43cf-912b-8578550e198a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Babbage\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:27.944868\",\"folder\":null,\"id\":\"503edd55-8f70-43e5-87fb-2324eaf62336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Bose\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:02:40.122079\",\"folder\":null,\"id\":\"ae4f2992-1a23-4a43-bec6-68b823935762\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Coulomb\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.263237\",\"folder\":null,\"id\":\"a2a464db-b02a-4440-ad9e-7b552ee6c027\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Drunk Newton\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.883766\",\"folder\":null,\"id\":\"1a5d9af7-5a96-4035-a09c-e15741785828\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Pasteur\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.933083\",\"folder\":null,\"id\":\"04b94873-0828-41dc-a850-fd4132c9b9f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Spence\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.967685\",\"folder\":null,\"id\":\"47003dc2-7884-48a3-aa66-e4185079f4d9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Noyce\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.983198\",\"folder\":null,\"id\":\"13769cb4-2e15-4d54-a28a-c97dc15db58c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Edison\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.018879\",\"folder\":null,\"id\":\"453dacde-6b10-406b-a5b3-f90f44be6899\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Snyder\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.205689\",\"folder\":null,\"id\":\"9544fac9-3002-47aa-86b9-102844fe9649\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khorana\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.243434\",\"folder\":null,\"id\":\"90498ef6-34f9-45c8-8cd0-fe6a36a26f41\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Albattani\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:05:07.775497\",\"folder\":null,\"id\":\"9577c416-8ce8-48f6-ad6d-ab2e003bb415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Charming Goodall\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:07:52.139318\",\"folder\":null,\"id\":\"f10dc08e-b9c7-44b3-8837-b95aee2f6dbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Ramanujan\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:08:22.448480\",\"folder\":null,\"id\":\"c864bd8c-67cd-465f-bf7d-7a35c7df37f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Mclean\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:09:56.507826\",\"folder\":null,\"id\":\"f0c13b19-ae23-40e6-88d6-d135897ee100\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Hawking\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:10:27.169757\",\"folder\":null,\"id\":\"0afb91b4-8f41-4270-900a-f5de647d45ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Lovelace\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:02.292233\",\"folder\":null,\"id\":\"0f1e5dcf-8769-4157-b495-5f215b490107\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Kilby\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:46.960966\",\"folder\":null,\"id\":\"310d03d9-dd50-4946-9a27-38ee06906212\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Almeida\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:12:24.475101\",\"folder\":null,\"id\":\"3cbc8fc2-a86f-4177-9a1c-a833b2a24283\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Roentgen\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:06.753571\",\"folder\":null,\"id\":\"c508e922-29e9-4234-84ae-505c5bdf41c1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Poitras\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.754605\",\"folder\":null,\"id\":\"1431df05-1b6f-41af-a063-a18d26a946ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khayyam\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.791627\",\"folder\":null,\"id\":\"344e03fb-fd49-4e87-be67-7dce04ba655b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zealous Mayer\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.803889\",\"folder\":null,\"id\":\"8b3ff1cb-3a6c-46ee-b09a-0e9f9f13a8b9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Ramanujan\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.822583\",\"folder\":null,\"id\":\"18961e76-f4b1-4968-926a-fed22cb04f69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Franklin\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.854440\",\"folder\":null,\"id\":\"0e0ee854-ab46-4333-a848-2e1239a24334\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Swirles\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.988932\",\"folder\":null,\"id\":\"cc7b8238-3d15-4f78-bd0c-8311691c9ff8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Swartz\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:08.028688\",\"folder\":null,\"id\":\"123369f9-c83c-4ed3-93b6-78ca29c271cf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kowalevski\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.097607\",\"folder\":null,\"id\":\"ed4b1490-e9e5-46bf-b337-166b48eaadd6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Golick\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.617772\",\"folder\":null,\"id\":\"9d1be311-c618-4e3e-aeb1-4161ab37850e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Newton\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.646124\",\"folder\":null,\"id\":\"63a75f99-1745-40d3-9e27-3d19a143be45\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Noyce\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.685781\",\"folder\":null,\"id\":\"b418ca87-eb17-42e8-b789-3fcb0cab3ddb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fluffy Fermat\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.705984\",\"folder\":null,\"id\":\"93802b07-eee9-4a2b-8691-7d9a231bd67e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Stoic Payne\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.723990\",\"folder\":null,\"id\":\"d62df661-0ae5-4b41-a9fb-71cb2e46ad52\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Darwin\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.818343\",\"folder\":null,\"id\":\"d1f62248-415c-474a-bfa6-3509a528a33b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Thompson\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.925999\",\"folder\":null,\"id\":\"d2267176-f020-4c52-90a4-7f944d7c1749\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Dewey\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:07.400402\",\"folder\":null,\"id\":\"8cf1ac8d-d34d-4e8a-a9da-be44672e1dfb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Zuse\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.384611\",\"folder\":null,\"id\":\"bae3cb5b-0f1b-4e95-bf58-7eab38da3d73\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hungry Zuse\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.436591\",\"folder\":null,\"id\":\"4dfafe3e-e9ef-405d-be72-550084411d69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Khayyam\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.435958\",\"folder\":null,\"id\":\"e0f81215-dc55-4b5a-b8cf-6e2fcbf297a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Mendel\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.470080\",\"folder\":null,\"id\":\"5022a71c-da47-4975-a4d0-6d2d9e760d3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Inquisitive Poitras\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.484430\",\"folder\":null,\"id\":\"4f1ff9e3-3500-404c-80af-2010bc46cdcb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Jones\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.661306\",\"folder\":null,\"id\":\"77af3e47-c2cc-42f6-99e1-78589439a447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.662877\",\"folder\":null,\"id\":\"6f3e2e56-b329-47e3-86cc-024c29203016\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Visvesvaraya\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.092917\",\"folder\":null,\"id\":\"449ac0ee-ee29-4a9f-9aff-fd6a86624457\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Tesla\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.630382\",\"folder\":null,\"id\":\"a2136ed3-dc75-4a8f-ab34-6887ff955b23\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noether\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.652058\",\"folder\":null,\"id\":\"fd1080f8-db07-481a-b2ba-60f67fcb20a6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Pasteur\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.688661\",\"folder\":null,\"id\":\"d534d5e1-92aa-4fb2-a795-7071c4feba47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Sinoussi\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.741385\",\"folder\":null,\"id\":\"85323170-c066-4d8f-acb0-1b142241389e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Ramanujan\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.790086\",\"folder\":null,\"id\":\"b0d18432-21ab-404b-acb6-57ef97353fad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sick Joliot\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-rVj1B\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-rVj1B\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":267.7156633365312,\"y\":716.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T18:52:26.999440\",\"folder\":null,\"id\":\"be39958a-ef42-4fa8-8e54-b611e56b5c97\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Graceful Lumiere\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:11.012069\",\"folder\":null,\"id\":\"f7dcecfd-533c-4f40-9dcb-f213962ed1a2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"aaaaa\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-P6Z0D\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-P6Z0D\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":266.7156633365312,\"y\":657.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T19:05:14.503144\",\"folder\":null,\"id\":\"c2411a20-57c6-44cc-a0d0-2c857453633d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Aryabhata\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":459,\"id\":\"CustomComponent-Qhbd7\",\"type\":\"genericNode\",\"position\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom openai import OpenAI\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"OpenAI STT english translator\\\"\\n description: str = \\\"Transcript and translate any audio to english\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"audio_path\\\":{\\\"display_name\\\":\\\"Audio path\\\",\\\"input_types\\\":[\\\"str\\\"]},\\\"openAI_key\\\":{\\\"display_name\\\":\\\"OpenAI key\\\",\\\"password\\\":True}}\\n\\n def build(self,audio_path:str,openAI_key:str) -> str:\\n client = OpenAI(api_key=openAI_key)\\n audio_file= open(audio_path, \\\"rb\\\")\\n transcript = client.audio.translations.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file\\n )\\n self.status = transcript.text\\n return transcript.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"audio_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"audio_path\",\"display_name\":\"Audio path\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"aaaaa\"},\"openAI_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openAI_key\",\"display_name\":\"OpenAI key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Transcript and translate any audio to english\",\"base_classes\":[\"str\"],\"display_name\":\"OpenAI STT english tra\",\"custom_fields\":{\"audio_path\":null,\"openAI_key\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Qhbd7\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913}}],\"edges\":[],\"viewport\":{\"x\":433.8372868055629,\"y\":250.9611989970935,\"zoom\":0.8467453123625275}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:16:56.971879\",\"folder\":null,\"id\":\"122eee5d-9734-4e51-9da5-b39bead64a8d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Wing\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:23.227017\",\"folder\":null,\"id\":\"171d0063-6446-4c6a-8f5b-786a38951d44\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Boyd\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.063781\",\"folder\":null,\"id\":\"3a7af50c-6555-4004-a86e-1ea37e477900\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Dewey\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.065404\",\"folder\":null,\"id\":\"dc4b4235-a550-41e2-9ddb-bcb352a1bc03\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Carroll\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.087501\",\"folder\":null,\"id\":\"9550e2bf-db7a-41f5-84e5-177a181bbeda\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Engelbart\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.112543\",\"folder\":null,\"id\":\"6a3a24bb-01cb-4d8e-8d17-0dc92d257322\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sassy Khayyam\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.147631\",\"folder\":null,\"id\":\"8d372f5e-ca12-4ea8-a1a1-8846afa72692\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Bell\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.212921\",\"folder\":null,\"id\":\"800f8785-0f41-4db3-aef8-9e3de5250526\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Bassi\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.395729\",\"folder\":null,\"id\":\"4589607a-065b-4a8f-ba52-5045d7b04086\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Volhard\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.263971\",\"folder\":null,\"id\":\"b2440ed8-44fa-4684-adf7-b5e84bff6577\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Ecstatic Poincare\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.377270\",\"folder\":null,\"id\":\"b996f514-e0b8-432f-969b-7276630a8f4b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Zuse\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.406385\",\"folder\":null,\"id\":\"6e2e9c12-0afc-499e-acdd-adf4b5f7d4fc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Hopper\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.413014\",\"folder\":null,\"id\":\"e020f1a5-aa12-45e7-ba50-6eb64a735e60\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Jang\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.433045\",\"folder\":null,\"id\":\"ee58f892-b7b2-408e-b4b9-9d862fc315aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Ohm\",\"description\":\"Promptly Ingenious!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.403404\",\"folder\":null,\"id\":\"023a1fc3-8807-4167-b6b2-f4e5daf036f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Degrasse\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.411655\",\"folder\":null,\"id\":\"085f106f-c1e9-4a0f-ba31-d2fafe685d9c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Volta\",\"description\":\"Catalyzing Business Growth through Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.408697\",\"folder\":null,\"id\":\"14481bb5-1353-452f-9359-d38c9419d79c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:21.774940\",\"folder\":null,\"id\":\"e9316292-4ee1-441b-8327-0b09a7831fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Easley\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.416556\",\"folder\":null,\"id\":\"668806ba-3efa-44de-aeb7-4ac082ba9172\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Mestorf\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.484048\",\"folder\":null,\"id\":\"3fc0a371-aada-4450-9d17-33d3cc05c870\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Franklin\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.509095\",\"folder\":null,\"id\":\"af967c98-5f08-4ee2-b1ce-6c16b4f9ebe2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bhaskara\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.508465\",\"folder\":null,\"id\":\"758c4164-b521-45d0-a15f-d49480e312eb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Edison\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.602296\",\"folder\":null,\"id\":\"f9d3d30f-8859-433f-bafc-ccf1a7196e35\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Ride\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.604061\",\"folder\":null,\"id\":\"0142bca5-eb61-42ed-9917-70c4c0f54eb0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noyce\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.603113\",\"folder\":null,\"id\":\"0b63d036-4669-4ceb-8ea4-34035340df77\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Bhabha\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.345767\",\"folder\":null,\"id\":\"8b9a66d4-a924-4b84-a2b5-5dd0645ac07a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Zobell\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.722319\",\"folder\":null,\"id\":\"c912fd6b-b32d-409f-a0e5-c6249b066429\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Shaw\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.750779\",\"folder\":null,\"id\":\"9d755cd4-c652-43e0-a68d-75a5475ce7a3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Giggly Newton\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.786602\",\"folder\":null,\"id\":\"0d3af7de-1ada-4c43-a69f-1bfad370ccfc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Yalow\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.792245\",\"folder\":null,\"id\":\"b6444376-4162-436b-8b40-f5a6afc850db\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Bhabha\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.890349\",\"folder\":null,\"id\":\"d90af439-fb34-4d27-98f2-06f7f9a9ed8c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Spirited Hoover\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.905750\",\"folder\":null,\"id\":\"31597ce2-de3c-490b-9ead-3f702f63cfd9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Davinci\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:08.001400\",\"folder\":null,\"id\":\"b43c63e9-a257-4a53-8acc-049e13706ac2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"23\",\"description\":\"23\",\"data\":{\"nodes\":[{\"width\":384,\"height\":467,\"id\":\"PromptTemplate-K7xiS\",\"type\":\"genericNode\",\"position\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"dasdas\",\"dasdasd\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"{dasdas}\\n{dasdasd}\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"dasdas\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdas\",\"display_name\":\"dasdas\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"dasdasd\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdasd\",\"display_name\":\"dasdasd\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"BasePromptTemplate\",\"StringPromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"dasdas\",\"dasdasd\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-K7xiS\"},\"selected\":false,\"positionAbsolute\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"dragging\":false},{\"width\":384,\"height\":366,\"id\":\"AirbyteJSONLoader-DXfcM\",\"type\":\"genericNode\",\"position\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"suffixes\":[\".json\"],\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\"json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-DXfcM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"dragging\":false},{\"width\":384,\"height\":376,\"id\":\"PromptRunner-ckWMH\",\"type\":\"genericNode\",\"position\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"data\":{\"type\":\"PromptRunner\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\n\\nclass PromptRunner(CustomComponent):\\n display_name: str = \\\"Prompt Runner\\\"\\n description: str = \\\"Run a Chain with the given PromptTemplate\\\"\\n beta: bool = True\\n field_config = {\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"prompt\\\": {\\n \\\"display_name\\\": \\\"Prompt Template\\\",\\n \\\"info\\\": \\\"Make sure the prompt has all variables filled.\\\",\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(self, llm: BaseLLM, prompt: PromptTemplate, inputs: dict = {}) -> Document:\\n chain = prompt | llm\\n # The input is an empty dict because the prompt is already filled\\n result = chain.invoke(input=inputs)\\n if hasattr(result, \\\"content\\\"):\\n result = result.content\\n self.repr_value = result\\n return Document(page_content=str(result))\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"inputs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"inputs\",\"display_name\":\"inputs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt Template\",\"advanced\":false,\"dynamic\":false,\"info\":\"Make sure the prompt has all variables filled.\",\"type\":\"PromptTemplate\",\"list\":false}},\"description\":\"Run a Chain with the given PromptTemplate\",\"base_classes\":[\"Document\"],\"display_name\":\"Prompt Runner\",\"custom_fields\":{\"inputs\":null,\"llm\":null,\"prompt\":null},\"output_types\":[\"PromptRunner\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"PromptRunner-ckWMH\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"dragging\":false}],\"edges\":[{\"source\":\"PromptRunner-ckWMH\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œPromptRunnerœ,œidœ:œPromptRunner-ckWMHœ}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{œfieldNameœ:œdasdasdœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdasd\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"PromptRunner\",\"id\":\"PromptRunner-ckWMH\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptRunner-ckWMH{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œPromptRunnerœ,œidœ:œPromptRunner-ckWMHœ}-PromptTemplate-K7xiS{œfieldNameœ:œdasdasdœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\"},{\"source\":\"AirbyteJSONLoader-DXfcM\",\"sourceHandle\":\"{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œAirbyteJSONLoaderœ,œidœ:œAirbyteJSONLoader-DXfcMœ}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{œfieldNameœ:œdasdasœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdas\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"AirbyteJSONLoader\",\"id\":\"AirbyteJSONLoader-DXfcM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-AirbyteJSONLoader-DXfcM{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œAirbyteJSONLoaderœ,œidœ:œAirbyteJSONLoader-DXfcMœ}-PromptTemplate-K7xiS{œfieldNameœ:œdasdasœ,œidœ:œPromptTemplate-K7xiSœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ],œtypeœ:œstrœ}\"}],\"viewport\":{\"x\":721.09842496776,\"y\":-303.59762799439625,\"zoom\":0.6417129487814537}},\"is_component\":false,\"updated_at\":\"2023-12-08T22:52:14.560323\",\"folder\":null,\"id\":\"8533c46e-21fd-4b92-b68e-1086ea86c72d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Stonebraker\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:26:42.332360\",\"folder\":null,\"id\":\"92bc0875-4a73-44f2-9410-3b8342e404bf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (1)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-dMB5d\"},\"id\":\"CustomComponent-dMB5d\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:43.668665\",\"folder\":null,\"id\":\"912265df-9b87-4b30-a585-1ca59b944391\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (2)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-ipifC\"},\"id\":\"CustomComponent-ipifC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:49.799612\",\"folder\":null,\"id\":\"ca83ee08-2f93-427d-9897-80fef6dd5447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Y4qL7\"},\"id\":\"CustomComponent-Y4qL7\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:53.719960\",\"folder\":null,\"id\":\"5847602b-769a-4a82-82e8-a70f54a59929\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Williams\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:27:45.691254\",\"folder\":null,\"id\":\"0e3bdba9-127a-4399-81a4-2865b70a4a47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Shared Component\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-TK9Ea\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-TK9Ea\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:28:34.119070\",\"folder\":null,\"id\":\"29c1a247-47b0-457b-8666-7c0a67dc72b0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"teste cristhian\",\"description\":\"11111\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-P5wrB\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-P5wrB\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}},{\"width\":384,\"height\":626,\"id\":\"OpenAI-zpihD\",\"type\":\"genericNode\",\"position\":{\"x\":-56.983202536768374,\"y\":61.715652677908665},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-babbage-001\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false,\"value\":\"dasdasdasdsadasdas\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"1.4\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLanguageModel\",\"BaseLLM\",\"BaseOpenAI\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-zpihD\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-56.983202536768374,\"y\":61.715652677908665}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:40:48.453096\",\"folder\":null,\"id\":\"2e59d013-2acb-49a6-915b-9231a7e6eb58\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent (1)\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-jsHqy\"},\"id\":\"CSVAgent-jsHqy\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:31:17.317322\",\"folder\":null,\"id\":\"ab1034a9-9b5b-4c65-bf6e-9f098a403942\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Wilsonfasdfsd\",\"description\":\"Building Linguistic Labyrinths.fasdfads\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:43:45.298121\",\"folder\":null,\"id\":\"7d91c0c5-fba6-4c60-b4d1-11d430ef357a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (1)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-pAHh6\"},\"id\":\"AirbyteJSONLoader-pAHh6\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:47:58.573137\",\"folder\":null,\"id\":\"f0cc4292-97cc-4748-803d-949e30dcf661\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"ff2\":\"d3bbd\"},{\"w\":\"bvd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-0zU2Q\"},\"id\":\"AirbyteJSONLoader-0zU2Q\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:09.035318\",\"folder\":null,\"id\":\"5e3c0d55-1a00-4e15-9821-0c625c6415ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-Ub1Xe\"},\"id\":\"CSVAgent-Ub1Xe\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:16.985419\",\"folder\":null,\"id\":\"baee8061-4788-4ce6-928f-c6ce1ecb443c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Heisenberg\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":366,\"id\":\"CSVLoader-RMUx9\",\"type\":\"genericNode\",\"position\":{\"x\":111,\"y\":345.51250076293945},\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVLoader-RMUx9\"},\"positionAbsolute\":{\"x\":111,\"y\":345.51250076293945}}],\"edges\":[],\"viewport\":{\"x\":0,\"y\":0,\"zoom\":1}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:38:40.291137\",\"folder\":null,\"id\":\"109e9629-d569-4555-9d40-42203a5ed035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CohereEmbeddings\",\"description\":\"Cohere embedding models.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CohereEmbeddings\",\"node\":{\"template\":{\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cohere_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"cohere_api_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"embed-english-v2.0\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"truncate\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"truncate\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"user_agent\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"user_agent\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"CohereEmbeddings\"},\"description\":\"Cohere embedding models.\",\"base_classes\":[\"CohereEmbeddings\",\"Embeddings\"],\"display_name\":\"CohereEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/cohere\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CohereEmbeddings-HFUAf\"},\"id\":\"CohereEmbeddings-HFUAf\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:46.172344\",\"folder\":null,\"id\":\"662d8040-d47c-40db-bda1-66489a1c9d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (1)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-3wrib\"},\"id\":\"CSVLoader-3wrib\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:56:11.662526\",\"folder\":null,\"id\":\"4fae6aec-ddbd-498d-a4d1-ca0290f6a5ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (2)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-VEjyx\"},\"id\":\"CSVLoader-VEjyx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:57:37.560784\",\"folder\":null,\"id\":\"d80635ee-966c-41f2-981c-afa2c388ac6e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (3)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-PIhOc\"},\"id\":\"CSVLoader-PIhOc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:27.991966\",\"folder\":null,\"id\":\"c5cc4c32-77c8-4889-a9f8-2632466b7366\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (4)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-deB43\"},\"id\":\"CSVLoader-deB43\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:42.509243\",\"folder\":null,\"id\":\"0ab59938-ccf4-4bb9-b285-1f5da38648f0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-mdkLm\"},\"id\":\"CSVLoader-mdkLm\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:17.458354\",\"folder\":null,\"id\":\"f127b7e7-4149-492e-8998-6b1b35ec4153\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (5)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-FRc6Y\"},\"id\":\"CSVLoader-FRc6Y\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:26.958867\",\"folder\":null,\"id\":\"a870a096-725c-4914-add0-8d57d710b7e5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (2)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-Z0uol\"},\"id\":\"AirbyteJSONLoader-Z0uol\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:33.764117\",\"folder\":null,\"id\":\"2a37c76c-65c8-4c01-a72d-eb46f3d41a56\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-28ASv\"},\"id\":\"AmazonBedrockEmbeddings-28ASv\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:41.066618\",\"folder\":null,\"id\":\"850ba4e6-96ca-49a7-9b0c-4b7048fd52c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"ConversationBufferMemory\",\"description\":\"Buffer for storing conversation memory.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"ConversationBufferMemory\",\"node\":{\"template\":{\"chat_memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chat_memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMessageHistory\",\"list\":false},\"ai_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"AI\",\"password\":false,\"name\":\"ai_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"human_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"Human\",\"password\":false,\"name\":\"human_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"input_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"input_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"type\":\"str\",\"list\":false},\"memory_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"chat_history\",\"password\":false,\"name\":\"memory_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"output_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"output_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"type\":\"str\",\"list\":false},\"return_messages\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"return_messages\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationBufferMemory\"},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseMemory\",\"BaseChatMemory\",\"ConversationBufferMemory\"],\"display_name\":\"ConversationBufferMemory\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"ConversationBufferMemory-WaoLx\"},\"id\":\"ConversationBufferMemory-WaoLx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:04:46.058568\",\"folder\":null,\"id\":\"be650940-0449-4eb0-a708-056310f924fd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (1)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\"},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:05:50.570800\",\"folder\":null,\"id\":\"53ad1fe2-f3af-4354-86e0-eb141ce12859\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (2)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\"},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:06:11.415088\",\"folder\":null,\"id\":\"e9ed1c90-146e-452d-8ccd-ebf2e0da4331\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (3)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\"},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:07:06.411108\",\"folder\":null,\"id\":\"83783c57-64e3-41a6-aa7e-ed82f80f1e53\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (6)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-2pn2o\"},\"id\":\"CSVLoader-2pn2o\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:38:30.706258\",\"folder\":null,\"id\":\"c4ae9de6-9df3-4d3c-afc9-1752af4fecd7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-MJrAC\"},\"id\":\"AgentInitializer-MJrAC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:42:54.715163\",\"folder\":null,\"id\":\"ff84b5f9-5680-4084-a9f1-7d94fe675486\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer (1)\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-3lcZ4\"},\"id\":\"AgentInitializer-3lcZ4\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:43:20.819934\",\"folder\":null,\"id\":\"97f5db9f-d6cc-4555-88fb-3be102c67814\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Banach\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:52:49.951416\",\"folder\":null,\"id\":\"a600acd1-213a-4ce7-8648-ab2ee59f5918\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (3)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-JhQtx\"},\"id\":\"AirbyteJSONLoader-JhQtx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:44:49.587337\",\"folder\":null,\"id\":\"07c52ad7-ca52-4cdd-ab40-74a91dbad0dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (4)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-bIvDc\"},\"id\":\"AirbyteJSONLoader-bIvDc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:13.458500\",\"folder\":null,\"id\":\"53e4d256-3653-444b-b8e0-fb97b3ae5c7e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (5)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-2BLS8\"},\"id\":\"AirbyteJSONLoader-2BLS8\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:44.461699\",\"folder\":null,\"id\":\"b5158cc1-c6b8-4e25-907a-bc7e7637aa38\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (4)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-NsBzN\"},\"id\":\"AmazonBedrockEmbeddings-NsBzN\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:50:29.791575\",\"folder\":null,\"id\":\"3fb77f72-1be7-4ce0-ae89-a82b0eee9acf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Golick\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.707854\",\"folder\":null,\"id\":\"9c5d21c2-ea82-4cf4-a591-c3d3fd3f13e6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci (1)\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.761150\",\"folder\":null,\"id\":\"f8e2e16e-129c-4116-9626-2c6b524d97b7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Degrasse\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.764440\",\"folder\":null,\"id\":\"d7f4f7b5-effe-4834-8cab-4f2fc4f6e9de\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Archimedes\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.767546\",\"folder\":null,\"id\":\"2265d813-4a87-410f-b06a-65e35db8219e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Heyrovsky\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.765105\",\"folder\":null,\"id\":\"10bfd881-e67e-4c33-965d-ee041695edce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Carroll\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.811794\",\"folder\":null,\"id\":\"63fa5653-4513-47f2-8dfa-baeb1d981f93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Perlman\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.814993\",\"folder\":null,\"id\":\"f4bc5945-20d9-4703-a5bb-6a4a3ef7fc8e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Stallman\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.813144\",\"folder\":null,\"id\":\"8d8b80f9-4b74-4cd5-bc5c-08a32c4d2b95\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Einstein\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:19.518262\",\"folder\":null,\"id\":\"21808fd7-a492-4e29-8863-301c2785f542\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Swanson\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.185637\",\"folder\":null,\"id\":\"7752299a-4aa9-44db-8d9c-5c4a2ac1b071\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Pascal\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.223064\",\"folder\":null,\"id\":\"78f48a13-6a9f-42ce-9d58-ec9b63b381d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Bartik\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.239758\",\"folder\":null,\"id\":\"38074091-3d7c-4d42-b61b-ae195c1b8a4e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Condescending Joliot\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.271996\",\"folder\":null,\"id\":\"773020aa-5c2d-4632-ad9e-21276861ab93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kalam\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.283929\",\"folder\":null,\"id\":\"0092d077-6d31-401f-a739-b164476b90ed\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Bhabha\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.467739\",\"folder\":null,\"id\":\"4a395211-712d-4dd2-b3bb-e6b19200f15d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Babbage\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.742990\",\"folder\":null,\"id\":\"3f086a82-3e29-4328-9da8-e02dc9201744\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Volta\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:18.594247\",\"folder\":null,\"id\":\"659b8289-c8e8-413d-9b2b-51e68411f170\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Jennings\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:42.640309\",\"folder\":null,\"id\":\"f55f0640-d47e-4471-b1ba-3411d38ecac5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Shaw\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:58.376247\",\"folder\":null,\"id\":\"a039811e-449a-4244-83ed-4ddd731a0921\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock (1)\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:25:14.674524\",\"folder\":null,\"id\":\"0faf6144-6ca6-4f64-a343-665ae54774ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Volta\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:26:50.418029\",\"folder\":null,\"id\":\"c5d149d0-c401-4f5e-b79f-2abcc7b8d98d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Bubbly Curie\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:27:10.900899\",\"folder\":null,\"id\":\"7bb2d226-9740-433d-861f-a499632c5a13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Nobel\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:11.541630\",\"folder\":null,\"id\":\"947906d8-75ea-470c-a8e2-cc80c5d3bdbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Northcutt\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:37.169791\",\"folder\":null,\"id\":\"56f109fd-2c18-42ed-a9b2-089a678a0c11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Khayyam\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:24.686359\",\"folder\":null,\"id\":\"551d7bfa-49aa-43f1-a779-e47eabc2aaf2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Spence\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:47.738472\",\"folder\":null,\"id\":\"12aef128-130e-492e-bf84-62d4cb4cd456\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Lavoisier\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:31:43.272365\",\"folder\":null,\"id\":\"9952c044-6903-4fba-a270-6ed0b90c93c9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:32:23.972035\",\"folder\":null,\"id\":\"65f49582-c9fa-4c67-a2bc-4e8fa73ca731\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Perlman\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:26.984083\",\"folder\":null,\"id\":\"9ae57fe2-c677-47fa-a059-7d3d915a1178\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Cori\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:52.377359\",\"folder\":null,\"id\":\"2920dde2-5c24-4fe0-9c06-ef86b5a16a99\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"}]" }, "headersSize": -1, "bodySize": -1, @@ -552,16 +648,31 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, - { "name": "Referer", "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" }, + { + "name": "Referer", + "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" + }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -596,4 +707,4 @@ } ] } -} \ No newline at end of file +} diff --git a/poetry.lock b/poetry.lock index 8c06db1c3..546f5f45b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohttp" @@ -156,30 +156,31 @@ vine = ">=5.0.0,<6.0.0" [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] name = "anthropic" -version = "0.25.8" +version = "0.26.1" description = "The official Python library for the anthropic API" optional = false python-versions = ">=3.7" files = [ - {file = "anthropic-0.25.8-py3-none-any.whl", hash = "sha256:c7a0091916eb22a5e0012b725f5492779eedfcad2da8dc906082e1db7596a65c"}, - {file = "anthropic-0.25.8.tar.gz", hash = "sha256:93f6063e96d5dbeaa172edc177762f630e55b2f81595cedb760278b95a2dd03e"}, + {file = "anthropic-0.26.1-py3-none-any.whl", hash = "sha256:2812b9b250b551ed8a1f0a7e6ae3f005654098994f45ebca5b5808bd154c9628"}, + {file = "anthropic-0.26.1.tar.gz", hash = "sha256:26680ff781a6f678a30a1dccd0743631e602b23a47719439ffdef5335fa167d8"}, ] [package.dependencies] anyio = ">=3.5.0,<5" distro = ">=1.7.0,<2" httpx = ">=0.23.0,<1" +jiter = ">=0.1.0,<1" pydantic = ">=1.9.0,<3" sniffio = "*" tokenizers = ">=0.13.0" @@ -241,13 +242,13 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "assemblyai" -version = "0.23.1" +version = "0.26.0" description = "AssemblyAI Python SDK" optional = false python-versions = ">=3.8" files = [ - {file = "assemblyai-0.23.1-py3-none-any.whl", hash = "sha256:2887c7983fa911717cbe37a38d38fcdc8188e62687385b8b6f979546c58354f4"}, - {file = "assemblyai-0.23.1.tar.gz", hash = "sha256:4a3d4d8c4f6c956c6243f0873147ba29da4c6cf5edd6a1b52e6bdaa209526998"}, + {file = "assemblyai-0.26.0-py3-none-any.whl", hash = "sha256:46689abfe1bf9bccd595f65314aab7deec3b4859630f6882099165862d305421"}, + {file = "assemblyai-0.26.0.tar.gz", hash = "sha256:7cd7cf3231333e9ea14a130b7a72bf710c66c5d1877bbfd68ab13ff546920e33"}, ] [package.dependencies] @@ -261,20 +262,22 @@ extras = ["pyaudio (>=0.2.13)"] [[package]] name = "astrapy" -version = "0.7.7" -description = "AstraPy is a Pythonic SDK for DataStax Astra" +version = "1.2.0" +description = "AstraPy is a Pythonic SDK for DataStax Astra and its Data API" optional = false -python-versions = ">=3.8.0,<4.0.0" +python-versions = "<4.0.0,>=3.8.0" files = [ - {file = "astrapy-0.7.7-py3-none-any.whl", hash = "sha256:e5def4e3c5ceb06dfc996471250dc0c972b729c06336ea4aac006dadfc071a9a"}, - {file = "astrapy-0.7.7.tar.gz", hash = "sha256:4bf81096a0c26cce18a14a34bb5f699649fd7d90b4ec6050f3d7c0274722d769"}, + {file = "astrapy-1.2.0-py3-none-any.whl", hash = "sha256:5d65242771934c38ebe16f330e9e517968c1437846dabdbe7e48470f7b1782e8"}, + {file = "astrapy-1.2.0.tar.gz", hash = "sha256:6ce1b421d1ae21fe73373fa36048d8d56c775367886525504f01c48cbb742842"}, ] [package.dependencies] +bson = ">=0.5.10,<0.6.0" cassio = ">=0.1.4,<0.2.0" deprecation = ">=2.1.0,<2.2.0" httpx = {version = ">=0.25.2,<1", extras = ["http2"]} toml = ">=0.10.2,<0.11.0" +uuid6 = ">=2024.1.12,<2024.2.0" [[package]] name = "asttokens" @@ -365,13 +368,13 @@ files = [ [[package]] name = "bce-python-sdk" -version = "0.9.9" +version = "0.9.11" description = "BCE SDK for python" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,<4,>=2.7" files = [ - {file = "bce_python_sdk-0.9.9-py3-none-any.whl", hash = "sha256:cf8886667fdb7c2bc9b40f30fc99a6fbc201f336025cc7cefa294a232973419b"}, - {file = "bce_python_sdk-0.9.9.tar.gz", hash = "sha256:574baf5a6907892ad030f32b018a2455de16cc268eccf05984026a0d8eb2c7be"}, + {file = "bce_python_sdk-0.9.11-py3-none-any.whl", hash = "sha256:3afb9717f6c0c5f5fe3104a8bea4c111bf2ab3fe87ae73b05492566bc2b5d11a"}, + {file = "bce_python_sdk-0.9.11.tar.gz", hash = "sha256:d9e977f059fef6466eebdbb34ad1e27b6f76ef90338807ab959693a78a761e7d"}, ] [package.dependencies] @@ -469,17 +472,17 @@ files = [ [[package]] name = "boto3" -version = "1.34.105" +version = "1.34.112" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.34.105-py3-none-any.whl", hash = "sha256:b633e8fbf7145bdb995ce68a27d096bb89fd393185b0e773418d81cd78db5a03"}, - {file = "boto3-1.34.105.tar.gz", hash = "sha256:f2c11635be0de7b7c06eb606ece1add125e02d6ed521592294a0a21af09af135"}, + {file = "boto3-1.34.112-py3-none-any.whl", hash = "sha256:4cf28ce2c19a4e4963f1cb1f9b659a548f840f88af3e2da727b35ceb104f9223"}, + {file = "boto3-1.34.112.tar.gz", hash = "sha256:1092ac6c68acdd33051ed0d2b7cb6f5a4527c5d1535a48cda53f7012accde206"}, ] [package.dependencies] -botocore = ">=1.34.105,<1.35.0" +botocore = ">=1.34.112,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -488,13 +491,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.105" +version = "1.34.112" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.34.105-py3-none-any.whl", hash = "sha256:a459d060b541beecb50681e6e8a39313cca981e146a59ba7c5229d62f631a016"}, - {file = "botocore-1.34.105.tar.gz", hash = "sha256:727d5d3e800ac8b705fca6e19b6fefa1e728a81d62a712df9bd32ed0117c740b"}, + {file = "botocore-1.34.112-py3-none-any.whl", hash = "sha256:637f568a6c3322fb7e5ee55e0c5367324a15a331e87a497783ac6209253dde30"}, + {file = "botocore-1.34.112.tar.gz", hash = "sha256:053495953910bcf95d336ab1adb13efb70edc5462932eff180560737ad069319"}, ] [package.dependencies] @@ -597,6 +600,20 @@ files = [ {file = "Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724"}, ] +[[package]] +name = "bson" +version = "0.5.10" +description = "BSON codec for Python" +optional = false +python-versions = "*" +files = [ + {file = "bson-0.5.10.tar.gz", hash = "sha256:d6511b2ab051139a9123c184de1a04227262173ad593429d21e443d6462d6590"}, +] + +[package.dependencies] +python-dateutil = ">=2.4.0" +six = ">=1.9.0" + [[package]] name = "build" version = "1.2.1" @@ -988,13 +1005,13 @@ numpy = "*" [[package]] name = "chromadb" -version = "0.4.24" +version = "0.5.0" description = "Chroma." optional = false python-versions = ">=3.8" files = [ - {file = "chromadb-0.4.24-py3-none-any.whl", hash = "sha256:3a08e237a4ad28b5d176685bd22429a03717fe09d35022fb230d516108da01da"}, - {file = "chromadb-0.4.24.tar.gz", hash = "sha256:a5c80b4e4ad9b236ed2d4899a5b9e8002b489293f2881cb2cadab5b199ee1c72"}, + {file = "chromadb-0.5.0-py3-none-any.whl", hash = "sha256:8193dc65c143b61d8faf87f02c44ecfa778d471febd70de517f51c5d88a06009"}, + {file = "chromadb-0.5.0.tar.gz", hash = "sha256:7954af614a9ff7b2902ddbd0a162f33f7ec0669e2429903905c4f7876d1f766f"}, ] [package.dependencies] @@ -1015,7 +1032,6 @@ opentelemetry-sdk = ">=1.2.0" orjson = ">=3.9.12" overrides = ">=7.3.1" posthog = ">=2.4.0" -pulsar-client = ">=3.1.0" pydantic = ">=1.9" pypika = ">=0.48.9" PyYAML = ">=6.0.0" @@ -1144,13 +1160,13 @@ testing = ["pytest (>=7.2.1)", "pytest-cov (>=4.0.0)", "tox (>=4.4.3)"] [[package]] name = "codespell" -version = "2.2.6" +version = "2.3.0" description = "Codespell" optional = false python-versions = ">=3.8" files = [ - {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"}, - {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"}, + {file = "codespell-2.3.0-py3-none-any.whl", hash = "sha256:a9c7cef2501c9cfede2110fd6d4e5e62296920efe9abfb84648df866e47f58d1"}, + {file = "codespell-2.3.0.tar.gz", hash = "sha256:360c7d10f75e65f67bad720af7007e1060a5d395670ec11a7ed1fed9dd17471f"}, ] [package.extras] @@ -1161,22 +1177,23 @@ types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency [[package]] name = "cohere" -version = "5.3.2" +version = "5.5.3" description = "" optional = false python-versions = "<4.0,>=3.8" files = [ - {file = "cohere-5.3.2-py3-none-any.whl", hash = "sha256:98fe701966f2f39a51f86d3827339576491ecfda080ed6e9710109c3245a5c73"}, - {file = "cohere-5.3.2.tar.gz", hash = "sha256:337905bd7bd7f3958ab4db3029d3d2abc43f789c957b0deff0d603d8fabc4838"}, + {file = "cohere-5.5.3-py3-none-any.whl", hash = "sha256:99d20129713a6dae052368b4839773a214592a76bee345b94a4846d00f702da3"}, + {file = "cohere-5.5.3.tar.gz", hash = "sha256:8c7ebe2f5bf83fee8e55a24a0acdd4b0e94de274fd0ef32b285978289a03e930"}, ] [package.dependencies] +boto3 = ">=1.34.0,<2.0.0" fastavro = ">=1.9.4,<2.0.0" httpx = ">=0.21.2" httpx-sse = ">=0.4.0,<0.5.0" pydantic = ">=1.9.2" requests = ">=2.0.0,<3.0.0" -tokenizers = ">=0.15.2,<0.16.0" +tokenizers = ">=0.19,<0.20" types-requests = ">=2.0.0,<3.0.0" typing_extensions = ">=4.0.0" @@ -1191,17 +1208,6 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[[package]] -name = "colorclass" -version = "2.2.2" -description = "Colorful worry-free console applications for Linux, Mac OS X, and Windows." -optional = false -python-versions = ">=2.6" -files = [ - {file = "colorclass-2.2.2-py2.py3-none-any.whl", hash = "sha256:6f10c273a0ef7a1150b1120b6095cbdd68e5cf36dfd5d0fc957a2500bbf99a55"}, - {file = "colorclass-2.2.2.tar.gz", hash = "sha256:6d4fe287766166a98ca7bc6f6312daf04a0481b1eda43e7173484051c0ab4366"}, -] - [[package]] name = "coloredlogs" version = "15.0.1" @@ -1253,16 +1259,6 @@ traitlets = ">=4" [package.extras] test = ["pytest"] -[[package]] -name = "compressed-rtf" -version = "1.0.6" -description = "Compressed Rich Text Format (RTF) compression and decompression package" -optional = false -python-versions = "*" -files = [ - {file = "compressed_rtf-1.0.6.tar.gz", hash = "sha256:c1c827f1d124d24608981a56e8b8691eb1f2a69a78ccad6440e7d92fde1781dd"}, -] - [[package]] name = "configargparse" version = "1.7" @@ -1278,6 +1274,40 @@ files = [ test = ["PyYAML", "mock", "pytest"] yaml = ["PyYAML"] +[[package]] +name = "couchbase" +version = "4.2.1" +description = "Python Client for Couchbase" +optional = false +python-versions = ">=3.7" +files = [ + {file = "couchbase-4.2.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:7ad4c4462879f456a9067ac1788e62d852509439bac3538b9bc459a754666481"}, + {file = "couchbase-4.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:06d91891c599ba0f5052e594ac025a2ca6ab7885e528b854ac9c125df7c74146"}, + {file = "couchbase-4.2.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0191d4a631ead533551cb9a214704ad5f3dfff2029e21a23b57725a0b5666b25"}, + {file = "couchbase-4.2.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b206790d6834a18c5e457f9a70f44774f476f3acccf9f22e8c1b5283a5bd03fa"}, + {file = "couchbase-4.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5ca571b9ce017ecbd447de12cd46e213f93e0664bec6fca0a06e1768db1a4f8"}, + {file = "couchbase-4.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:675c615cfd4b04e73e94cf03c786da5105d94527f5c3a087813dba477a1379e9"}, + {file = "couchbase-4.2.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:4cd09eedf162dc28386d9c6490e832c25068406c0f5d70a0417c0b1445394651"}, + {file = "couchbase-4.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfebb11551c6d947ce6297ab02b5006b1ac8739dda3e10d41896db0dc8672915"}, + {file = "couchbase-4.2.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:39e742ccfe90a0e59e6e1b0e12f0fe224a736c0207b218ef48048052f926e1c6"}, + {file = "couchbase-4.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f9ba24efddf47f30603275f5433434d8759a55233c78b3e4bc613c502ac429e9"}, + {file = "couchbase-4.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:adfca3929f07fb4385dc52f08d3a60634012f364b176f95ab023cdd1bb7fe9c0"}, + {file = "couchbase-4.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:e1c68b28c6f0475961afb9fe626ad2bac8a5643b53f719675386f060db4b6e19"}, + {file = "couchbase-4.2.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:137512462426cd495954c1815d78115d109308a4d9f8843b638285104388a359"}, + {file = "couchbase-4.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5987e5edcce7696e5f75b35be91f44fa69fb5eb95dba0957ad66f789affcdb36"}, + {file = "couchbase-4.2.1-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:080cb0fc333bd4a641ede4ee14ff0c7dbe95067fbb280826ea546681e0b9f9e3"}, + {file = "couchbase-4.2.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e317c2628a4a917083e8e7ce8e2662432b6a12ebac65fc00de6da2b37ab5975c"}, + {file = "couchbase-4.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:de7f8699ae344e2e96706ee0eac67e96bfdd3412fb18dcfb81d8ba5837dd3dfb"}, + {file = "couchbase-4.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:82b9deb8b1fe8e8d7dde9c232ac5f4c11ff0f067930837af0e7769706e6a9453"}, + {file = "couchbase-4.2.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:44502d069ea17a8d692b7c88d84bc0df2cf4e944cde337c8eb3175bc0b835bb9"}, + {file = "couchbase-4.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c0f131b816a7d91b755232872ba10f6d6ca5a715e595ee9534478bc97a518ae8"}, + {file = "couchbase-4.2.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e9b9deb312bbe5f9a8e63828f9de877714c4b09b7d88f7dc87b60e5ffb2a13e6"}, + {file = "couchbase-4.2.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:71e8da251850d795975c3569c01d35ba1a556825dc7d9549ff9918d148255804"}, + {file = "couchbase-4.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d04492144ce520c612a2f8f265278c9f0cdf62fdd6f703e7a3210a7476b228f6"}, + {file = "couchbase-4.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:3f91b7699ea7b8253cf34c9fb6e191de9b2edfd7aa4d6f97b29c10b9a1670444"}, + {file = "couchbase-4.2.1.tar.gz", hash = "sha256:dc1c60d3f2fc179db8225aac4cc30d601d73cf2535aaf023d607e86be2d7dd78"}, +] + [[package]] name = "coverage" version = "7.5.1" @@ -1575,17 +1605,6 @@ files = [ [package.extras] graph = ["objgraph (>=1.7.2)"] -[[package]] -name = "dirtyjson" -version = "1.0.8" -description = "JSON decoder for Python that can extract data from the muck" -optional = false -python-versions = "*" -files = [ - {file = "dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53"}, - {file = "dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd"}, -] - [[package]] name = "diskcache" version = "5.6.3" @@ -1641,22 +1660,23 @@ wmi = ["wmi (>=1.5.1)"] [[package]] name = "docker" -version = "7.0.0" +version = "7.1.0" description = "A Python library for the Docker Engine API." optional = false python-versions = ">=3.8" files = [ - {file = "docker-7.0.0-py3-none-any.whl", hash = "sha256:12ba681f2777a0ad28ffbcc846a69c31b4dfd9752b47eb425a274ee269c5e14b"}, - {file = "docker-7.0.0.tar.gz", hash = "sha256:323736fb92cd9418fc5e7133bc953e11a9da04f4483f828b527db553f1e7e5a3"}, + {file = "docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0"}, + {file = "docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c"}, ] [package.dependencies] -packaging = ">=14.0" pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""} requests = ">=2.26.0" urllib3 = ">=1.26.0" [package.extras] +dev = ["coverage (==7.2.7)", "pytest (==7.4.2)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.1.0)", "ruff (==0.1.8)"] +docs = ["myst-parser (==0.18.0)", "sphinx (==5.1.1)"] ssh = ["paramiko (>=2.4.3)"] websockets = ["websocket-client (>=1.3.0)"] @@ -1713,79 +1733,58 @@ weaviate = ["weaviate-client (>=3.26.1,<3.27.0)", "weaviate-client (>=4.5.4,<4.6 [[package]] name = "duckdb" -version = "0.10.2" +version = "0.10.3" description = "DuckDB in-process database" optional = false python-versions = ">=3.7.0" files = [ - {file = "duckdb-0.10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3891d3ac03e12a3e5c43afa3020fe701f64060f52d25f429a1ed7b5d914368d3"}, - {file = "duckdb-0.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4f63877651f1fb940e049dc53038eb763856616319acf4f892b1c3ed074f5ab0"}, - {file = "duckdb-0.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:06e3a36f04f4d98d2c0bbdd63e517cfbe114a795306e26ec855e62e076af5043"}, - {file = "duckdb-0.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf5f95ad5b75c8e65c6508b4df02043dd0b9d97712b9a33236ad77c388ce7861"}, - {file = "duckdb-0.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ff62bc98278c98fecbd6eecec5d698ad41ebd654110feaadbf8ac8bb59b1ecf"}, - {file = "duckdb-0.10.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cceede13fde095c23cf9a53adf7c414c7bfb21b9a7aa6a4836014fdbecbfca70"}, - {file = "duckdb-0.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:acdfff60b7efccd7f731213a9795851256249dfacf80367074b2b2e144f716dd"}, - {file = "duckdb-0.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:4a5d5655cf0bdaf664a6f332afe465e02b08cef715548a0983bb7aef48da06a6"}, - {file = "duckdb-0.10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a9d15842876d18763e085648656cccc7660a215d16254906db5c4471be2c7732"}, - {file = "duckdb-0.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c88cdcdc8452c910e4298223e7d9fca291534ff5aa36090aa49c9e6557550b13"}, - {file = "duckdb-0.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:364cd6f5dc8a1010d144d08c410ba9a74c521336ee5bda84fabc6616216a6d6a"}, - {file = "duckdb-0.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c57c11d1060296f5e9ebfb5bb7e5521e0d77912e8f9ff43c90240c3311e9de9"}, - {file = "duckdb-0.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:186d86b8dda8e1076170eb770bb2bb73ea88ca907d92885c9695d6515207b205"}, - {file = "duckdb-0.10.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f65b62f31c6bff21afc0261cfe28d238b8f34ec78f339546b12f4740c39552a"}, - {file = "duckdb-0.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a860d7466a5c93714cdd94559ce9e1db2ab91914f0941c25e5e93d4ebe36a5fa"}, - {file = "duckdb-0.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:33308190e9c7f05a3a0a2d46008a043effd4eae77011869d7c18fb37acdd9215"}, - {file = "duckdb-0.10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3a8b2f1229b4aecb79cd28ffdb99032b1497f0a805d0da1136a9b6115e1afc70"}, - {file = "duckdb-0.10.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d23a6dea61963733a0f45a0d0bbb1361fb2a47410ed5ff308b4a1f869d4eeb6f"}, - {file = "duckdb-0.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:20ee0aa27e688aa52a40b434ec41a50431d0b06edeab88edc2feaca18d82c62c"}, - {file = "duckdb-0.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80a6d43d9044f0997a15a92e0c0ff3afd21151a1e572a92f439cc4f56b7090e1"}, - {file = "duckdb-0.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6934758cacd06029a5c9f54556a43bd277a86757e22bf8d0dd11ca15c1813d1c"}, - {file = "duckdb-0.10.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a11e2d68bd79044eea5486b1cddb5b915115f537e5c74eeb94c768ce30f9f4b"}, - {file = "duckdb-0.10.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0bf58385c43b8e448a2fea7e8729054934bf73ea616d1d7ef8184eda07f975e2"}, - {file = "duckdb-0.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:eae75c7014597ded6e7f6dc51e32d48362a31608acd73e9f795748ee94335a54"}, - {file = "duckdb-0.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62e89deff778a7a86f651802b947a3466425f6cce41e9d7d412d39e492932943"}, - {file = "duckdb-0.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f87e555fd36ec6da316b727a39fb24c53124a797dfa9b451bdea87b2f20a351f"}, - {file = "duckdb-0.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41e8b34b1a944590ebcf82f8cc59d67b084fe99479f048892d60da6c1402c386"}, - {file = "duckdb-0.10.2-cp37-cp37m-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c68c6dde2773774cf2371522a3959ea2716fc2b3a4891d4066f0e426455fe19"}, - {file = "duckdb-0.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ff6a8a0980d0f9398fa461deffa59465dac190d707468478011ea8a5fe1f2c81"}, - {file = "duckdb-0.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:728dd4ff0efda387a424754e5508d4f8c72a272c2d3ccb036a83286f60b46002"}, - {file = "duckdb-0.10.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c461d6b4619e80170044a9eb999bbf4097e330d3a4974ced0a7eaeb79c7c39f6"}, - {file = "duckdb-0.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:909351ff72eb3b50b89761251148d8a186594d8a438e12dcf5494794caff6693"}, - {file = "duckdb-0.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d9eeb8393d69abafd355b869669957eb85b89e4df677e420b9ef0693b7aa6cb4"}, - {file = "duckdb-0.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3102bcf5011e8f82ea3c2bde43108774fe5a283a410d292c0843610ea13e2237"}, - {file = "duckdb-0.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d64d443613e5f16caf7d67102733538c90f7715867c1a98597efd3babca068e3"}, - {file = "duckdb-0.10.2-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cb31398826d1b7473344e5ee8e0f826370c9752549469ba1327042ace9041f80"}, - {file = "duckdb-0.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d09dcec467cd6127d5cc1fb0ce4efbd77e761882d9d772b0f64fc2f79a2a1cde"}, - {file = "duckdb-0.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:82fab1a24faf7c33d8a7afed08b57ee36e8821a3a68a2f1574cd238ea440bba0"}, - {file = "duckdb-0.10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38607e6e6618e8ea28c8d9b67aa9e22cfd6d6d673f2e8ab328bd6e867b697f69"}, - {file = "duckdb-0.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fb0c23bc8c09615bff38aebcf8e92e6ae74959c67b3c9e5b00edddc730bf22be"}, - {file = "duckdb-0.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:00576c11c78c83830ab483bad968e07cd9b5f730e7ffaf5aa5fadee5ac4f71e9"}, - {file = "duckdb-0.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:077db692cdda50c4684ef87dc2a68507665804caa90e539dbe819116bda722ad"}, - {file = "duckdb-0.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca25984ad9f9a04e46e8359f852668c11569534e3bb8424b80be711303ad2314"}, - {file = "duckdb-0.10.2-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a72cc40982c7b92cf555e574618fc711033b013bf258b611ba18d7654c89d8c"}, - {file = "duckdb-0.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27b9efd6e788eb561535fdc0cbc7c74aca1ff39f748b7cfc27aa49b00e22da1"}, - {file = "duckdb-0.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:4800469489bc262dda61a7f1d40acedf67cf2454874e9d8bbf07920dc2b147e6"}, - {file = "duckdb-0.10.2.tar.gz", hash = "sha256:0f609c9d5f941f1ecde810f010dd9321cd406a552c1df20318a13fa64247f67f"}, -] - -[[package]] -name = "easygui" -version = "0.98.3" -description = "EasyGUI is a module for very simple, very easy GUI programming in Python. EasyGUI is different from other GUI generators in that EasyGUI is NOT event-driven. Instead, all GUI interactions are invoked by simple function calls." -optional = false -python-versions = "*" -files = [ - {file = "easygui-0.98.3-py2.py3-none-any.whl", hash = "sha256:33498710c68b5376b459cd3fc48d1d1f33822139eb3ed01defbc0528326da3ba"}, - {file = "easygui-0.98.3.tar.gz", hash = "sha256:d653ff79ee1f42f63b5a090f2f98ce02335d86ad8963b3ce2661805cafe99a04"}, -] - -[[package]] -name = "ebcdic" -version = "1.1.1" -description = "Additional EBCDIC codecs" -optional = false -python-versions = "*" -files = [ - {file = "ebcdic-1.1.1-py2.py3-none-any.whl", hash = "sha256:33b4cb729bc2d0bf46cc1847b0e5946897cb8d3f53520c5b9aa5fa98d7e735f1"}, + {file = "duckdb-0.10.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd25cc8d001c09a19340739ba59d33e12a81ab285b7a6bed37169655e1cefb31"}, + {file = "duckdb-0.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f9259c637b917ca0f4c63887e8d9b35ec248f5d987c886dfc4229d66a791009"}, + {file = "duckdb-0.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b48f5f1542f1e4b184e6b4fc188f497be8b9c48127867e7d9a5f4a3e334f88b0"}, + {file = "duckdb-0.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e327f7a3951ea154bb56e3fef7da889e790bd9a67ca3c36afc1beb17d3feb6d6"}, + {file = "duckdb-0.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d8b20ed67da004b4481973f4254fd79a0e5af957d2382eac8624b5c527ec48c"}, + {file = "duckdb-0.10.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d37680b8d7be04e4709db3a66c8b3eb7ceba2a5276574903528632f2b2cc2e60"}, + {file = "duckdb-0.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d34b86d6a2a6dfe8bb757f90bfe7101a3bd9e3022bf19dbddfa4b32680d26a9"}, + {file = "duckdb-0.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:73b1cb283ca0f6576dc18183fd315b4e487a545667ffebbf50b08eb4e8cdc143"}, + {file = "duckdb-0.10.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d917dde19fcec8cadcbef1f23946e85dee626ddc133e1e3f6551f15a61a03c61"}, + {file = "duckdb-0.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46757e0cf5f44b4cb820c48a34f339a9ccf83b43d525d44947273a585a4ed822"}, + {file = "duckdb-0.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:338c14d8ac53ac4aa9ec03b6f1325ecfe609ceeb72565124d489cb07f8a1e4eb"}, + {file = "duckdb-0.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:651fcb429602b79a3cf76b662a39e93e9c3e6650f7018258f4af344c816dab72"}, + {file = "duckdb-0.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3ae3c73b98b6215dab93cc9bc936b94aed55b53c34ba01dec863c5cab9f8e25"}, + {file = "duckdb-0.10.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56429b2cfe70e367fb818c2be19f59ce2f6b080c8382c4d10b4f90ba81f774e9"}, + {file = "duckdb-0.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b46c02c2e39e3676b1bb0dc7720b8aa953734de4fd1b762e6d7375fbeb1b63af"}, + {file = "duckdb-0.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:bcd460feef56575af2c2443d7394d405a164c409e9794a4d94cb5fdaa24a0ba4"}, + {file = "duckdb-0.10.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e229a7c6361afbb0d0ab29b1b398c10921263c52957aefe3ace99b0426fdb91e"}, + {file = "duckdb-0.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:732b1d3b6b17bf2f32ea696b9afc9e033493c5a3b783c292ca4b0ee7cc7b0e66"}, + {file = "duckdb-0.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f5380d4db11fec5021389fb85d614680dc12757ef7c5881262742250e0b58c75"}, + {file = "duckdb-0.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:468a4e0c0b13c55f84972b1110060d1b0f854ffeb5900a178a775259ec1562db"}, + {file = "duckdb-0.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fa1e7ff8d18d71defa84e79f5c86aa25d3be80d7cb7bc259a322de6d7cc72da"}, + {file = "duckdb-0.10.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ed1063ed97c02e9cf2e7fd1d280de2d1e243d72268330f45344c69c7ce438a01"}, + {file = "duckdb-0.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:22f2aad5bb49c007f3bfcd3e81fdedbc16a2ae41f2915fc278724ca494128b0c"}, + {file = "duckdb-0.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:8f9e2bb00a048eb70b73a494bdc868ce7549b342f7ffec88192a78e5a4e164bd"}, + {file = "duckdb-0.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6c2fc49875b4b54e882d68703083ca6f84b27536d57d623fc872e2f502b1078"}, + {file = "duckdb-0.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a66c125d0c30af210f7ee599e7821c3d1a7e09208196dafbf997d4e0cfcb81ab"}, + {file = "duckdb-0.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d99dd7a1d901149c7a276440d6e737b2777e17d2046f5efb0c06ad3b8cb066a6"}, + {file = "duckdb-0.10.3-cp37-cp37m-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5ec3bbdb209e6095d202202893763e26c17c88293b88ef986b619e6c8b6715bd"}, + {file = "duckdb-0.10.3-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:2b3dec4ef8ed355d7b7230b40950b30d0def2c387a2e8cd7efc80b9d14134ecf"}, + {file = "duckdb-0.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:04129f94fb49bba5eea22f941f0fb30337f069a04993048b59e2811f52d564bc"}, + {file = "duckdb-0.10.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d75d67024fc22c8edfd47747c8550fb3c34fb1cbcbfd567e94939ffd9c9e3ca7"}, + {file = "duckdb-0.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f3796e9507c02d0ddbba2e84c994fae131da567ce3d9cbb4cbcd32fadc5fbb26"}, + {file = "duckdb-0.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:78e539d85ebd84e3e87ec44d28ad912ca4ca444fe705794e0de9be3dd5550c11"}, + {file = "duckdb-0.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a99b67ac674b4de32073e9bc604b9c2273d399325181ff50b436c6da17bf00a"}, + {file = "duckdb-0.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1209a354a763758c4017a1f6a9f9b154a83bed4458287af9f71d84664ddb86b6"}, + {file = "duckdb-0.10.3-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3b735cea64aab39b67c136ab3a571dbf834067f8472ba2f8bf0341bc91bea820"}, + {file = "duckdb-0.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:816ffb9f758ed98eb02199d9321d592d7a32a6cb6aa31930f4337eb22cfc64e2"}, + {file = "duckdb-0.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:1631184b94c3dc38b13bce4045bf3ae7e1b0ecbfbb8771eb8d751d8ffe1b59b3"}, + {file = "duckdb-0.10.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fb98c35fc8dd65043bc08a2414dd9f59c680d7e8656295b8969f3f2061f26c52"}, + {file = "duckdb-0.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e75c9f5b6a92b2a6816605c001d30790f6d67ce627a2b848d4d6040686efdf9"}, + {file = "duckdb-0.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ae786eddf1c2fd003466e13393b9348a44b6061af6fe7bcb380a64cac24e7df7"}, + {file = "duckdb-0.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9387da7b7973707b0dea2588749660dd5dd724273222680e985a2dd36787668"}, + {file = "duckdb-0.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:538f943bf9fa8a3a7c4fafa05f21a69539d2c8a68e557233cbe9d989ae232899"}, + {file = "duckdb-0.10.3-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6930608f35025a73eb94252964f9f19dd68cf2aaa471da3982cf6694866cfa63"}, + {file = "duckdb-0.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:03bc54a9cde5490918aad82d7d2a34290e3dfb78d5b889c6626625c0f141272a"}, + {file = "duckdb-0.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:372b6e3901d85108cafe5df03c872dfb6f0dbff66165a0cf46c47246c1957aa0"}, + {file = "duckdb-0.10.3.tar.gz", hash = "sha256:c5bd84a92bc708d3a6adffe1f554b94c6e76c795826daaaf482afc3d9c636971"}, ] [[package]] @@ -1845,18 +1844,36 @@ requests = ["requests (>=2.4.0,<3.0.0)"] vectorstore-mmr = ["numpy (>=1)", "simsimd (>=3)"] [[package]] -name = "emoji" -version = "2.11.1" -description = "Emoji for Python" +name = "email-validator" +version = "2.1.1" +description = "A robust email address syntax and deliverability validation library." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "emoji-2.11.1-py2.py3-none-any.whl", hash = "sha256:b7ba25299bbf520cc8727848ae66b986da32aee27dc2887eaea2bff07226ce49"}, - {file = "emoji-2.11.1.tar.gz", hash = "sha256:062ff0b3154b6219143f8b9f4b3e5c64c35bc2b146e6e2349ab5f29e218ce1ee"}, + {file = "email_validator-2.1.1-py3-none-any.whl", hash = "sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05"}, + {file = "email_validator-2.1.1.tar.gz", hash = "sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84"}, ] +[package.dependencies] +dnspython = ">=2.0.0" +idna = ">=2.0.0" + +[[package]] +name = "emoji" +version = "2.12.1" +description = "Emoji for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "emoji-2.12.1-py3-none-any.whl", hash = "sha256:a00d62173bdadc2510967a381810101624a2f0986145b8da0cffa42e29430235"}, + {file = "emoji-2.12.1.tar.gz", hash = "sha256:4aa0488817691aa58d83764b6c209f8a27c0b3ab3f89d1b8dceca1a62e4973eb"}, +] + +[package.dependencies] +typing-extensions = ">=4.7.0" + [package.extras] -dev = ["coverage", "coveralls", "pytest"] +dev = ["coverage", "pytest (>=7.4.4)"] [[package]] name = "exceptiongroup" @@ -1900,33 +1917,6 @@ files = [ [package.extras] tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] -[[package]] -name = "extract-msg" -version = "0.47.0" -description = "Extracts emails and attachments saved in Microsoft Outlook's .msg files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "extract_msg-0.47.0-py2.py3-none-any.whl", hash = "sha256:ab177546d6ebbea7818e9acb352f6f8cce3821e39319405e6a873808238564a5"}, - {file = "extract_msg-0.47.0.tar.gz", hash = "sha256:d3ed5fdc8cdff3567421d7e4183511905eb3c83d2605e6c9335c653efa6cfb41"}, -] - -[package.dependencies] -beautifulsoup4 = ">=4.11.1,<4.13" -compressed-rtf = ">=1.0.6,<2" -ebcdic = ">=1.1.1,<2" -olefile = "0.47" -red-black-tree-mod = "1.20" -RTFDE = ">=0.1.1,<0.2" -tzlocal = ">=4.2,<6" - -[package.extras] -all = ["extract-msg[encoding]", "extract-msg[image]", "extract-msg[mime]"] -encoding = ["chardet (>=3.0.0,<6)"] -image = ["Pillow (>=9.5.0,<10)"] -mime = ["python-magic (>=0.4.27,<0.5)"] -readthedocs = ["sphinx-rtd-theme"] - [[package]] name = "faiss-cpu" version = "1.8.0" @@ -1978,23 +1968,48 @@ files = [ [[package]] name = "fastapi" -version = "0.110.3" +version = "0.111.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.110.3-py3-none-any.whl", hash = "sha256:fd7600612f755e4050beb74001310b5a7e1796d149c2ee363124abdfa0289d32"}, - {file = "fastapi-0.110.3.tar.gz", hash = "sha256:555700b0159379e94fdbfc6bb66a0f1c43f4cf7060f25239af3d84b63a656626"}, + {file = "fastapi-0.111.0-py3-none-any.whl", hash = "sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0"}, + {file = "fastapi-0.111.0.tar.gz", hash = "sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7"}, ] [package.dependencies] +email_validator = ">=2.0.0" +fastapi-cli = ">=0.0.2" +httpx = ">=0.23.0" +jinja2 = ">=2.11.2" +orjson = ">=3.2.1" pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +python-multipart = ">=0.0.7" starlette = ">=0.37.2,<0.38.0" typing-extensions = ">=4.8.0" +ujson = ">=4.0.1,<4.0.2 || >4.0.2,<4.1.0 || >4.1.0,<4.2.0 || >4.2.0,<4.3.0 || >4.3.0,<5.0.0 || >5.0.0,<5.1.0 || >5.1.0" +uvicorn = {version = ">=0.12.0", extras = ["standard"]} [package.extras] all = ["email_validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +[[package]] +name = "fastapi-cli" +version = "0.0.4" +description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi_cli-0.0.4-py3-none-any.whl", hash = "sha256:a2552f3a7ae64058cdbb530be6fa6dbfc975dc165e4fa66d224c3d396e25e809"}, + {file = "fastapi_cli-0.0.4.tar.gz", hash = "sha256:e2e9ffaffc1f7767f488d6da34b6f5a377751c996f397902eb6abb99a67bde32"}, +] + +[package.dependencies] +typer = ">=0.12.3" + +[package.extras] +standard = ["fastapi", "uvicorn[standard] (>=0.15.0)"] + [[package]] name = "fastavro" version = "1.9.4" @@ -2393,74 +2408,74 @@ test = ["cffi (>=1.12.2)", "coverage (>=5.0)", "dnspython (>=1.16.0,<2.0)", "idn [[package]] name = "geventhttpclient" -version = "2.2.1" +version = "2.3.1" description = "HTTP client library for gevent" optional = false python-versions = ">=3.9" files = [ - {file = "geventhttpclient-2.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:672c6b0239dc6651c02b54b5d3f67290af40fade700ee3ab48fc97f09c6a5dc6"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f11fda0645c406c250e01db97a3e2d2f804c7b50eb1432d1e00f37225bcc4598"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:34338eafa649a281d7f5453c3aaf88744137bbe099ad3ba157ae491cd88b96e0"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb1021556cc4329246a4493ad90ac8a55594c27c2b85093676dc937cf19d6de2"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:06c6cc714ce66f66e8f892575aecdbed2355afe4b39cb89d08eb8728b8523466"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df3788352d9ee10fa7c6cdfa45260e353e96466555e2a7d2ebcc394f607e0cce"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ebe1333f4f6b879f84576ac1aeacbe32a382716f05172f9aa38313bf1bbcf45"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bcdb648301db9649d3a099d3f833919315ff34f26e47149f986b0ca2f5b0e186"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:81d6d5a6a0a93c0b7d395270d5d357bbcc4b4502ea2086e711869a65c0f9fc30"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:6af2fc621ea8c7aae6fa49c2204bd80050a0c56ea349011f3ebe2f36d8623ad4"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ff7bbc4b4b913631dbc6f23d3d3cbbf1d9b020181cbfa8a806e13ebb01e13219"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-win32.whl", hash = "sha256:cfa65f0c595ad2cf9f129f7cf18de076db4f72449fa8a6cc7f7cf554e5332832"}, - {file = "geventhttpclient-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:f4e1ae7ad0bd7a00c679874652ea49a6352f91690c35ee0da45bf63114ad433b"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:438d3f8c2ba0a9a8b58d62f6ccd29bea468b41f71132f21eb9e8aff347e98c5d"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e22e108b64d20c8767b1e78ebe230d3f2af5805e80246d6aa2afd1dab4a6f19"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:164ec70971c915ea3716d4175d704c6cb0cb020a64eb6ea7f0a3277abd07f2fb"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83589b7708f40b1366616dab832fcefb3f486cf61c65dac9bf2fe3196850d34d"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d735d39b9c64fb79f01b36d47f38653f8988d441d6b7dbaedac3d4b45f0cd21"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41b56ae8a616fa237b45e1a7bc9c474441d7e69fb46a1fac4f6edc1d462454d9"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:034961b2fafcdf1f54895f37980aca5bafa8740dde39d2eacbacb4e0995b99a5"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eec11a2e3501e0170f057f4e292a5715d57e3362fefa75f804302fc4bd916b38"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7387571fa24608e40230bd60641bb811dd0565f77dd52b7b3249eecb9293d01a"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f37e0f56ade9c308ef5f5359bcb9d69f8b6d6ee177f2e1965b5f75472dfb02f9"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bbcf295b8987114437215ed5b2980811a5d135ddcdc1258add64caee679de8c"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-win32.whl", hash = "sha256:44e206dea6c5d11287f4ad96dd807d4cd85f8aad1a243f7b0d87a90dc877bdcd"}, - {file = "geventhttpclient-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:e5c55f3526bf3d9c47a6c4d789ad9cd224ed301740e15c1bdeb7bc067b38c7bf"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:86f0372314515cc49bd88a1d733db31f8d746f77790cd3e9fcb2bfadbf06bf01"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2203442640dc0f2178be7b7a2ed285deffeda31c80045162a291292f1269cf8b"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:005e4798af49bd017c19c7272f87e05bfd72ba7ff876de5a3457026587c16c33"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4188f482cc7d970b7fe71e178199c853064c17c6bfa87a4f5f482bb2a2db3d2"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f805eab5012133aabab802fc1efc7a865226f534340ce2617439c3be4f10925f"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75f2fff7785887441c4f57aa6004a5edf545952db089f060655f77dacc2f8a9f"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c20f68942bea6789abe363a08abb8453017c6eda69bc69d9b6c52f166254375c"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d9ab6892e9b95a782a3af279f07e60ee4de98f94e0a9c78955c820a1e7bb821"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:69f71152c5ff9272c1d4ee653c0ba7357e2eada4c3af68ceaa3b866c0b7410e8"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b173bc1d11ee2bef1d46f5159a23fa749f7c770b75127184aa855df976267a05"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7a771dfbaba83ba558d438e5e3ece49f04c683e3af510ad366f94502af7c5f4e"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-win32.whl", hash = "sha256:438ee39c11b83d737e6c8121467a0e72d2cabe8c5a3a8d432106a10c9c95df79"}, - {file = "geventhttpclient-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:f125e37261e9cf1841cd3d81b196e051150d7fbbf74652aad40eafab08b19969"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:37030e799993c2576c30264b58e868e7de6bbd9ff6298dace713e7ba5c545346"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:19ab382d7f736fa87a0f417b3b2b67b4ce8a81fceda38d1e6344725907b9d405"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f0691aaeb87f3ad8337b3d862c2f74d8910a2762076adfd32940094eb10a267"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e51627d3690a8829199ac39197d081cb13bc866c8c7fe9d9c383517b4bbbbfb"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01f4ebcd0cae416cab27092f65c6b5a8c6bc9d50e9447f6278c6261995fb6629"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9cb660559b292d7a1e3d22938d384cc3c534d356ca308f50d9c3801bfc404cb"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eec345499bbdf9acccdbd08e9180ff93334bf339cb2b0250b57b6a74a742bd4"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e013cb4fcadbb5e9ef36cbd8774bc8b70ea09f9b4d2ec84b9f3e2b5a203e1bfa"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2144d1900db9f6b5d5560ecba2bba39922829d09dbebaa794ebb0ad9e4747618"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8b30fdd201893a8ed7cfd98df23925623f0e731737e42050a5602d7ed038e55e"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ec607413b3ac1b62035c2bdf5e27d705c8d74a3ecd26851318380c66231909e2"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-win32.whl", hash = "sha256:a06342791b66e2c40b53e7d8ba0fad6b88704cc5e7dcf8d795bbe16e88f783c2"}, - {file = "geventhttpclient-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:a77fc38028c6fb8d9f712f9589c20e8da275368daf81c3efb3019cc2056b18a4"}, - {file = "geventhttpclient-2.2.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c078d03bc1edf2b484ef056312e132772cb9debd0cf0ac3f27144014b504228e"}, - {file = "geventhttpclient-2.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45daaec4ab2b77861a0a81a8735bb82f2571b5035366323ffac9f80abd2973cd"}, - {file = "geventhttpclient-2.2.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89cd7dc244e8052d0de7ae345aa009739f1ae32bbd2a0668a422321824bcd8b9"}, - {file = "geventhttpclient-2.2.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a4835f5486cdf84c64680bba49a59439a81fa9eb632e64c7e86956d074e56a7"}, - {file = "geventhttpclient-2.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8685d152abecd58d9b546012b08a35d1ff0e37761039e817347960ef576fff68"}, - {file = "geventhttpclient-2.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ff2f6b587e7834bebf8ced8be227372b11c24c5429615b9080e2d18401403329"}, - {file = "geventhttpclient-2.2.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4aa373c83d4724066e528d7526f46139e03299a474ff442cc50f3c802e6cc0f"}, - {file = "geventhttpclient-2.2.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd354a3f7fa6b1d6bd1c4875e8d35861cb5021fd475d5120e65462b85c546b8e"}, - {file = "geventhttpclient-2.2.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d488c914aeae9c740c0a90203ebffa195fac0bfc974a284df4677f39fc0d4d9"}, - {file = "geventhttpclient-2.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0102e761996967bb28689c068a73c009cda43fa80a54b26253198c734926d043"}, - {file = "geventhttpclient-2.2.1.tar.gz", hash = "sha256:29f7e02683e3cd4f0032fba67364ff322e8504fddd170d9de5541bcfade85a50"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da22ab7bf5af4ba3d07cffee6de448b42696e53e7ac1fe97ed289037733bf1c2"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2399e3d4e2fae8bbd91756189da6e9d84adf8f3eaace5eef0667874a705a29f8"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3e33e87d0d5b9f5782c4e6d3cb7e3592fea41af52713137d04776df7646d71b"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c071db313866c3d0510feb6c0f40ec086ccf7e4a845701b6316c82c06e8b9b29"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f36f0c6ef88a27e60af8369d9c2189fe372c6f2943182a7568e0f2ad33bb69f1"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4624843c03a5337282a42247d987c2531193e57255ee307b36eeb4f243a0c21"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d614573621ba827c417786057e1e20e9f96c4f6b3878c55b1b7b54e1026693bc"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5d51330a40ac9762879d0e296c279c1beae8cfa6484bb196ac829242c416b709"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc9f2162d4e8cb86bb5322d99bfd552088a3eacd540a841298f06bb8bc1f1f03"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:06e59d3397e63c65ecc7a7561a5289f0cf2e2c2252e29632741e792f57f5d124"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4436eef515b3e0c1d4a453ae32e047290e780a623c1eddb11026ae9d5fb03d42"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-win32.whl", hash = "sha256:5d1cf7d8a4f8e15cc8fd7d88ac4cdb058d6274203a42587e594cc9f0850ac862"}, + {file = "geventhttpclient-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:4deaebc121036f7ea95430c2d0f80ab085b15280e6ab677a6360b70e57020e7f"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0ae055b9ce1704f2ce72c0847df28f4e14dbb3eea79256cda6c909d82688ea3"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f087af2ac439495b5388841d6f3c4de8d2573ca9870593d78f7b554aa5cfa7f5"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:76c367d175810facfe56281e516c9a5a4a191eff76641faaa30aa33882ed4b2f"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a58376d0d461fe0322ff2ad362553b437daee1eeb92b4c0e3b1ffef9e77defbe"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f440cc704f8a9869848a109b2c401805c17c070539b2014e7b884ecfc8591e33"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f10c62994f9052f23948c19de930b2d1f063240462c8bd7077c2b3290e61f4fa"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52c45d9f3dd9627844c12e9ca347258c7be585bed54046336220e25ea6eac155"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:77c1a2c6e3854bf87cd5588b95174640c8a881716bd07fa0d131d082270a6795"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ce649d4e25c2d56023471df0bf1e8e2ab67dfe4ff12ce3e8fe7e6fae30cd672a"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:265d9f31b4ac8f688eebef0bd4c814ffb37a16f769ad0c8c8b8c24a84db8eab5"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2de436a9d61dae877e4e811fb3e2594e2a1df1b18f4280878f318aef48a562b9"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-win32.whl", hash = "sha256:83e22178b9480b0a95edf0053d4f30b717d0b696b3c262beabe6964d9c5224b1"}, + {file = "geventhttpclient-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:97b072a282233384c1302a7dee88ad8bfedc916f06b1bc1da54f84980f1406a9"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e1c90abcc2735cd8dd2d2572a13da32f6625392dc04862decb5c6476a3ddee22"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5deb41c2f51247b4e568c14964f59d7b8e537eff51900564c88af3200004e678"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c6f1a56a66a90c4beae2f009b5e9d42db9a58ced165aa35441ace04d69cb7b37"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ee6e741849c29e3129b1ec3828ac3a5e5dcb043402f852ea92c52334fb8cabf"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d0972096a63b1ddaa73fa3dab2c7a136e3ab8bf7999a2f85a5dee851fa77cdd"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00675ba682fb7d19d659c14686fa8a52a65e3f301b56c2a4ee6333b380dd9467"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea77b67c186df90473416f4403839728f70ef6cf1689cec97b4f6bbde392a8a8"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ddcc3f0fdffd9a3801e1005b73026202cffed8199863fdef9315bea9a860a032"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:c9f1ef4ec048563cc621a47ff01a4f10048ff8b676d7a4d75e5433ed8e703e56"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:a364b30bec7a0a00dbe256e2b6807e4dc866bead7ac84aaa51ca5e2c3d15c258"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:25d255383d3d6a6fbd643bb51ae1a7e4f6f7b0dbd5f3225b537d0bd0432eaf39"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-win32.whl", hash = "sha256:ad0b507e354d2f398186dcb12fe526d0594e7c9387b514fb843f7a14fdf1729a"}, + {file = "geventhttpclient-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:7924e0883bc2b177cfe27aa65af6bb9dd57f3e26905c7675a2d1f3ef69df7cca"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fe912c6456faab196b952adcd63e9353a0d5c8deb31c8d733d38f4f0ab22e359"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8b599359779c2278018786c35d70664d441a7cd0d6baef2b2cd0d1685cf478ed"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:34107b506e2c40ec7784efa282469bf86888cacddced463dceeb58c201834897"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc34031905b2b31a80d88cd33d7e42b81812950e5304860ab6a65ee2803e2046"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50b54f67ba2087f4d9d2172065c5c5de0f0c7f865ac350116e5452de4be31444"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ddeb431836c2ef7fd33c505a06180dc907b474e0e8537a43ff12e12c9bf0307"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4890713433ca19b081f70b5f7ad258a0979ec3354f9538b50b3ad7d0a86f88de"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b8ca7dcbe94cb563341087b00b6fbd0fdd70b2acc1b5d963f9ebbfbc1e5e2893"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:05a1bbdd43ae36bcc10b3dbfa0806aefc5033a91efecfddfe56159446a46ea71"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f82c454595a88a5e510ae0985711ef398386998b6f37d90fc30e9ff1a2001280"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b032a5cdb1721921f4cd36aad620af318263b462962cfb23d648cdb93aab232"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-win32.whl", hash = "sha256:ce2c7d18bac7ffdacc4a86cd490bea6136a7d1e1170f8624f2e3bbe3b189d5b8"}, + {file = "geventhttpclient-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6ca50dd9761971d3557b897108933b34fb4a11533d52f0f2753840c740a2861a"}, + {file = "geventhttpclient-2.3.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c31431e38df45b3c79bf3c9427c796adb8263d622bc6fa25e2f6ba916c2aad93"}, + {file = "geventhttpclient-2.3.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:855ab1e145575769b180b57accb0573a77cd6a7392f40a6ef7bc9a4926ebd77b"}, + {file = "geventhttpclient-2.3.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a374aad77c01539e786d0c7829bec2eba034ccd45733c1bf9811ad18d2a8ecd"}, + {file = "geventhttpclient-2.3.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c1e97460608304f400485ac099736fff3566d3d8db2038533d466f8cf5de5a"}, + {file = "geventhttpclient-2.3.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:4f843f81ee44ba4c553a1b3f73115e0ad8f00044023c24db29f5b1df3da08465"}, + {file = "geventhttpclient-2.3.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:321b73c73d73b85cfeff36b9b5ee04174ec8406fb3dadc129558a26ccb879360"}, + {file = "geventhttpclient-2.3.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:829d03c2a140edbe74ad1fb4f850384f585f3e06fc47cfe647d065412b93926f"}, + {file = "geventhttpclient-2.3.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:994c543f156db7bce3bae15491a0e041eeb3f1cf467e0d1db0c161a900a90bec"}, + {file = "geventhttpclient-2.3.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4beff505306aa9da5cdfe2f206b403ec7c8d06a22d6b7248365772858c4ee8c"}, + {file = "geventhttpclient-2.3.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fb0a9673074541ccda09a2423fa16f4528819ceb1ba19d252213f6aca7d4b44a"}, + {file = "geventhttpclient-2.3.1.tar.gz", hash = "sha256:b40ddac8517c456818942c7812f555f84702105c82783238c9fcb8dc12675185"}, ] [package.dependencies] @@ -2476,13 +2491,13 @@ examples = ["oauth2"] [[package]] name = "google-ai-generativelanguage" -version = "0.6.3" +version = "0.6.4" description = "Google Ai Generativelanguage API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-ai-generativelanguage-0.6.3.tar.gz", hash = "sha256:10a11f1e1bb8470ff50030c1acd729b3aba7a29ade2c30cf1d1c917291366c67"}, - {file = "google_ai_generativelanguage-0.6.3-py3-none-any.whl", hash = "sha256:55a6698f6c9cbbfde5f9cd288073b6941dd9e3e6dc2176dfa3197f9a4c489895"}, + {file = "google-ai-generativelanguage-0.6.4.tar.gz", hash = "sha256:1750848c12af96cb24ae1c3dd05e4bfe24867dc4577009ed03e1042d8421e874"}, + {file = "google_ai_generativelanguage-0.6.4-py3-none-any.whl", hash = "sha256:730e471aa549797118fb1c88421ba1957741433ada575cf5dd08d3aebf903ab1"}, ] [package.dependencies] @@ -2524,13 +2539,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-api-python-client" -version = "2.129.0" +version = "2.130.0" description = "Google API Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-python-client-2.129.0.tar.gz", hash = "sha256:984cc8cc8eb4923468b1926d2b8effc5b459a4dda3c845896eb87c153b28ef84"}, - {file = "google_api_python_client-2.129.0-py2.py3-none-any.whl", hash = "sha256:d50f7e2dfdbb7fc2732f6a0cba1c54d7bb676390679526c6bb628c901e43ec86"}, + {file = "google-api-python-client-2.130.0.tar.gz", hash = "sha256:2bba3122b82a649c677b8a694b8e2bbf2a5fbf3420265caf3343bb88e2e9f0ae"}, + {file = "google_api_python_client-2.130.0-py2.py3-none-any.whl", hash = "sha256:7d45a28d738628715944a9c9d73e8696e7e03ac50b7de87f5e3035cefa94ed3a"}, ] [package.dependencies] @@ -2580,13 +2595,13 @@ httplib2 = ">=0.19.0" [[package]] name = "google-cloud-aiplatform" -version = "1.51.0" +version = "1.52.0" description = "Vertex AI API client library" optional = false python-versions = ">=3.8" files = [ - {file = "google-cloud-aiplatform-1.51.0.tar.gz", hash = "sha256:901993b4d14392452699c14cf23d72c01c5488ee36a7e00b23195e64d7d2f5ec"}, - {file = "google_cloud_aiplatform-1.51.0-py2.py3-none-any.whl", hash = "sha256:f2d3ff231454fe397f02fce1358680dea76ed7c74fc42e6c7e1aa1acb1648df3"}, + {file = "google-cloud-aiplatform-1.52.0.tar.gz", hash = "sha256:932a56e3050b4bc9a2c0630e6af3c0bd52f0bcf72b5dc01c059874231099edd3"}, + {file = "google_cloud_aiplatform-1.52.0-py2.py3-none-any.whl", hash = "sha256:8c62f5d0ec39e008737ebba4875105ed7563dd0958f591f95dc7816e4b30f92a"}, ] [package.dependencies] @@ -2609,7 +2624,7 @@ datasets = ["pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0de endpoint = ["requests (>=2.28.1)"] full = ["cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.109.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "nest-asyncio (>=1.0.0,<1.6.0)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "starlette (>=0.17.1)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)"] langchain = ["langchain (>=0.1.16,<0.2)", "langchain-core (<0.2)", "langchain-google-vertexai (<2)"] -langchain-testing = ["absl-py", "cloudpickle (>=2.2.1,<3.0)", "langchain (>=0.1.16,<0.2)", "langchain-core (<0.2)", "langchain-google-vertexai (<2)", "pydantic (>=2.6.3,<3)", "pytest-xdist"] +langchain-testing = ["absl-py", "cloudpickle (>=2.2.1,<4.0)", "langchain (>=0.1.16,<0.2)", "langchain-core (<0.2)", "langchain-google-vertexai (<2)", "pydantic (>=2.6.3,<3)", "pytest-xdist"] lit = ["explainable-ai-sdk (>=1.0.0)", "lit-nlp (==0.4.0)", "pandas (>=1.0.0)", "tensorflow (>=2.3.0,<3.0.0dev)"] metadata = ["numpy (>=1.15.0)", "pandas (>=1.0.0)"] pipelines = ["pyyaml (>=5.3.1,<7)"] @@ -2619,7 +2634,7 @@ private-endpoints = ["requests (>=2.28.1)", "urllib3 (>=1.21.1,<1.27)"] rapid-evaluation = ["nest-asyncio (>=1.0.0,<1.6.0)", "pandas (>=1.0.0,<2.2.0)"] ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)"] ray-testing = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pytest-xdist", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "ray[train] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "scikit-learn", "tensorflow", "torch (>=2.0.0,<2.1.0)", "xgboost", "xgboost-ray"] -reasoningengine = ["cloudpickle (>=2.2.1,<3.0)", "pydantic (>=2.6.3,<3)"] +reasoningengine = ["cloudpickle (>=2.2.1,<4.0)", "pydantic (>=2.6.3,<3)"] tensorboard = ["tensorflow (>=2.3.0,<3.0.0dev)"] testing = ["bigframes", "cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.109.1)", "google-api-core (>=2.11,<3.0.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "ipython", "kfp (>=2.6.0,<3.0.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "nest-asyncio (>=1.0.0,<1.6.0)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyfakefs", "pytest-asyncio", "pytest-xdist", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (==2.13.0)", "tensorflow (==2.16.1)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "torch (>=2.2.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost"] vizier = ["google-vizier (>=0.1.6)"] @@ -2627,13 +2642,13 @@ xai = ["tensorflow (>=2.3.0,<3.0.0dev)"] [[package]] name = "google-cloud-bigquery" -version = "3.22.0" +version = "3.23.1" description = "Google BigQuery API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigquery-3.22.0.tar.gz", hash = "sha256:957591e6f948d7cb4aa0f7a8e4e47b4617cd7f0269e28a71c37953c39b6e8a4c"}, - {file = "google_cloud_bigquery-3.22.0-py2.py3-none-any.whl", hash = "sha256:80c8e31a23b68b7d3ae5d138c9a9edff69d100ee812db73a5e63c79a13a5063d"}, + {file = "google-cloud-bigquery-3.23.1.tar.gz", hash = "sha256:4b4597f9291b42102c9667d3b4528f801d4c8f24ef2b12dd1ecb881273330955"}, + {file = "google_cloud_bigquery-3.23.1-py2.py3-none-any.whl", hash = "sha256:9fb72884fdbec9c4643cea6b7f21e1ecf3eb61d5305f87493d271dc801647a9e"}, ] [package.dependencies] @@ -2796,16 +2811,16 @@ testing = ["pytest"] [[package]] name = "google-generativeai" -version = "0.5.3" +version = "0.5.4" description = "Google Generative AI High level API client library and tools." optional = false python-versions = ">=3.9" files = [ - {file = "google_generativeai-0.5.3-py3-none-any.whl", hash = "sha256:a74509ee219601c74c0561eb4e1c9af6a88594c7dd098d30a18c6592afe62bd9"}, + {file = "google_generativeai-0.5.4-py3-none-any.whl", hash = "sha256:036d63ee35e7c8aedceda4f81c390a5102808af09ff3a6e57e27ed0be0708f3c"}, ] [package.dependencies] -google-ai-generativelanguage = "0.6.3" +google-ai-generativelanguage = "0.6.4" google-api-core = "*" google-api-python-client = "*" google-auth = ">=2.15.0" @@ -2965,13 +2980,13 @@ test = ["objgraph", "psutil"] [[package]] name = "groq" -version = "0.5.0" +version = "0.8.0" description = "The official Python library for the groq API" optional = false python-versions = ">=3.7" files = [ - {file = "groq-0.5.0-py3-none-any.whl", hash = "sha256:a7e6be1118bcdfea3ed071ec00f505a34d4e6ec28c435adb5a5afd33545683a1"}, - {file = "groq-0.5.0.tar.gz", hash = "sha256:d476cdc3383b45d2a4dc1876142a9542e663ea1029f9e07a05de24f895cae48c"}, + {file = "groq-0.8.0-py3-none-any.whl", hash = "sha256:f5e4e892d45001241a930db451e633ca1f0007e3f749deaa5d7360062fcd61e3"}, + {file = "groq-0.8.0.tar.gz", hash = "sha256:37ceb2f706bd516d0bfcac8e89048a24b375172987a0d6bd9efb521c54f6deff"}, ] [package.dependencies] @@ -3000,61 +3015,61 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4 [[package]] name = "grpcio" -version = "1.63.0" +version = "1.64.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio-1.63.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:2e93aca840c29d4ab5db93f94ed0a0ca899e241f2e8aec6334ab3575dc46125c"}, - {file = "grpcio-1.63.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:91b73d3f1340fefa1e1716c8c1ec9930c676d6b10a3513ab6c26004cb02d8b3f"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:b3afbd9d6827fa6f475a4f91db55e441113f6d3eb9b7ebb8fb806e5bb6d6bd0d"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f3f6883ce54a7a5f47db43289a0a4c776487912de1a0e2cc83fdaec9685cc9f"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf8dae9cc0412cb86c8de5a8f3be395c5119a370f3ce2e69c8b7d46bb9872c8d"}, - {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:08e1559fd3b3b4468486b26b0af64a3904a8dbc78d8d936af9c1cf9636eb3e8b"}, - {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5c039ef01516039fa39da8a8a43a95b64e288f79f42a17e6c2904a02a319b357"}, - {file = "grpcio-1.63.0-cp310-cp310-win32.whl", hash = "sha256:ad2ac8903b2eae071055a927ef74121ed52d69468e91d9bcbd028bd0e554be6d"}, - {file = "grpcio-1.63.0-cp310-cp310-win_amd64.whl", hash = "sha256:b2e44f59316716532a993ca2966636df6fbe7be4ab6f099de6815570ebe4383a"}, - {file = "grpcio-1.63.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:f28f8b2db7b86c77916829d64ab21ff49a9d8289ea1564a2b2a3a8ed9ffcccd3"}, - {file = "grpcio-1.63.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:65bf975639a1f93bee63ca60d2e4951f1b543f498d581869922910a476ead2f5"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:b5194775fec7dc3dbd6a935102bb156cd2c35efe1685b0a46c67b927c74f0cfb"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4cbb2100ee46d024c45920d16e888ee5d3cf47c66e316210bc236d5bebc42b3"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff737cf29b5b801619f10e59b581869e32f400159e8b12d7a97e7e3bdeee6a2"}, - {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cd1e68776262dd44dedd7381b1a0ad09d9930ffb405f737d64f505eb7f77d6c7"}, - {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:93f45f27f516548e23e4ec3fbab21b060416007dbe768a111fc4611464cc773f"}, - {file = "grpcio-1.63.0-cp311-cp311-win32.whl", hash = "sha256:878b1d88d0137df60e6b09b74cdb73db123f9579232c8456f53e9abc4f62eb3c"}, - {file = "grpcio-1.63.0-cp311-cp311-win_amd64.whl", hash = "sha256:756fed02dacd24e8f488f295a913f250b56b98fb793f41d5b2de6c44fb762434"}, - {file = "grpcio-1.63.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:93a46794cc96c3a674cdfb59ef9ce84d46185fe9421baf2268ccb556f8f81f57"}, - {file = "grpcio-1.63.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a7b19dfc74d0be7032ca1eda0ed545e582ee46cd65c162f9e9fc6b26ef827dc6"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:8064d986d3a64ba21e498b9a376cbc5d6ab2e8ab0e288d39f266f0fca169b90d"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:219bb1848cd2c90348c79ed0a6b0ea51866bc7e72fa6e205e459fedab5770172"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2d60cd1d58817bc5985fae6168d8b5655c4981d448d0f5b6194bbcc038090d2"}, - {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9e350cb096e5c67832e9b6e018cf8a0d2a53b2a958f6251615173165269a91b0"}, - {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:56cdf96ff82e3cc90dbe8bac260352993f23e8e256e063c327b6cf9c88daf7a9"}, - {file = "grpcio-1.63.0-cp312-cp312-win32.whl", hash = "sha256:3a6d1f9ea965e750db7b4ee6f9fdef5fdf135abe8a249e75d84b0a3e0c668a1b"}, - {file = "grpcio-1.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:d2497769895bb03efe3187fb1888fc20e98a5f18b3d14b606167dacda5789434"}, - {file = "grpcio-1.63.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:fdf348ae69c6ff484402cfdb14e18c1b0054ac2420079d575c53a60b9b2853ae"}, - {file = "grpcio-1.63.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a3abfe0b0f6798dedd2e9e92e881d9acd0fdb62ae27dcbbfa7654a57e24060c0"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:6ef0ad92873672a2a3767cb827b64741c363ebaa27e7f21659e4e31f4d750280"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b416252ac5588d9dfb8a30a191451adbf534e9ce5f56bb02cd193f12d8845b7f"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b77eaefc74d7eb861d3ffbdf91b50a1bb1639514ebe764c47773b833fa2d91"}, - {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b005292369d9c1f80bf70c1db1c17c6c342da7576f1c689e8eee4fb0c256af85"}, - {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cdcda1156dcc41e042d1e899ba1f5c2e9f3cd7625b3d6ebfa619806a4c1aadda"}, - {file = "grpcio-1.63.0-cp38-cp38-win32.whl", hash = "sha256:01799e8649f9e94ba7db1aeb3452188048b0019dc37696b0f5ce212c87c560c3"}, - {file = "grpcio-1.63.0-cp38-cp38-win_amd64.whl", hash = "sha256:6a1a3642d76f887aa4009d92f71eb37809abceb3b7b5a1eec9c554a246f20e3a"}, - {file = "grpcio-1.63.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:75f701ff645858a2b16bc8c9fc68af215a8bb2d5a9b647448129de6e85d52bce"}, - {file = "grpcio-1.63.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cacdef0348a08e475a721967f48206a2254a1b26ee7637638d9e081761a5ba86"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:0697563d1d84d6985e40ec5ec596ff41b52abb3fd91ec240e8cb44a63b895094"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6426e1fb92d006e47476d42b8f240c1d916a6d4423c5258ccc5b105e43438f61"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e48cee31bc5f5a31fb2f3b573764bd563aaa5472342860edcc7039525b53e46a"}, - {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:50344663068041b34a992c19c600236e7abb42d6ec32567916b87b4c8b8833b3"}, - {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:259e11932230d70ef24a21b9fb5bb947eb4703f57865a404054400ee92f42f5d"}, - {file = "grpcio-1.63.0-cp39-cp39-win32.whl", hash = "sha256:a44624aad77bf8ca198c55af811fd28f2b3eaf0a50ec5b57b06c034416ef2d0a"}, - {file = "grpcio-1.63.0-cp39-cp39-win_amd64.whl", hash = "sha256:166e5c460e5d7d4656ff9e63b13e1f6029b122104c1633d5f37eaea348d7356d"}, - {file = "grpcio-1.63.0.tar.gz", hash = "sha256:f3023e14805c61bc439fb40ca545ac3d5740ce66120a678a3c6c2c55b70343d1"}, + {file = "grpcio-1.64.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:3b09c3d9de95461214a11d82cc0e6a46a6f4e1f91834b50782f932895215e5db"}, + {file = "grpcio-1.64.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:7e013428ab472892830287dd082b7d129f4d8afef49227a28223a77337555eaa"}, + {file = "grpcio-1.64.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:02cc9cc3f816d30f7993d0d408043b4a7d6a02346d251694d8ab1f78cc723e7e"}, + {file = "grpcio-1.64.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f5de082d936e0208ce8db9095821361dfa97af8767a6607ae71425ac8ace15c"}, + {file = "grpcio-1.64.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7b7bf346391dffa182fba42506adf3a84f4a718a05e445b37824136047686a1"}, + {file = "grpcio-1.64.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b2cbdfba18408389a1371f8c2af1659119e1831e5ed24c240cae9e27b4abc38d"}, + {file = "grpcio-1.64.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aca4f15427d2df592e0c8f3d38847e25135e4092d7f70f02452c0e90d6a02d6d"}, + {file = "grpcio-1.64.0-cp310-cp310-win32.whl", hash = "sha256:7c1f5b2298244472bcda49b599be04579f26425af0fd80d3f2eb5fd8bc84d106"}, + {file = "grpcio-1.64.0-cp310-cp310-win_amd64.whl", hash = "sha256:73f84f9e5985a532e47880b3924867de16fa1aa513fff9b26106220c253c70c5"}, + {file = "grpcio-1.64.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:2a18090371d138a57714ee9bffd6c9c9cb2e02ce42c681aac093ae1e7189ed21"}, + {file = "grpcio-1.64.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:59c68df3a934a586c3473d15956d23a618b8f05b5e7a3a904d40300e9c69cbf0"}, + {file = "grpcio-1.64.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:b52e1ec7185512103dd47d41cf34ea78e7a7361ba460187ddd2416b480e0938c"}, + {file = "grpcio-1.64.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d598b5d5e2c9115d7fb7e2cb5508d14286af506a75950762aa1372d60e41851"}, + {file = "grpcio-1.64.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01615bbcae6875eee8091e6b9414072f4e4b00d8b7e141f89635bdae7cf784e5"}, + {file = "grpcio-1.64.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0b2dfe6dcace264807d9123d483d4c43274e3f8c39f90ff51de538245d7a4145"}, + {file = "grpcio-1.64.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7f17572dc9acd5e6dfd3014d10c0b533e9f79cd9517fc10b0225746f4c24b58e"}, + {file = "grpcio-1.64.0-cp311-cp311-win32.whl", hash = "sha256:6ec5ed15b4ffe56e2c6bc76af45e6b591c9be0224b3fb090adfb205c9012367d"}, + {file = "grpcio-1.64.0-cp311-cp311-win_amd64.whl", hash = "sha256:597191370951b477b7a1441e1aaa5cacebeb46a3b0bd240ec3bb2f28298c7553"}, + {file = "grpcio-1.64.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:1ce4cd5a61d4532651079e7aae0fedf9a80e613eed895d5b9743e66b52d15812"}, + {file = "grpcio-1.64.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:650a8150a9b288f40d5b7c1d5400cc11724eae50bd1f501a66e1ea949173649b"}, + {file = "grpcio-1.64.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:8de0399b983f8676a7ccfdd45e5b2caec74a7e3cc576c6b1eecf3b3680deda5e"}, + {file = "grpcio-1.64.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:46b8b43ba6a2a8f3103f103f97996cad507bcfd72359af6516363c48793d5a7b"}, + {file = "grpcio-1.64.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a54362f03d4dcfae63be455d0a7d4c1403673498b92c6bfe22157d935b57c7a9"}, + {file = "grpcio-1.64.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1f8ea18b928e539046bb5f9c124d717fbf00cc4b2d960ae0b8468562846f5aa1"}, + {file = "grpcio-1.64.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c56c91bd2923ddb6e7ed28ebb66d15633b03e0df22206f22dfcdde08047e0a48"}, + {file = "grpcio-1.64.0-cp312-cp312-win32.whl", hash = "sha256:874c741c8a66f0834f653a69e7e64b4e67fcd4a8d40296919b93bab2ccc780ba"}, + {file = "grpcio-1.64.0-cp312-cp312-win_amd64.whl", hash = "sha256:0da1d921f8e4bcee307aeef6c7095eb26e617c471f8cb1c454fd389c5c296d1e"}, + {file = "grpcio-1.64.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:c46fb6bfca17bfc49f011eb53416e61472fa96caa0979b4329176bdd38cbbf2a"}, + {file = "grpcio-1.64.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3d2004e85cf5213995d09408501f82c8534700d2babeb81dfdba2a3bff0bb396"}, + {file = "grpcio-1.64.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:6d5541eb460d73a07418524fb64dcfe0adfbcd32e2dac0f8f90ce5b9dd6c046c"}, + {file = "grpcio-1.64.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f279ad72dd7d64412e10f2443f9f34872a938c67387863c4cd2fb837f53e7d2"}, + {file = "grpcio-1.64.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85fda90b81da25993aa47fae66cae747b921f8f6777550895fb62375b776a231"}, + {file = "grpcio-1.64.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a053584079b793a54bece4a7d1d1b5c0645bdbee729215cd433703dc2532f72b"}, + {file = "grpcio-1.64.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:579dd9fb11bc73f0de061cab5f8b2def21480fd99eb3743ed041ad6a1913ee2f"}, + {file = "grpcio-1.64.0-cp38-cp38-win32.whl", hash = "sha256:23b6887bb21d77649d022fa1859e05853fdc2e60682fd86c3db652a555a282e0"}, + {file = "grpcio-1.64.0-cp38-cp38-win_amd64.whl", hash = "sha256:753cb58683ba0c545306f4e17dabf468d29cb6f6b11832e1e432160bb3f8403c"}, + {file = "grpcio-1.64.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:2186d76a7e383e1466e0ea2b0febc343ffeae13928c63c6ec6826533c2d69590"}, + {file = "grpcio-1.64.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0f30596cdcbed3c98024fb4f1d91745146385b3f9fd10c9f2270cbfe2ed7ed91"}, + {file = "grpcio-1.64.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:d9171f025a196f5bcfec7e8e7ffb7c3535f7d60aecd3503f9e250296c7cfc150"}, + {file = "grpcio-1.64.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf4c8daed18ae2be2f1fc7d613a76ee2a2e28fdf2412d5c128be23144d28283d"}, + {file = "grpcio-1.64.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3550493ac1d23198d46dc9c9b24b411cef613798dc31160c7138568ec26bc9b4"}, + {file = "grpcio-1.64.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3161a8f8bb38077a6470508c1a7301cd54301c53b8a34bb83e3c9764874ecabd"}, + {file = "grpcio-1.64.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e8fabe2cc57a369638ab1ad8e6043721014fdf9a13baa7c0e35995d3a4a7618"}, + {file = "grpcio-1.64.0-cp39-cp39-win32.whl", hash = "sha256:31890b24d47b62cc27da49a462efe3d02f3c120edb0e6c46dcc0025506acf004"}, + {file = "grpcio-1.64.0-cp39-cp39-win_amd64.whl", hash = "sha256:5a56797dea8c02e7d3a85dfea879f286175cf4d14fbd9ab3ef2477277b927baa"}, + {file = "grpcio-1.64.0.tar.gz", hash = "sha256:257baf07f53a571c215eebe9679c3058a313fd1d1f7c4eede5a8660108c52d9c"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.63.0)"] +protobuf = ["grpcio-tools (>=1.64.0)"] [[package]] name = "grpcio-health-checking" @@ -3213,16 +3228,6 @@ files = [ {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, ] -[[package]] -name = "html2text" -version = "2024.2.26" -description = "Turn HTML into equivalent Markdown-structured text." -optional = false -python-versions = ">=3.8" -files = [ - {file = "html2text-2024.2.26.tar.gz", hash = "sha256:05f8e367d15aaabc96415376776cdd11afd5127a77fce6e36afc60c563ca2c32"}, -] - [[package]] name = "httpcore" version = "1.0.5" @@ -3715,6 +3720,76 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "jiter" +version = "0.4.0" +description = "Fast iterable JSON parser." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jiter-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4aa6226d82a4a4505078c0bd5947bad65399635fc5cd4b226512e41753624edf"}, + {file = "jiter-0.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:947111ac906740a948e7b63799481acd3d5ef666ccb178d146e25718640b7408"}, + {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69572ffb4e84ae289a7422b9af4ea123cae2ce0772228859b37d4b26b4bc92ea"}, + {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ba6046cbb5d1baa5a781b846f7e5438596a332f249a857d63f86ef5d1d9563b0"}, + {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4f346e54602782e66d07df0d1c7389384fd93680052ed6170da2c6dc758409e"}, + {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49110ce693f07e97d61089d894cea05a0b9894d5ccc6ac6fc583028726c8c8af"}, + {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e358df6fd129f3a4e087539f086355ad0107e5da16dbc8bc857d94222eaeed5"}, + {file = "jiter-0.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7eb852ca39a48f3c049def56f0d1771b32e948e4f429a782d14ef4cc64cfd26e"}, + {file = "jiter-0.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:44dc045decb2545bffe2da04ea4c36d9438d3f3d49fc47ed423ea75c352b712e"}, + {file = "jiter-0.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:413adb15372ac63db04373240f40925788e4282c997eeafc2040530049a0a599"}, + {file = "jiter-0.4.0-cp310-none-win32.whl", hash = "sha256:0b48ea71673a97b897e4b94bbc871e62495a5a85f836c9f90712a4c70aa3ef7e"}, + {file = "jiter-0.4.0-cp310-none-win_amd64.whl", hash = "sha256:6a1c84b44afafaf0ba6223679cf17af664b889da14da31d8af3595fd977d96fa"}, + {file = "jiter-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b2cc498345fa37ca23fbc20271a553aa46e6eb00924600f49b7dc4b2aa8952ee"}, + {file = "jiter-0.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:69f7221ac09ab421abf04f89942026868297c568133998fb181bcf435760cbf3"}, + {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef7d01c52f3e5a56ae73af36bd13797dd1a56711eb522748e5e84d15425b3f10"}, + {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:39be97d5ce0c4d0dae28c23c03a0af0501a725589427e99763f99c42e18aa402"}, + {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eac2ed1ec1e577b92b7ea2d4e6de8aec0c1164defd8af8affdc8ec0f0ec2904a"}, + {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6258837d184c92c9cb91c983c310ad7269d41afb49d34f00ca9246e073943a03"}, + {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:123c2a77b066bf17a4d021e238e8351058cfa56b90ac04f2522d120dc64ea055"}, + {file = "jiter-0.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2df939f792c7a40e55f36700417db551b9f6b84d348990fa0f2c608adeb1f11b"}, + {file = "jiter-0.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cb1b09b16d40cf9ba1d11ba11e5b96ad29286a6a1c4ad5e6a2aef5e352a89f5d"}, + {file = "jiter-0.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0efb4208889ebdbf933bf08dbcbc16e64ffd34c8e2b28044ee142789a9dc3a67"}, + {file = "jiter-0.4.0-cp311-none-win32.whl", hash = "sha256:20545ac1b68e7e5b066a1e8347840c9cebdd02ace65faae2e655fc02ec5c915c"}, + {file = "jiter-0.4.0-cp311-none-win_amd64.whl", hash = "sha256:6b300f9887c8e4431cd03a974ea3e4f9958885636003c3864220a9b2d2f8462b"}, + {file = "jiter-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:923432a0563bbae404ff25bb010e348514a69bfab979f2f8119b23b625dbf6d9"}, + {file = "jiter-0.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab8bb0ec8b97cec4422dc8b37b525442d969244488c805b834609ab0ccd788e2"}, + {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b857adb127b9c533907226791eafa79c5038c3eb5a477984994bf7c4715ba518"}, + {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2609cc0d1d8d470e921ff9a604afeb4c701bbe13e00bd9834d5aa6e7ea732a9b"}, + {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d39e99f8b7df46a119b6f84321f6ba01f16fa46abfa765d44c05c486d8e66829"}, + {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:56de8b518ebfe76a70f856741f6de248ce396c50a87acef827b6e8388e3a502d"}, + {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488b7e777be47f67ce1a1f8f8eb907f9bbd81af5c03784a9bab09d025c250233"}, + {file = "jiter-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7ea35e0ecbb5dadd457855eb980dcc548c14cf5341bcd22a43814cb56f2bcc79"}, + {file = "jiter-0.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e1a9e9ee69c80b63951c93226b68d0e955953f64fe758bad2afe7ef7f9016af9"}, + {file = "jiter-0.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:78e2f3cc2a32a21d43ccc5afcf66f5d17e827ccc4e6d21c0b353bdad2c7dcc9c"}, + {file = "jiter-0.4.0-cp312-none-win32.whl", hash = "sha256:eeaa7a2b47a99f4ebbb4142bb58b95617e09f24c87570f6a57d2770687c9ddbe"}, + {file = "jiter-0.4.0-cp312-none-win_amd64.whl", hash = "sha256:8d4a78b385b93ff59a67215d26000fcb4789a388fca3730d1b60fab17fc81e3c"}, + {file = "jiter-0.4.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ebf20a3fac1089ce26963bf04140da0f803d55332ec69d59c5a87cf1a87d29c4"}, + {file = "jiter-0.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d62244ffc6a168187452277adeefb7b2c30170689c6bf543a51e98e8c17ddab7"}, + {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40b2cde77446a41cec595739fd168be87edff2428eaf7c3438231224dd0ab7a5"}, + {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e51fc0a22021ec8905b9b00a2f7d25756f2ff7a653e35a790a2067ae126b51f6"}, + {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a56e6f980b89d7cfe5c43811dcf52d6f37b319428a4540511235dafda9ea7808"}, + {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0fec16adab8d3d3d6d74e3711a1f380836ebeab2a20e3f88cfe2ec5094d8b84"}, + {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e3de515801c954e8f1dc1f575282a4a86df9e782d4993ea1ed2be9a8dedaa0"}, + {file = "jiter-0.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17e0ad8abf0bb04d81810eaeaab35d2c99b5da11fcd1058e0a389607ff6503b0"}, + {file = "jiter-0.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8dc0132b728f3b3e90ff0d1874504cd49c78f3553bf3745168a7fc0b4cf674e1"}, + {file = "jiter-0.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81a883104aa96e494d3d28eaf7070780d03ecee8ccfdfaf7e4899710340c47f1"}, + {file = "jiter-0.4.0-cp38-none-win32.whl", hash = "sha256:a044c53ab1aaa4af624ac9574181b5bad8e260aea7e03104738156511433deba"}, + {file = "jiter-0.4.0-cp38-none-win_amd64.whl", hash = "sha256:d920035c869053e3d9a0b3ff94384d16a8ef5fde3dea55f97bd29916f6e27554"}, + {file = "jiter-0.4.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:091e978f4e586a2f1c69bf940d45f4e6a23455877172a0ab7d6de04a3b119299"}, + {file = "jiter-0.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79134b2d601309bcbe3304a262d7d228ad61d53c80883231c637773000a6d683"}, + {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c471473e0b05058b5d729ff04271b6d45a575ac8bd9948563268c734b380ac7e"}, + {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb84b8930da8b32b0b1fdff9817e2c4b47e8981b5647ad11c4975403416e4112"}, + {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f2805e28941751ebfe0948596a64cde4cfb9b84bea5282affd020063e659c96"}, + {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:42ef59f9e513bf081a8b5c5578933ea9c3a63e559e6e3501a3e72edcd456ff5e"}, + {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ae12e3906f9e565120ab569de261b738e3a1ec50c40e30c67499e4f893e9a8c"}, + {file = "jiter-0.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:264dc1324f45a793bc89af4f653225229eb17bca9ec7107dce6c8fb4fe68d20f"}, + {file = "jiter-0.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9a1c172ec47d846e25881dfbd52438ddb690da4ea04d185e477abd3db6c32f8a"}, + {file = "jiter-0.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ccde31d0bc114aedad0dbd71b7f63ba0f0eecd7ec9ae1926a0ca01c1eb2854e7"}, + {file = "jiter-0.4.0-cp39-none-win32.whl", hash = "sha256:13139b05792fbc13a0f9a5b4c89823ea0874141decae1b8f693f12bb1d28e061"}, + {file = "jiter-0.4.0-cp39-none-win_amd64.whl", hash = "sha256:3a729b2631c6d5551a41069697415fee9659c3eadc9ab87369376ba51930cd00"}, + {file = "jiter-0.4.0.tar.gz", hash = "sha256:68203e02e0419bc3eca717c580c2d8f615aeee1150e2a1fb68d6600a7e52a37c"}, +] + [[package]] name = "jmespath" version = "1.0.1" @@ -3846,13 +3921,13 @@ files = [ [[package]] name = "jupyter-client" -version = "8.6.1" +version = "8.6.2" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.6.1-py3-none-any.whl", hash = "sha256:3b7bd22f058434e3b9a7ea4b1500ed47de2713872288c0d511d19926f99b459f"}, - {file = "jupyter_client-8.6.1.tar.gz", hash = "sha256:e842515e2bab8e19186d89fdfea7abd15e39dd581f94e399f00e2af5a1652d3f"}, + {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, + {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, ] [package.dependencies] @@ -3864,7 +3939,7 @@ traitlets = ">=5.3" [package.extras] docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-core" @@ -3946,22 +4021,20 @@ adal = ["adal (>=1.0.2)"] [[package]] name = "langchain" -version = "0.1.20" +version = "0.2.1" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain-0.1.20-py3-none-any.whl", hash = "sha256:09991999fbd6c3421a12db3c7d1f52d55601fc41d9b2a3ef51aab2e0e9c38da9"}, - {file = "langchain-0.1.20.tar.gz", hash = "sha256:f35c95eed8c8375e02dce95a34f2fd4856a4c98269d6dc34547a23dba5beab7e"}, + {file = "langchain-0.2.1-py3-none-any.whl", hash = "sha256:3e13bf97c5717bce2c281f5117e8778823e8ccf62d949e73d3869448962b1c97"}, + {file = "langchain-0.2.1.tar.gz", hash = "sha256:5758a315e1ac92eb26dafec5ad0fafa03cafa686aba197d5bb0b1dd28cc03ebe"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" async-timeout = {version = ">=4.0.0,<5.0.0", markers = "python_version < \"3.11\""} -dataclasses-json = ">=0.5.7,<0.7" -langchain-community = ">=0.0.38,<0.1" -langchain-core = ">=0.1.52,<0.2.0" -langchain-text-splitters = ">=0.0.1,<0.1" +langchain-core = ">=0.2.0,<0.3.0" +langchain-text-splitters = ">=0.2.0,<0.3.0" langsmith = ">=0.1.17,<0.2.0" numpy = ">=1,<2" pydantic = ">=1,<3" @@ -3977,75 +4050,76 @@ cli = ["typer (>=0.9.0,<0.10.0)"] cohere = ["cohere (>=4,<6)"] docarray = ["docarray[hnswlib] (>=0.32.0,<0.33.0)"] embeddings = ["sentence-transformers (>=2,<3)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<6)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "langchain-openai (>=0.0.2,<0.1)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<6)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "langchain-openai (>=0.1,<0.2)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] javascript = ["esprima (>=4.0.1,<5.0.0)"] llms = ["clarifai (>=9.1.0)", "cohere (>=4,<6)", "huggingface_hub (>=0,<1)", "manifest-ml (>=0.0.1,<0.0.2)", "nlpcloud (>=1,<2)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "torch (>=1,<3)", "transformers (>=4,<5)"] -openai = ["openai (<2)", "tiktoken (>=0.3.2,<0.6.0)"] +openai = ["openai (<2)", "tiktoken (>=0.7,<1.0)"] qdrant = ["qdrant-client (>=1.3.1,<2.0.0)"] text-helpers = ["chardet (>=5.1.0,<6.0.0)"] [[package]] name = "langchain-anthropic" -version = "0.1.11" +version = "0.1.13" description = "An integration package connecting AnthropicMessages and LangChain" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_anthropic-0.1.11-py3-none-any.whl", hash = "sha256:21a9b72e14292f5f97d8a21ae1b3d799ff4d541fadc327deb7df62f1c96513a1"}, - {file = "langchain_anthropic-0.1.11.tar.gz", hash = "sha256:b00e01cb22dbfd6a111f2c713f0a056770ae6fb677c9271998d0e360e25c3d12"}, + {file = "langchain_anthropic-0.1.13-py3-none-any.whl", hash = "sha256:121f6f480da7685c239573d98322adb94fe486d40651ac341637f65da36881de"}, + {file = "langchain_anthropic-0.1.13.tar.gz", hash = "sha256:32e7ac51e1874c47e1a20493e75f5bfc88b0ffeaf5f1aed6091547e1ae44bb85"}, ] [package.dependencies] -anthropic = ">=0.23.0,<1" +anthropic = ">=0.26.0,<1" defusedxml = ">=0.7.1,<0.8.0" -langchain-core = ">=0.1.43,<0.2.0" +langchain-core = ">=0.1.43,<0.3" [[package]] name = "langchain-astradb" -version = "0.1.0" +version = "0.3.2" description = "An integration package connecting Astra DB and LangChain" optional = false -python-versions = ">=3.8.1,<4.0" +python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_astradb-0.1.0-py3-none-any.whl", hash = "sha256:c6686089da343fce8c31e36c9162323e88888300b09d56b72347a19449d7361f"}, - {file = "langchain_astradb-0.1.0.tar.gz", hash = "sha256:c8a3426c9daa2beeec2dc7a718186b0b9c388082e9543e0bc07363712cc3b947"}, + {file = "langchain_astradb-0.3.2-py3-none-any.whl", hash = "sha256:15afc5c0105e863e8f57bf8686490c00be47ed05e47d3263ad1577f2031c0dd5"}, + {file = "langchain_astradb-0.3.2.tar.gz", hash = "sha256:4316f2c59402779a347a811e1b5470a0570348cb89baac17472d860b63188122"}, ] [package.dependencies] -astrapy = ">=0.7.7,<0.8.0" -langchain-core = ">=0.1.31,<0.2.0" +astrapy = ">=1,<2" +langchain-core = ">=0.1.31,<0.3" numpy = ">=1,<2" [[package]] name = "langchain-cohere" -version = "0.1.4" +version = "0.1.5" description = "An integration package connecting Cohere and LangChain" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_cohere-0.1.4-py3-none-any.whl", hash = "sha256:c50b33fb6dc6552f696f03e4e2b9ab7bd5ffea4d8c14c37771dc765e9122dde8"}, - {file = "langchain_cohere-0.1.4.tar.gz", hash = "sha256:59058032158c9d94ff251bc9264cd69249878e6d4b1b5ed80f66c4f56e23ac9f"}, + {file = "langchain_cohere-0.1.5-py3-none-any.whl", hash = "sha256:f07bd53fadbebf744b8de1eebf977353f340f2010156821623a0c6247032ab9b"}, + {file = "langchain_cohere-0.1.5.tar.gz", hash = "sha256:d0be4e76079a74c4259fe4db2bab535d690efe0efac5e9e2fbf486476c0a85c8"}, ] [package.dependencies] -cohere = ">=5.3,<6.0" -langchain-core = ">=0.1.42,<0.2.0" +cohere = ">=5.5,<6.0" +langchain-core = ">=0.1.42,<0.3" [[package]] name = "langchain-community" -version = "0.0.38" +version = "0.2.1" description = "Community contributed LangChain integrations." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_community-0.0.38-py3-none-any.whl", hash = "sha256:ecb48660a70a08c90229be46b0cc5f6bc9f38f2833ee44c57dfab9bf3a2c121a"}, - {file = "langchain_community-0.0.38.tar.gz", hash = "sha256:127fc4b75bc67b62fe827c66c02e715a730fef8fe69bd2023d466bab06b5810d"}, + {file = "langchain_community-0.2.1-py3-none-any.whl", hash = "sha256:b834e2c5ded6903b839fcaf566eee90a0ffae53405a0f7748202725e701d39cd"}, + {file = "langchain_community-0.2.1.tar.gz", hash = "sha256:079942e8f15da975769ccaae19042b7bba5481c42020bbbd7d8cad73a9393261"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" -langchain-core = ">=0.1.52,<0.2.0" +langchain = ">=0.2.0,<0.3.0" +langchain-core = ">=0.2.0,<0.3.0" langsmith = ">=0.1.0,<0.2.0" numpy = ">=1,<2" PyYAML = ">=5.3" @@ -4055,17 +4129,17 @@ tenacity = ">=8.1.0,<9.0.0" [package.extras] cli = ["typer (>=0.9.0,<0.10.0)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "azure-identity (>=1.15.0,<2.0.0)", "azure-search-documents (==11.4.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.6,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cloudpickle (>=2.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "friendli-client (>=1.2.4,<2.0.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "httpx-sse (>=0.4.0,<0.5.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "oracledb (>=2.2.0,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "premai (>=0.3.25,<0.4.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pyjwt (>=2.8.0,<3.0.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "tidb-vector (>=0.0.3,<1.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "vdms (>=0.0.20,<0.0.21)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "azure-identity (>=1.15.0,<2.0.0)", "azure-search-documents (==11.4.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.6,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cloudpathlib (>=0.18,<0.19)", "cloudpickle (>=2.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "friendli-client (>=1.2.4,<2.0.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "httpx-sse (>=0.4.0,<0.5.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "oracledb (>=2.2.0,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "premai (>=0.3.25,<0.4.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pyjwt (>=2.8.0,<3.0.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "tidb-vector (>=0.0.3,<1.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "vdms (>=0.0.20,<0.0.21)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] [[package]] name = "langchain-core" -version = "0.1.52" +version = "0.2.1" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_core-0.1.52-py3-none-any.whl", hash = "sha256:62566749c92e8a1181c255c788548dc16dbc319d896cd6b9c95dc17af9b2a6db"}, - {file = "langchain_core-0.1.52.tar.gz", hash = "sha256:084c3fc452f5a6966c28ab3ec5dbc8b8d26fc3f63378073928f4e29d90b6393f"}, + {file = "langchain_core-0.2.1-py3-none-any.whl", hash = "sha256:3521e1e573988c47399fca9739270c5d34f8ecec147253ad829eb9ff288f76d5"}, + {file = "langchain_core-0.2.1.tar.gz", hash = "sha256:49383126168d934559a543ce812c485048d9e6ac9b6798fbf3d4a72b6bba5b0c"}, ] [package.dependencies] @@ -4081,141 +4155,139 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langchain-experimental" -version = "0.0.58" +version = "0.0.59" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_experimental-0.0.58-py3-none-any.whl", hash = "sha256:106d3bc7df3dd20687378db7534c2fc21e2589201d43de42f832a1e3913dd55b"}, - {file = "langchain_experimental-0.0.58.tar.gz", hash = "sha256:8ef10ff6b39f44ef468f8f21beb3749957d2262ec64d05db2719934936ca0285"}, + {file = "langchain_experimental-0.0.59-py3-none-any.whl", hash = "sha256:d6ceb586c15ad35fc619542e86d01f0984a94985324a78a9ed8cd87615ff265d"}, + {file = "langchain_experimental-0.0.59.tar.gz", hash = "sha256:3a93f5c328f6ee1cd4f9dd8792c535df2d5638cff0d778ee25546804b5282fda"}, ] [package.dependencies] -langchain = ">=0.1.17,<0.2.0" -langchain-core = ">=0.1.52,<0.2.0" +langchain-community = ">=0.2,<0.3" +langchain-core = ">=0.2,<0.3" [package.extras] extended-testing = ["faker (>=19.3.1,<20.0.0)", "jinja2 (>=3,<4)", "pandas (>=2.0.1,<3.0.0)", "presidio-analyzer (>=2.2.352,<3.0.0)", "presidio-anonymizer (>=2.2.352,<3.0.0)", "sentence-transformers (>=2,<3)", "tabulate (>=0.9.0,<0.10.0)", "vowpal-wabbit-next (==0.6.0)"] [[package]] name = "langchain-google-genai" -version = "1.0.3" +version = "1.0.5" description = "An integration package connecting Google's genai package and LangChain" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_google_genai-1.0.3-py3-none-any.whl", hash = "sha256:423fde5888ca9800fe6944a2f4ea5ed34cb9b37908092d9228f700ceefa365d8"}, - {file = "langchain_google_genai-1.0.3.tar.gz", hash = "sha256:c575782e7f5e48b93c061a20e8dc5c9549aeb526180a6bef4e057e80f07b821c"}, + {file = "langchain_google_genai-1.0.5-py3-none-any.whl", hash = "sha256:06b1af072e14fe2d4f9257be4bf883ccd544896094f847c2b1ab09b123ba3b9e"}, + {file = "langchain_google_genai-1.0.5.tar.gz", hash = "sha256:5b515192755fd396a1b61b33d1b08c77fb9b53394cc25954f9d7e9a0f615de9b"}, ] [package.dependencies] google-generativeai = ">=0.5.2,<0.6.0" -langchain-core = ">=0.1.45,<0.2" +langchain-core = ">=0.2.0,<0.3" [package.extras] images = ["pillow (>=10.1.0,<11.0.0)"] [[package]] name = "langchain-google-vertexai" -version = "1.0.3" +version = "1.0.4" description = "An integration package connecting Google VertexAI and LangChain" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_google_vertexai-1.0.3-py3-none-any.whl", hash = "sha256:407caa2b10cd20d4748cebfc6e405d28d8ef4a0e4f21b01739eca4e24c4f04d2"}, - {file = "langchain_google_vertexai-1.0.3.tar.gz", hash = "sha256:a3929bc07b971072e7cd21ffe28d843640faaf93763f473077d6786745cce247"}, + {file = "langchain_google_vertexai-1.0.4-py3-none-any.whl", hash = "sha256:f9d217df2d5cfafb2e551ddd5f1c43611222f542ee0df0cc3b5faed82e657ee3"}, + {file = "langchain_google_vertexai-1.0.4.tar.gz", hash = "sha256:bb2d2e93cc2896b9bdc96789c2df247f6392184dffc0c3dddc06889f2b530465"}, ] [package.dependencies] google-cloud-aiplatform = ">=1.47.0,<2.0.0" google-cloud-storage = ">=2.14.0,<3.0.0" -langchain-core = ">=0.1.42,<0.2.0" -types-protobuf = ">=4.24.0.4,<5.0.0.0" -types-requests = ">=2.31.0,<3.0.0" +langchain-core = ">=0.1.42,<0.3" [package.extras] anthropic = ["anthropic[vertexai] (>=0.23.0,<1)"] [[package]] name = "langchain-groq" -version = "0.1.3" +version = "0.1.4" description = "An integration package connecting Groq and LangChain" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_groq-0.1.3-py3-none-any.whl", hash = "sha256:1420c118507a85fbea560a67e3c881d880541a1e347d8c44da23dfd6bd14dcb9"}, - {file = "langchain_groq-0.1.3.tar.gz", hash = "sha256:1fefb70b01f413b407709df97cd85a881a7bcce743b0ad9cc8514b27c15e5951"}, + {file = "langchain_groq-0.1.4-py3-none-any.whl", hash = "sha256:83fa9252eb841dc29e7c0b77c5374fa26383b909c2e87eb54824ff0f9529f173"}, + {file = "langchain_groq-0.1.4.tar.gz", hash = "sha256:eb7e517cfcb245b0b598f93c1e87cc15100e336eb0c1b930c43e7a19dbe131d6"}, ] [package.dependencies] groq = ">=0.4.1,<1" -langchain-core = ">=0.1.45,<0.2.0" +langchain-core = ">=0.1.45,<0.3" [[package]] name = "langchain-mistralai" -version = "0.1.6" +version = "0.1.7" description = "An integration package connecting Mistral and LangChain" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_mistralai-0.1.6-py3-none-any.whl", hash = "sha256:def19e2e28512a86cd73e8cacd43d11086d4be6b9187bf8702a7e3505d5fdd32"}, - {file = "langchain_mistralai-0.1.6.tar.gz", hash = "sha256:03bd75b4fd1bfa04e8703109a1c6865923cbdcc9e435f1fbf26b84ea150b7162"}, + {file = "langchain_mistralai-0.1.7-py3-none-any.whl", hash = "sha256:4ab08ebafc5398767dbc4d6d371f4f2bc0974b01b02cb0ee71d351871a370479"}, + {file = "langchain_mistralai-0.1.7.tar.gz", hash = "sha256:44d3fb15ab10b5a04a2cc544d1292af3f884288a59de08a8d7bdd74ce50ddf75"}, ] [package.dependencies] httpx = ">=0.25.2,<1" httpx-sse = ">=0.3.1,<1" -langchain-core = ">=0.1.46,<0.2.0" -tokenizers = ">=0.15.1,<0.16.0" +langchain-core = ">=0.1.46,<0.3" +tokenizers = ">=0.15.1,<1" [[package]] name = "langchain-openai" -version = "0.1.6" +version = "0.1.7" description = "An integration package connecting OpenAI and LangChain" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_openai-0.1.6-py3-none-any.whl", hash = "sha256:7f62ecb12d3cdd0d96679abea00e4e3ceb1f829f6d1f127a5f7b97c1315d157f"}, - {file = "langchain_openai-0.1.6.tar.gz", hash = "sha256:7d2e838e57ef231cb7689fd58ac5fa8a6e9e504174f8c5698c837739786e2030"}, + {file = "langchain_openai-0.1.7-py3-none-any.whl", hash = "sha256:39c3cb22bb739900ae8294d4d9939a6138c0ca7ad11198e57038eb14c08d04ec"}, + {file = "langchain_openai-0.1.7.tar.gz", hash = "sha256:fd7e1c33ba8e2cab4b2154f3a2fd4a0d9cc6518b41cf49bb87255f9f732a4896"}, ] [package.dependencies] -langchain-core = ">=0.1.46,<0.2.0" +langchain-core = ">=0.1.46,<0.3" openai = ">=1.24.0,<2.0.0" -tiktoken = ">=0.5.2,<1" +tiktoken = ">=0.7,<1" [[package]] name = "langchain-pinecone" -version = "0.1.0" +version = "0.1.1" description = "An integration package connecting Pinecone and LangChain" optional = false python-versions = "<3.13,>=3.8.1" files = [ - {file = "langchain_pinecone-0.1.0-py3-none-any.whl", hash = "sha256:d957f27b1cceab425c3e8603c7a32533d4593ce8705242e78f6dc03aa71cf417"}, - {file = "langchain_pinecone-0.1.0.tar.gz", hash = "sha256:93f81e7c3926027cc6a87b001ee4d2e02a432a916709dbd395162b342bf84586"}, + {file = "langchain_pinecone-0.1.1-py3-none-any.whl", hash = "sha256:d2c2d11664533d75f9a5afa9a16e2a300f45e3f584250585c7145a8694298a21"}, + {file = "langchain_pinecone-0.1.1.tar.gz", hash = "sha256:e33492443ede67c56ed08b0cf8642a1fd93585869cb5afd23606b429f1b2c61a"}, ] [package.dependencies] -langchain-core = ">=0.1.40,<0.2.0" +langchain-core = ">=0.1.52,<0.3" numpy = ">=1,<2" pinecone-client = ">=3.2.2,<4.0.0" [[package]] name = "langchain-text-splitters" -version = "0.0.1" +version = "0.2.0" description = "LangChain text splitting utilities" optional = false -python-versions = ">=3.8.1,<4.0" +python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_text_splitters-0.0.1-py3-none-any.whl", hash = "sha256:f5b802f873f5ff6a8b9259ff34d53ed989666ef4e1582e6d1adb3b5520e3839a"}, - {file = "langchain_text_splitters-0.0.1.tar.gz", hash = "sha256:ac459fa98799f5117ad5425a9330b21961321e30bc19a2a2f9f761ddadd62aa1"}, + {file = "langchain_text_splitters-0.2.0-py3-none-any.whl", hash = "sha256:7b4c6a45f8471630a882b321e138329b6897102a5bc62f4c12be1c0b05bb9199"}, + {file = "langchain_text_splitters-0.2.0.tar.gz", hash = "sha256:b32ab4f7397f7d42c1fa3283fefc2547ba356bd63a68ee9092865e5ad83c82f9"}, ] [package.dependencies] -langchain-core = ">=0.1.28,<0.2.0" +langchain-core = ">=0.2.0,<0.3.0" [package.extras] -extended-testing = ["lxml (>=5.1.0,<6.0.0)"] +extended-testing = ["beautifulsoup4 (>=4.12.3,<5.0.0)", "lxml (>=4.9.3,<6.0)"] [[package]] name = "langchainhub" @@ -4234,7 +4306,7 @@ types-requests = ">=2.31.0.2,<3.0.0.0" [[package]] name = "langflow-base" -version = "0.0.44" +version = "0.0.48" description = "A Python package with a built-in web application" optional = false python-versions = ">=3.10,<3.13" @@ -4249,12 +4321,12 @@ cachetools = "^5.3.1" cryptography = "^42.0.5" docstring-parser = "^0.15" duckdb = "^0.10.2" -emoji = "^2.11.0" -fastapi = "^0.110.1" +emoji = "^2.12.0" +fastapi = "^0.111.0" gunicorn = "^22.0.0" httpx = "*" jq = {version = "^1.7.0", markers = "sys_platform != \"win32\""} -langchain = "~0.1.16" +langchain = "~0.2.0" langchain-experimental = "*" langchainhub = "~0.1.15" loguru = "^0.7.1" @@ -4265,15 +4337,15 @@ pandas = "2.2.0" passlib = "^1.7.4" pillow = "^10.2.0" platformdirs = "^4.2.0" -pydantic = "^2.5.0" -pydantic-settings = "^2.1.0" -pypdf = "^4.1.0" +pydantic = "^2.7.0" +pydantic-settings = "^2.2.0" +pypdf = "^4.2.0" python-docx = "^1.1.0" python-jose = "^3.3.0" python-multipart = "^0.0.7" python-socketio = "^5.11.0" rich = "^13.7.0" -sqlmodel = "^0.0.16" +sqlmodel = "^0.0.18" typer = "^0.12.0" uvicorn = "^0.29.0" websockets = "*" @@ -4289,13 +4361,13 @@ url = "src/backend/base" [[package]] name = "langfuse" -version = "2.30.0" +version = "2.33.0" description = "A client library for accessing langfuse" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langfuse-2.30.0-py3-none-any.whl", hash = "sha256:f5bb91f6fc8f16d99a0f685e57e2d2b2c00edc51c4238f499916a2e7f6810fb5"}, - {file = "langfuse-2.30.0.tar.gz", hash = "sha256:22b2612ba1a78f6bbf173a287e7d77ba9ad9a640d440949a3a7f9c249a777278"}, + {file = "langfuse-2.33.0-py3-none-any.whl", hash = "sha256:362e3078c5a891df0b7ba3c9ce82f046d1f0274eab3d55337e443fff526f18ad"}, + {file = "langfuse-2.33.0.tar.gz", hash = "sha256:3ca2ef8539a8f28cb80135f4b46b80d5585ce183f8e2035f318be296d09d7d88"}, ] [package.dependencies] @@ -4313,13 +4385,13 @@ openai = ["openai (>=0.27.8)"] [[package]] name = "langsmith" -version = "0.1.57" +version = "0.1.63" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.57-py3-none-any.whl", hash = "sha256:dbd83b0944a2fbea4151f0aa053530d93fcf6784a580621bc60633cb890b57dc"}, - {file = "langsmith-0.1.57.tar.gz", hash = "sha256:4682204de19f0218029c2b8445ce2cc3485c8d0df9796b31e2ce4c9051fce365"}, + {file = "langsmith-0.1.63-py3-none-any.whl", hash = "sha256:7810afdf5e3f3b472fc581a29371fb96cd843dde2149e048d1b9610325159d1e"}, + {file = "langsmith-0.1.63.tar.gz", hash = "sha256:a609405b52f6f54df442a142cbf19ab38662d54e532f96028b4c546434d4afdf"}, ] [package.dependencies] @@ -4327,32 +4399,15 @@ orjson = ">=3.9.14,<4.0.0" pydantic = ">=1,<3" requests = ">=2,<3" -[[package]] -name = "lark" -version = "1.1.8" -description = "a modern parsing library" -optional = false -python-versions = ">=3.6" -files = [ - {file = "lark-1.1.8-py3-none-any.whl", hash = "sha256:7d2c221a66a8165f3f81aacb958d26033d40d972fdb70213ab0a2e0627e29c86"}, - {file = "lark-1.1.8.tar.gz", hash = "sha256:7ef424db57f59c1ffd6f0d4c2b705119927f566b68c0fe1942dddcc0e44391a5"}, -] - -[package.extras] -atomic-cache = ["atomicwrites"] -interegular = ["interegular (>=0.3.1,<0.4.0)"] -nearley = ["js2py"] -regex = ["regex"] - [[package]] name = "litellm" -version = "1.37.9" +version = "1.38.1" description = "Library to easily interface with LLM API providers" optional = false python-versions = "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3.8" files = [ - {file = "litellm-1.37.9-py3-none-any.whl", hash = "sha256:f5e96df4e28e302a5df4e8f5599ac35ffbeebbacf4d68f4c609155e24ba8fa03"}, - {file = "litellm-1.37.9.tar.gz", hash = "sha256:2a2fecacde1e3a414b3865c99e5be3b5cffd21433e2648f660116f1ac9333294"}, + {file = "litellm-1.38.1-py3-none-any.whl", hash = "sha256:03e0bf79fbdf0285f5b2c185f8507056dea0481cb668a63fa1641058795af0c9"}, + {file = "litellm-1.38.1.tar.gz", hash = "sha256:8eed177d5883f11c3f7bdcc78d41379efbff921460c065534cf0f7ef011b0610"}, ] [package.dependencies] @@ -4360,7 +4415,7 @@ aiohttp = "*" click = "*" importlib-metadata = ">=6.8.0" jinja2 = ">=3.1.2,<4.0.0" -openai = ">=1.0.0" +openai = ">=1.27.0" python-dotenv = ">=0.2.0" requests = ">=2.31.0,<3.0.0" tiktoken = ">=0.4.0" @@ -4372,12 +4427,12 @@ proxy = ["PyJWT (>=2.8.0,<3.0.0)", "apscheduler (>=3.10.4,<4.0.0)", "backoff", " [[package]] name = "llama-cpp-python" -version = "0.2.74" +version = "0.2.75" description = "Python bindings for the llama.cpp library" optional = true python-versions = ">=3.8" files = [ - {file = "llama_cpp_python-0.2.74.tar.gz", hash = "sha256:2da38f4e58cfd1d742da2d944d1e3cc0256a8c466698920230497d7e361287c8"}, + {file = "llama_cpp_python-0.2.75.tar.gz", hash = "sha256:aee9383935c42e812ee84265b1dafe5f0e3a20ee47216529b64a2ed6caaaed44"}, ] [package.dependencies] @@ -4394,19 +4449,19 @@ test = ["httpx (>=0.24.1)", "pytest (>=7.4.0)", "scipy (>=1.10)"] [[package]] name = "llama-index" -version = "0.10.37" +version = "0.10.38" description = "Interface between LLMs and your data" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "llama_index-0.10.37-py3-none-any.whl", hash = "sha256:da8871c5c8e5d038e56c0e5cb8c18a81ddc4117bf403bace95b4cec212f88fb9"}, - {file = "llama_index-0.10.37.tar.gz", hash = "sha256:d5057fd609e2423e75a4695242ab030d1647e4f07cb46faf9476ab504005f033"}, + {file = "llama_index-0.10.38-py3-none-any.whl", hash = "sha256:5d521b0ea7111679521292432960d3b9fb53c98d55414bd42d753bc6271d234d"}, + {file = "llama_index-0.10.38.tar.gz", hash = "sha256:5281cfa8b6e7f0f5f12897c00adcd790f7b51c130037f3561fd5630fca37bfb3"}, ] [package.dependencies] llama-index-agent-openai = ">=0.1.4,<0.3.0" llama-index-cli = ">=0.1.2,<0.2.0" -llama-index-core = ">=0.10.35,<0.11.0" +llama-index-core = ">=0.10.38,<0.11.0" llama-index-embeddings-openai = ">=0.1.5,<0.2.0" llama-index-indices-managed-llama-cloud = ">=0.1.2,<0.2.0" llama-index-legacy = ">=0.9.48,<0.10.0" @@ -4451,13 +4506,13 @@ llama-index-llms-openai = ">=0.1.1,<0.2.0" [[package]] name = "llama-index-core" -version = "0.10.36" +version = "0.10.38.post2" description = "Interface between LLMs and your data" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "llama_index_core-0.10.36-py3-none-any.whl", hash = "sha256:a6e8ea790e5b3656a254d9b47f8c00044dd46aae1cd43004c5d1303a7502b3e6"}, - {file = "llama_index_core-0.10.36.tar.gz", hash = "sha256:02f06bdefb5c6fd11dee1f65007a98decf3b266ad76136b7cfd3bec44efc5493"}, + {file = "llama_index_core-0.10.38.post2-py3-none-any.whl", hash = "sha256:b4b55449bac458d339e84d8d26f322b4dc9f36d3682ebb41fccf5594c295620f"}, + {file = "llama_index_core-0.10.38.post2.tar.gz", hash = "sha256:9eff6e16e9045deca9cb58bcf2a4b9ba39d0da12d7493e6aebaa5badd3b3ebb5"}, ] [package.dependencies] @@ -4485,23 +4540,15 @@ typing-extensions = ">=4.5.0" typing-inspect = ">=0.8.0" wrapt = "*" -[package.extras] -gradientai = ["gradientai (>=1.4.0)"] -html = ["beautifulsoup4 (>=4.12.2,<5.0.0)"] -langchain = ["langchain (>=0.0.303)"] -local-models = ["optimum[onnxruntime] (>=1.13.2,<2.0.0)", "sentencepiece (>=0.1.99,<0.2.0)", "transformers[torch] (>=4.33.1,<5.0.0)"] -postgres = ["asyncpg (>=0.29.0,<0.30.0)", "pgvector (>=0.2.4,<0.3.0)", "psycopg2-binary (>=2.9.9,<3.0.0)"] -query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "lm-format-enforcer (>=0.4.3,<0.5.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "scikit-learn", "spacy (>=3.7.1,<4.0.0)"] - [[package]] name = "llama-index-embeddings-openai" -version = "0.1.9" +version = "0.1.10" description = "llama-index embeddings openai integration" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "llama_index_embeddings_openai-0.1.9-py3-none-any.whl", hash = "sha256:fbd16d6197b91f4dbdc6d0707e573cc224ac2b0a48d5b370c6232dd8a2282473"}, - {file = "llama_index_embeddings_openai-0.1.9.tar.gz", hash = "sha256:0fd292b2f9a0ad4534a790d6374726bc885853188087eb018167dcf239643924"}, + {file = "llama_index_embeddings_openai-0.1.10-py3-none-any.whl", hash = "sha256:c3cfa83b537ded34d035fc172a945dd444c87fb58a89b02dfbf785b675f9f681"}, + {file = "llama_index_embeddings_openai-0.1.10.tar.gz", hash = "sha256:1bc1fc9b46773a12870c5d3097d3735d7ca33805f12462a8e35ae8a6e5ce1cf6"}, ] [package.dependencies] @@ -4563,13 +4610,13 @@ query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "l [[package]] name = "llama-index-llms-openai" -version = "0.1.19" +version = "0.1.20" description = "llama-index llms openai integration" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "llama_index_llms_openai-0.1.19-py3-none-any.whl", hash = "sha256:2bd98ff3abbb4aa0daed1fbe01d8b69f8270ab86c53f8da51fc9f148a672264c"}, - {file = "llama_index_llms_openai-0.1.19.tar.gz", hash = "sha256:f61b64a997892e424fb3cd547090d279c5b210ef15b614fc39de854d3ccaa7e7"}, + {file = "llama_index_llms_openai-0.1.20-py3-none-any.whl", hash = "sha256:f27401acdf9f65bf4d866a100615dcbd81987b890ae5fa9c513d544ba6d711e7"}, + {file = "llama_index_llms_openai-0.1.20.tar.gz", hash = "sha256:0282e4e252893487afd72383b46da5b28ddcd3fb73bace1caefce8a36e9cf492"}, ] [package.dependencies] @@ -4624,18 +4671,18 @@ llama-index-program-openai = ">=0.1.1,<0.2.0" [[package]] name = "llama-index-readers-file" -version = "0.1.22" +version = "0.1.23" description = "llama-index readers file integration" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "llama_index_readers_file-0.1.22-py3-none-any.whl", hash = "sha256:a8d4a69a9ea659c14ebb22ca9a5560b9c7ec6f501e7f68f6c52f591374165376"}, - {file = "llama_index_readers_file-0.1.22.tar.gz", hash = "sha256:37de54ad0cfbdc607c195532b9a292417a4714f57773570b87027b8dc381f0e2"}, + {file = "llama_index_readers_file-0.1.23-py3-none-any.whl", hash = "sha256:32450d0a3edc6ef6af575f814beec39cd3a3351eaf0e3c97045bdd72a7a7b38d"}, + {file = "llama_index_readers_file-0.1.23.tar.gz", hash = "sha256:fde8ecb588e703849e51dc0f075f56d1f5db3bc1479dd00c21b42e93b81b6267"}, ] [package.dependencies] beautifulsoup4 = ">=4.12.3,<5.0.0" -llama-index-core = ">=0.10.1,<0.11.0" +llama-index-core = ">=0.10.37.post1,<0.11.0" pypdf = ">=4.0.1,<5.0.0" striprtf = ">=0.0.26,<0.0.27" @@ -4688,13 +4735,13 @@ pydantic = ">=1.10" [[package]] name = "locust" -version = "2.27.0" -description = "Developer friendly load testing framework" +version = "2.28.0" +description = "Developer-friendly load testing framework" optional = false python-versions = ">=3.9" files = [ - {file = "locust-2.27.0-py3-none-any.whl", hash = "sha256:c4db5747eb9a3851216deae8147143d335db41978a9291ac32e113fa9ec8ad39"}, - {file = "locust-2.27.0.tar.gz", hash = "sha256:0c6d3d2523976dafe734012c41b2f7d9ad7120cbcea76d47d80cec5d6d139905"}, + {file = "locust-2.28.0-py3-none-any.whl", hash = "sha256:766be879db030c0118e7d9fca712f3538c4e628bdebf59468fa1c6c2fab217d3"}, + {file = "locust-2.28.0.tar.gz", hash = "sha256:260557eec866f7e34a767b6c916b5b278167562a280480aadb88f43d962fbdeb"}, ] [package.dependencies] @@ -4703,7 +4750,7 @@ flask = ">=2.0.0" Flask-Cors = ">=3.0.10" Flask-Login = ">=0.6.3" gevent = ">=22.10.2" -geventhttpclient = "2.2.1" +geventhttpclient = ">=2.3.1" msgpack = ">=1.0.0" psutil = ">=5.9.1" pywin32 = {version = "*", markers = "platform_system == \"Windows\""} @@ -4811,9 +4858,13 @@ files = [ {file = "lxml-5.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:edcfa83e03370032a489430215c1e7783128808fd3e2e0a3225deee278585196"}, {file = "lxml-5.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28bf95177400066596cdbcfc933312493799382879da504633d16cf60bba735b"}, {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a745cc98d504d5bd2c19b10c79c61c7c3df9222629f1b6210c0368177589fb8"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b590b39ef90c6b22ec0be925b211298e810b4856909c8ca60d27ffbca6c12e6"}, {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b336b0416828022bfd5a2e3083e7f5ba54b96242159f83c7e3eebaec752f1716"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:c2faf60c583af0d135e853c86ac2735ce178f0e338a3c7f9ae8f622fd2eb788c"}, {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:4bc6cb140a7a0ad1f7bc37e018d0ed690b7b6520ade518285dc3171f7a117905"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7ff762670cada8e05b32bf1e4dc50b140790909caa8303cfddc4d702b71ea184"}, {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:57f0a0bbc9868e10ebe874e9f129d2917750adf008fe7b9c1598c0fbbfdde6a6"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:a6d2092797b388342c1bc932077ad232f914351932353e2e8706851c870bca1f"}, {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:60499fe961b21264e17a471ec296dcbf4365fbea611bf9e303ab69db7159ce61"}, {file = "lxml-5.2.2-cp37-cp37m-win32.whl", hash = "sha256:d9b342c76003c6b9336a80efcc766748a333573abf9350f4094ee46b006ec18f"}, {file = "lxml-5.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b16db2770517b8799c79aa80f4053cd6f8b716f21f8aca962725a9565ce3ee40"}, @@ -4903,6 +4954,21 @@ babel = ["Babel"] lingua = ["lingua"] testing = ["pytest"] +[[package]] +name = "markdown" +version = "3.6" +description = "Python implementation of John Gruber's Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, + {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, +] + +[package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] + [[package]] name = "markdown-it-py" version = "3.0.0" @@ -5272,21 +5338,6 @@ files = [ {file = "msgpack-1.0.8.tar.gz", hash = "sha256:95c02b0e27e706e48d0e5426d1710ca78e0f0628d6e89d5b5a5b91a5f12274f3"}, ] -[[package]] -name = "msoffcrypto-tool" -version = "5.4.0" -description = "Python tool and library for decrypting and encrypting MS Office files using a password or other keys" -optional = false -python-versions = "<4.0,>=3.8" -files = [ - {file = "msoffcrypto_tool-5.4.0-py3-none-any.whl", hash = "sha256:0e39319f982c22a449505e5ab7da18a8ae76376a0008e180e1528a0875525da7"}, - {file = "msoffcrypto_tool-5.4.0.tar.gz", hash = "sha256:0f5f45d91d1eaa2ca0b3adefb5aac4932afb50c678dfa8d7da390d187f1dac39"}, -] - -[package.dependencies] -cryptography = ">=35.0" -olefile = ">=0.46" - [[package]] name = "multidict" version = "6.0.5" @@ -5501,31 +5552,6 @@ doc = ["myst-nb (>=1.0)", "numpydoc (>=1.7)", "pillow (>=9.4)", "pydata-sphinx-t extra = ["lxml (>=4.6)", "pydot (>=2.0)", "pygraphviz (>=1.12)", "sympy (>=1.10)"] test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] -[[package]] -name = "nltk" -version = "3.8.1" -description = "Natural Language Toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"}, - {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"}, -] - -[package.dependencies] -click = "*" -joblib = "*" -regex = ">=2021.8.3" -tqdm = "*" - -[package.extras] -all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"] -corenlp = ["requests"] -machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"] -plot = ["matplotlib"] -tgrep = ["pyparsing"] -twitter = ["twython"] - [[package]] name = "nodeenv" version = "1.8.0" @@ -5748,13 +5774,13 @@ files = [ [[package]] name = "nvidia-nvjitlink-cu12" -version = "12.4.127" +version = "12.5.40" description = "Nvidia JIT LTO Library" optional = true python-versions = ">=3" files = [ - {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:06b3b9b25bf3f8af351d664978ca26a16d2c5127dbd53c0497e28d1fb9611d57"}, - {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-win_amd64.whl", hash = "sha256:fd9020c501d27d135f983c6d3e244b197a7ccad769e34df53a42e276b0e25fa1"}, + {file = "nvidia_nvjitlink_cu12-12.5.40-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d9714f27c1d0f0895cd8915c07a87a1d0029a0aa36acaf9156952ec2a8a12189"}, + {file = "nvidia_nvjitlink_cu12-12.5.40-py3-none-win_amd64.whl", hash = "sha256:c3401dc8543b52d3a8158007a0c1ab4e9c768fcbd24153a48c86972102197ddd"}, ] [[package]] @@ -5784,74 +5810,38 @@ rsa = ["cryptography (>=3.0.0)"] signals = ["blinker (>=1.4.0)"] signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] -[[package]] -name = "olefile" -version = "0.47" -description = "Python package to parse, read and write Microsoft OLE2 files (Structured Storage or Compound Document, Microsoft Office)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "olefile-0.47-py2.py3-none-any.whl", hash = "sha256:543c7da2a7adadf21214938bb79c83ea12b473a4b6ee4ad4bf854e7715e13d1f"}, - {file = "olefile-0.47.zip", hash = "sha256:599383381a0bf3dfbd932ca0ca6515acd174ed48870cbf7fee123d698c192c1c"}, -] - -[package.extras] -tests = ["pytest", "pytest-cov"] - -[[package]] -name = "oletools" -version = "0.60.1" -description = "Python tools to analyze security characteristics of MS Office and OLE files (also called Structured Storage, Compound File Binary Format or Compound Document File Format), for Malware Analysis and Incident Response #DFIR" -optional = false -python-versions = "*" -files = [ - {file = "oletools-0.60.1-py2.py3-none-any.whl", hash = "sha256:edef92374e688989a39269eb9a11142fb20a023629c23538c849c14d1d1144ea"}, - {file = "oletools-0.60.1.zip", hash = "sha256:67a796da4c4b8e2feb9a6b2495bef8798a3323a75512de4e5669d9dc9d1fae31"}, -] - -[package.dependencies] -colorclass = "*" -easygui = "*" -msoffcrypto-tool = {version = "*", markers = "platform_python_implementation != \"PyPy\" or python_version >= \"3\" and (platform_system != \"Windows\" and platform_system != \"Darwin\")"} -olefile = ">=0.46" -pcodedmp = ">=1.2.5" -pyparsing = ">=2.1.0,<3" - -[package.extras] -full = ["XLMMacroDeobfuscator"] - [[package]] name = "onnxruntime" -version = "1.17.3" +version = "1.18.0" description = "ONNX Runtime is a runtime accelerator for Machine Learning models" optional = false python-versions = "*" files = [ - {file = "onnxruntime-1.17.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d86dde9c0bb435d709e51bd25991c9fe5b9a5b168df45ce119769edc4d198b15"}, - {file = "onnxruntime-1.17.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9d87b68bf931ac527b2d3c094ead66bb4381bac4298b65f46c54fe4d1e255865"}, - {file = "onnxruntime-1.17.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26e950cf0333cf114a155f9142e71da344d2b08dfe202763a403ae81cc02ebd1"}, - {file = "onnxruntime-1.17.3-cp310-cp310-win32.whl", hash = "sha256:0962a4d0f5acebf62e1f0bf69b6e0adf16649115d8de854c1460e79972324d68"}, - {file = "onnxruntime-1.17.3-cp310-cp310-win_amd64.whl", hash = "sha256:468ccb8a0faa25c681a41787b1594bf4448b0252d3efc8b62fd8b2411754340f"}, - {file = "onnxruntime-1.17.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e8cd90c1c17d13d47b89ab076471e07fb85467c01dcd87a8b8b5cdfbcb40aa51"}, - {file = "onnxruntime-1.17.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a058b39801baefe454eeb8acf3ada298c55a06a4896fafc224c02d79e9037f60"}, - {file = "onnxruntime-1.17.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f823d5eb4807007f3da7b27ca972263df6a1836e6f327384eb266274c53d05d"}, - {file = "onnxruntime-1.17.3-cp311-cp311-win32.whl", hash = "sha256:b66b23f9109e78ff2791628627a26f65cd335dcc5fbd67ff60162733a2f7aded"}, - {file = "onnxruntime-1.17.3-cp311-cp311-win_amd64.whl", hash = "sha256:570760ca53a74cdd751ee49f13de70d1384dcf73d9888b8deac0917023ccda6d"}, - {file = "onnxruntime-1.17.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:77c318178d9c16e9beadd9a4070d8aaa9f57382c3f509b01709f0f010e583b99"}, - {file = "onnxruntime-1.17.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23da8469049b9759082e22c41a444f44a520a9c874b084711b6343672879f50b"}, - {file = "onnxruntime-1.17.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2949730215af3f9289008b2e31e9bbef952012a77035b911c4977edea06f3f9e"}, - {file = "onnxruntime-1.17.3-cp312-cp312-win32.whl", hash = "sha256:6c7555a49008f403fb3b19204671efb94187c5085976ae526cb625f6ede317bc"}, - {file = "onnxruntime-1.17.3-cp312-cp312-win_amd64.whl", hash = "sha256:58672cf20293a1b8a277a5c6c55383359fcdf6119b2f14df6ce3b140f5001c39"}, - {file = "onnxruntime-1.17.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:4395ba86e3c1e93c794a00619ef1aec597ab78f5a5039f3c6d2e9d0695c0a734"}, - {file = "onnxruntime-1.17.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdf354c04344ec38564fc22394e1fe08aa6d70d790df00159205a0055c4a4d3f"}, - {file = "onnxruntime-1.17.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a94b600b7af50e922d44b95a57981e3e35103c6e3693241a03d3ca204740bbda"}, - {file = "onnxruntime-1.17.3-cp38-cp38-win32.whl", hash = "sha256:5a335c76f9c002a8586c7f38bc20fe4b3725ced21f8ead835c3e4e507e42b2ab"}, - {file = "onnxruntime-1.17.3-cp38-cp38-win_amd64.whl", hash = "sha256:8f56a86fbd0ddc8f22696ddeda0677b041381f4168a2ca06f712ef6ec6050d6d"}, - {file = "onnxruntime-1.17.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:e0ae39f5452278cd349520c296e7de3e90d62dc5b0157c6868e2748d7f28b871"}, - {file = "onnxruntime-1.17.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ff2dc012bd930578aff5232afd2905bf16620815f36783a941aafabf94b3702"}, - {file = "onnxruntime-1.17.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf6c37483782e4785019b56e26224a25e9b9a35b849d0169ce69189867a22bb1"}, - {file = "onnxruntime-1.17.3-cp39-cp39-win32.whl", hash = "sha256:351bf5a1140dcc43bfb8d3d1a230928ee61fcd54b0ea664c8e9a889a8e3aa515"}, - {file = "onnxruntime-1.17.3-cp39-cp39-win_amd64.whl", hash = "sha256:57a3de15778da8d6cc43fbf6cf038e1e746146300b5f0b1fbf01f6f795dc6440"}, + {file = "onnxruntime-1.18.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:5a3b7993a5ecf4a90f35542a4757e29b2d653da3efe06cdd3164b91167bbe10d"}, + {file = "onnxruntime-1.18.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15b944623b2cdfe7f7945690bfb71c10a4531b51997c8320b84e7b0bb59af902"}, + {file = "onnxruntime-1.18.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e61ce5005118064b1a0ed73ebe936bc773a102f067db34108ea6c64dd62a179"}, + {file = "onnxruntime-1.18.0-cp310-cp310-win32.whl", hash = "sha256:a4fc8a2a526eb442317d280610936a9f73deece06c7d5a91e51570860802b93f"}, + {file = "onnxruntime-1.18.0-cp310-cp310-win_amd64.whl", hash = "sha256:71ed219b768cab004e5cd83e702590734f968679bf93aa488c1a7ffbe6e220c3"}, + {file = "onnxruntime-1.18.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:3d24bd623872a72a7fe2f51c103e20fcca2acfa35d48f2accd6be1ec8633d960"}, + {file = "onnxruntime-1.18.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f15e41ca9b307a12550bfd2ec93f88905d9fba12bab7e578f05138ad0ae10d7b"}, + {file = "onnxruntime-1.18.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f45ca2887f62a7b847d526965686b2923efa72538c89b7703c7b3fe970afd59"}, + {file = "onnxruntime-1.18.0-cp311-cp311-win32.whl", hash = "sha256:9e24d9ecc8781323d9e2eeda019b4b24babc4d624e7d53f61b1fe1a929b0511a"}, + {file = "onnxruntime-1.18.0-cp311-cp311-win_amd64.whl", hash = "sha256:f8608398976ed18aef450d83777ff6f77d0b64eced1ed07a985e1a7db8ea3771"}, + {file = "onnxruntime-1.18.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:f1d79941f15fc40b1ee67738b2ca26b23e0181bf0070b5fb2984f0988734698f"}, + {file = "onnxruntime-1.18.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99e8caf3a8565c853a22d323a3eebc2a81e3de7591981f085a4f74f7a60aab2d"}, + {file = "onnxruntime-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:498d2b8380635f5e6ebc50ec1b45f181588927280f32390fb910301d234f97b8"}, + {file = "onnxruntime-1.18.0-cp312-cp312-win32.whl", hash = "sha256:ba7cc0ce2798a386c082aaa6289ff7e9bedc3dee622eef10e74830cff200a72e"}, + {file = "onnxruntime-1.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:1fa175bd43f610465d5787ae06050c81f7ce09da2bf3e914eb282cb8eab363ef"}, + {file = "onnxruntime-1.18.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:0284c579c20ec8b1b472dd190290a040cc68b6caec790edb960f065d15cf164a"}, + {file = "onnxruntime-1.18.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d47353d036d8c380558a5643ea5f7964d9d259d31c86865bad9162c3e916d1f6"}, + {file = "onnxruntime-1.18.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:885509d2b9ba4b01f08f7fa28d31ee54b6477953451c7ccf124a84625f07c803"}, + {file = "onnxruntime-1.18.0-cp38-cp38-win32.whl", hash = "sha256:8614733de3695656411d71fc2f39333170df5da6c7efd6072a59962c0bc7055c"}, + {file = "onnxruntime-1.18.0-cp38-cp38-win_amd64.whl", hash = "sha256:47af3f803752fce23ea790fd8d130a47b2b940629f03193f780818622e856e7a"}, + {file = "onnxruntime-1.18.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:9153eb2b4d5bbab764d0aea17adadffcfc18d89b957ad191b1c3650b9930c59f"}, + {file = "onnxruntime-1.18.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c7fd86eca727c989bb8d9c5104f3c45f7ee45f445cc75579ebe55d6b99dfd7c"}, + {file = "onnxruntime-1.18.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ac67a4de9c1326c4d87bcbfb652c923039b8a2446bb28516219236bec3b494f5"}, + {file = "onnxruntime-1.18.0-cp39-cp39-win32.whl", hash = "sha256:6ffb445816d06497df7a6dd424b20e0b2c39639e01e7fe210e247b82d15a23b9"}, + {file = "onnxruntime-1.18.0-cp39-cp39-win_amd64.whl", hash = "sha256:46de6031cb6745f33f7eca9e51ab73e8c66037fb7a3b6b4560887c5b55ab5d5d"}, ] [package.dependencies] @@ -5864,13 +5854,13 @@ sympy = "*" [[package]] name = "openai" -version = "1.30.1" +version = "1.30.2" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.30.1-py3-none-any.whl", hash = "sha256:c9fb3c3545c118bbce8deb824397b9433a66d0d0ede6a96f7009c95b76de4a46"}, - {file = "openai-1.30.1.tar.gz", hash = "sha256:4f85190e577cba0b066e1950b8eb9b11d25bc7ebcc43a86b326ce1bfa564ec74"}, + {file = "openai-1.30.2-py3-none-any.whl", hash = "sha256:44316818fbff3845278e862a655c4c041e93d907b04eff64629c2835f29bd58e"}, + {file = "openai-1.30.2.tar.gz", hash = "sha256:f86780f40505de60fa389993d9b7f5564f20acfbe5efcabd5c853a12453af2b0"}, ] [package.dependencies] @@ -6275,21 +6265,6 @@ bcrypt = ["bcrypt (>=3.1.0)"] build-docs = ["cloud-sptheme (>=1.10.1)", "sphinx (>=1.6)", "sphinxcontrib-fulltoc (>=1.2.0)"] totp = ["cryptography"] -[[package]] -name = "pcodedmp" -version = "1.2.6" -description = "A VBA p-code disassembler" -optional = false -python-versions = "*" -files = [ - {file = "pcodedmp-1.2.6-py2.py3-none-any.whl", hash = "sha256:4441f7c0ab4cbda27bd4668db3b14f36261d86e5059ce06c0828602cbe1c4278"}, - {file = "pcodedmp-1.2.6.tar.gz", hash = "sha256:025f8c809a126f45a082ffa820893e6a8d990d9d7ddb68694b5a9f0a6dbcd955"}, -] - -[package.dependencies] -oletools = ">=0.54" -win-unicode-console = {version = "*", markers = "platform_system == \"Windows\" and platform_python_implementation != \"PyPy\""} - [[package]] name = "pexpect" version = "4.9.0" @@ -6428,13 +6403,13 @@ grpc = ["googleapis-common-protos (>=1.53.0)", "grpc-gateway-protoc-gen-openapiv [[package]] name = "platformdirs" -version = "4.2.1" +version = "4.2.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, - {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [package.extras] @@ -6814,53 +6789,6 @@ files = [ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] -[[package]] -name = "pulsar-client" -version = "3.5.0" -description = "Apache Pulsar Python client library" -optional = false -python-versions = "*" -files = [ - {file = "pulsar_client-3.5.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:c18552edb2f785de85280fe624bc507467152bff810fc81d7660fa2dfa861f38"}, - {file = "pulsar_client-3.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18d438e456c146f01be41ef146f649dedc8f7bc714d9eaef94cff2e34099812b"}, - {file = "pulsar_client-3.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18a26a0719841103c7a89eb1492c4a8fedf89adaa386375baecbb4fa2707e88f"}, - {file = "pulsar_client-3.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ab0e1605dc5f44a126163fd06cd0a768494ad05123f6e0de89a2c71d6e2d2319"}, - {file = "pulsar_client-3.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdef720891b97656fdce3bf5913ea7729b2156b84ba64314f432c1e72c6117fa"}, - {file = "pulsar_client-3.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:a42544e38773191fe550644a90e8050579476bb2dcf17ac69a4aed62a6cb70e7"}, - {file = "pulsar_client-3.5.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:fd94432ea5d398ea78f8f2e09a217ec5058d26330c137a22690478c031e116da"}, - {file = "pulsar_client-3.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6252ae462e07ece4071213fdd9c76eab82ca522a749f2dc678037d4cbacd40b"}, - {file = "pulsar_client-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03b4d440b2d74323784328b082872ee2f206c440b5d224d7941eb3c083ec06c6"}, - {file = "pulsar_client-3.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f60af840b8d64a2fac5a0c1ce6ae0ddffec5f42267c6ded2c5e74bad8345f2a1"}, - {file = "pulsar_client-3.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2277a447c3b7f6571cb1eb9fc5c25da3fdd43d0b2fb91cf52054adfadc7d6842"}, - {file = "pulsar_client-3.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:f20f3e9dd50db2a37059abccad42078b7a4754b8bc1d3ae6502e71c1ad2209f0"}, - {file = "pulsar_client-3.5.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:d61f663d85308e12f44033ba95af88730f581a7e8da44f7a5c080a3aaea4878d"}, - {file = "pulsar_client-3.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a1ba0be25b6f747bcb28102b7d906ec1de48dc9f1a2d9eacdcc6f44ab2c9e17"}, - {file = "pulsar_client-3.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a181e3e60ac39df72ccb3c415d7aeac61ad0286497a6e02739a560d5af28393a"}, - {file = "pulsar_client-3.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3c72895ff7f51347e4f78b0375b2213fa70dd4790bbb78177b4002846f1fd290"}, - {file = "pulsar_client-3.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:547dba1b185a17eba915e51d0a3aca27c80747b6187e5cd7a71a3ca33921decc"}, - {file = "pulsar_client-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:443b786eed96bc86d2297a6a42e79f39d1abf217ec603e0bd303f3488c0234af"}, - {file = "pulsar_client-3.5.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:15b58f5d759dd6166db8a2d90ed05a38063b05cda76c36d190d86ef5c9249397"}, - {file = "pulsar_client-3.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af34bfe813dddf772a8a298117fa0a036ee963595d8bc8f00d969a0329ae6ed9"}, - {file = "pulsar_client-3.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27a0fec1dd74e1367d3742ce16679c1807994df60f5e666f440cf39323938fad"}, - {file = "pulsar_client-3.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbcd26ef9c03f96fb9cd91baec3bbd3c4b997834eb3556670d31f41cc25b5f64"}, - {file = "pulsar_client-3.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:afea1d0b6e793fd56e56463145751ff3aa79fdcd5b26e90d0da802a1bbabe07e"}, - {file = "pulsar_client-3.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:da1ab2fb1bef64b966e9403a0a186ebc90368d99e054ce2cae5b1128478f4ef4"}, - {file = "pulsar_client-3.5.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:9ad5dcc0eb8d2a7c0fb8e1fa146a0c6d4bdaf934f1169080b2c64b2f0573e086"}, - {file = "pulsar_client-3.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5870c6805b1a57962ed908d1173e97e13470415998393925c86a43694420389"}, - {file = "pulsar_client-3.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29cb5fedb969895b78301dc00a979133e69940812b8332e4de948bb0ad3db7cb"}, - {file = "pulsar_client-3.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e53c74bfa59b20c66adea95023169060f5048dd8d843e6ef9cd3b8ee2d23e93b"}, - {file = "pulsar_client-3.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:99dbadb13967f1add57010971ed36b5a77d24afcdaea01960d0e55e56cf4ba6f"}, - {file = "pulsar_client-3.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:058887661d438796f42307dcc8054c84dea88a37683dae36498b95d7e1c39b37"}, -] - -[package.dependencies] -certifi = "*" - -[package.extras] -all = ["apache-bookkeeper-client (>=4.16.1)", "fastavro (>=1.9.2)", "grpcio (>=1.60.0)", "prometheus-client", "protobuf (>=3.6.1,<=3.20.3)", "ratelimit"] -avro = ["fastavro (>=1.9.2)"] -functions = ["apache-bookkeeper-client (>=4.16.1)", "grpcio (>=1.60.0)", "prometheus-client", "protobuf (>=3.6.1,<=3.20.3)", "ratelimit"] - [[package]] name = "pure-eval" version = "0.2.2" @@ -7289,15 +7217,18 @@ zstd = ["zstandard"] [[package]] name = "pyparsing" -version = "2.4.7" -description = "Python parsing module" +version = "3.1.2" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = ">=3.6.8" files = [ - {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, - {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, ] +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + [[package]] name = "pypdf" version = "4.2.0" @@ -7351,28 +7282,15 @@ files = [ {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"}, ] -[[package]] -name = "pysrt" -version = "1.1.2" -description = "SubRip (.srt) subtitle parser and writer" -optional = false -python-versions = "*" -files = [ - {file = "pysrt-1.1.2.tar.gz", hash = "sha256:b4f844ba33e4e7743e9db746492f3a193dc0bc112b153914698e7c1cdeb9b0b9"}, -] - -[package.dependencies] -chardet = "*" - [[package]] name = "pytest" -version = "8.2.0" +version = "8.2.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"}, - {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"}, + {file = "pytest-8.2.1-py3-none-any.whl", hash = "sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1"}, + {file = "pytest-8.2.1.tar.gz", hash = "sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd"}, ] [package.dependencies] @@ -7388,13 +7306,13 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments [[package]] name = "pytest-asyncio" -version = "0.23.6" +version = "0.23.7" description = "Pytest support for asyncio" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-asyncio-0.23.6.tar.gz", hash = "sha256:ffe523a89c1c222598c76856e76852b787504ddb72dd5d9b6617ffa8aa2cde5f"}, - {file = "pytest_asyncio-0.23.6-py3-none-any.whl", hash = "sha256:68516fdd1018ac57b846c9846b954f0393b26f094764a28c955eabb0536a4e8a"}, + {file = "pytest_asyncio-0.23.7-py3-none-any.whl", hash = "sha256:009b48127fbe44518a547bddd25611551b0e43ccdbf1e67d12479f569832c20b"}, + {file = "pytest_asyncio-0.23.7.tar.gz", hash = "sha256:5f5c72948f4c49e7db4f29f2521d4031f1c27f86e57b046126654083d4770268"}, ] [package.dependencies] @@ -7406,13 +7324,13 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] [[package]] name = "pytest-cov" -version = "4.1.0" +version = "5.0.0" description = "Pytest plugin for measuring coverage." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, ] [package.dependencies] @@ -7420,7 +7338,7 @@ coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "pytest-instafail" @@ -7556,13 +7474,13 @@ cli = ["click (>=5.0)"] [[package]] name = "python-engineio" -version = "4.9.0" +version = "4.9.1" description = "Engine.IO server and client for Python" optional = false python-versions = ">=3.6" files = [ - {file = "python-engineio-4.9.0.tar.gz", hash = "sha256:e87459c15638e567711fd156e6f9c4a402668871bed79523f0ecfec744729ec7"}, - {file = "python_engineio-4.9.0-py3-none-any.whl", hash = "sha256:979859bff770725b75e60353d7ae53b397e8b517d05ba76733b404a3dcca3e4c"}, + {file = "python_engineio-4.9.1-py3-none-any.whl", hash = "sha256:f995e702b21f6b9ebde4e2000cd2ad0112ba0e5116ec8d22fe3515e76ba9dddd"}, + {file = "python_engineio-4.9.1.tar.gz", hash = "sha256:7631cf5563086076611e494c643b3fa93dd3a854634b5488be0bba0ef9b99709"}, ] [package.dependencies] @@ -7911,16 +7829,6 @@ python-dateutil = ">=2.8.1,<3.0.0" typing-extensions = ">=4.11.0,<5.0.0" websockets = ">=11,<13" -[[package]] -name = "red-black-tree-mod" -version = "1.20" -description = "Flexible python implementation of red black trees" -optional = false -python-versions = "*" -files = [ - {file = "red-black-tree-mod-1.20.tar.gz", hash = "sha256:2448e6fc9cbf1be204c753f352c6ee49aa8156dbf1faa57dfc26bd7705077e0a"}, -] - [[package]] name = "redis" version = "5.0.4" @@ -7941,101 +7849,101 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" [[package]] name = "regex" -version = "2024.5.10" +version = "2024.5.15" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" files = [ - {file = "regex-2024.5.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eda3dd46df535da787ffb9036b5140f941ecb91701717df91c9daf64cabef953"}, - {file = "regex-2024.5.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1d5bd666466c8f00a06886ce1397ba8b12371c1f1c6d1bef11013e9e0a1464a8"}, - {file = "regex-2024.5.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32e5f3b8e32918bfbdd12eca62e49ab3031125c454b507127ad6ecbd86e62fca"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:534efd2653ebc4f26fc0e47234e53bf0cb4715bb61f98c64d2774a278b58c846"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:193b7c6834a06f722f0ce1ba685efe80881de7c3de31415513862f601097648c"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:160ba087232c5c6e2a1e7ad08bd3a3f49b58c815be0504d8c8aacfb064491cd8"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:951be1eae7b47660412dc4938777a975ebc41936d64e28081bf2e584b47ec246"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8a0f0ab5453e409586b11ebe91c672040bc804ca98d03a656825f7890cbdf88"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9e6d4d6ae1827b2f8c7200aaf7501c37cf3f3896c86a6aaf2566448397c823dd"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:161a206c8f3511e2f5fafc9142a2cc25d7fe9a1ec5ad9b4ad2496a7c33e1c5d2"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:44b3267cea873684af022822195298501568ed44d542f9a2d9bebc0212e99069"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:560278c9975694e1f0bc50da187abf2cdc1e4890739ea33df2bc4a85eeef143e"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:70364a097437dd0a90b31cd77f09f7387ad9ac60ef57590971f43b7fca3082a5"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:42be5de7cc8c1edac55db92d82b68dc8e683b204d6f5414c5a51997a323d7081"}, - {file = "regex-2024.5.10-cp310-cp310-win32.whl", hash = "sha256:9a8625849387b9d558d528e263ecc9c0fbde86cfa5c2f0eef43fff480ae24d71"}, - {file = "regex-2024.5.10-cp310-cp310-win_amd64.whl", hash = "sha256:903350bf44d7e4116b4d5898b30b15755d61dcd3161e3413a49c7db76f0bee5a"}, - {file = "regex-2024.5.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bf9596cba92ce7b1fd32c7b07c6e3212c7eed0edc271757e48bfcd2b54646452"}, - {file = "regex-2024.5.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:45cc13d398b6359a7708986386f72bd156ae781c3e83a68a6d4cee5af04b1ce9"}, - {file = "regex-2024.5.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ad45f3bccfcb00868f2871dce02a755529838d2b86163ab8a246115e80cfb7d6"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33d19f0cde6838c81acffff25c7708e4adc7dd02896c9ec25c3939b1500a1778"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0a9f89d7db5ef6bdf53e5cc8e6199a493d0f1374b3171796b464a74ebe8e508a"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c6c71cf92b09e5faa72ea2c68aa1f61c9ce11cb66fdc5069d712f4392ddfd00"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7467ad8b0eac0b28e52679e972b9b234b3de0ea5cee12eb50091d2b68145fe36"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc0db93ad039fc2fe32ccd3dd0e0e70c4f3d6e37ae83f0a487e1aba939bd2fbd"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fa9335674d7c819674467c7b46154196c51efbaf5f5715187fd366814ba3fa39"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7dda3091838206969c2b286f9832dff41e2da545b99d1cfaea9ebd8584d02708"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:504b5116e2bd1821efd815941edff7535e93372a098e156bb9dffde30264e798"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:91b53dea84415e8115506cc62e441a2b54537359c63d856d73cb1abe05af4c9a"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a3903128f9e17a500618e80c68165c78c741ebb17dd1a0b44575f92c3c68b02"}, - {file = "regex-2024.5.10-cp311-cp311-win32.whl", hash = "sha256:236cace6c1903effd647ed46ce6dd5d76d54985fc36dafc5256032886736c85d"}, - {file = "regex-2024.5.10-cp311-cp311-win_amd64.whl", hash = "sha256:12446827f43c7881decf2c126762e11425de5eb93b3b0d8b581344c16db7047a"}, - {file = "regex-2024.5.10-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:14905ed75c7a6edf423eb46c213ed3f4507c38115f1ed3c00f4ec9eafba50e58"}, - {file = "regex-2024.5.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4fad420b14ae1970a1f322e8ae84a1d9d89375eb71e1b504060ab2d1bfe68f3c"}, - {file = "regex-2024.5.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c46a76a599fcbf95f98755275c5527304cc4f1bb69919434c1e15544d7052910"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0faecb6d5779753a6066a3c7a0471a8d29fe25d9981ca9e552d6d1b8f8b6a594"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aab65121229c2ecdf4a31b793d99a6a0501225bd39b616e653c87b219ed34a49"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:50e7e96a527488334379e05755b210b7da4a60fc5d6481938c1fa053e0c92184"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba034c8db4b264ef1601eb33cd23d87c5013b8fb48b8161debe2e5d3bd9156b0"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:031219782d97550c2098d9a68ce9e9eaefe67d2d81d8ff84c8354f9c009e720c"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:62b5f7910b639f3c1d122d408421317c351e213ca39c964ad4121f27916631c6"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cd832bd9b6120d6074f39bdfbb3c80e416848b07ac72910f1c7f03131a6debc3"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:e91b1976358e17197157b405cab408a5f4e33310cda211c49fc6da7cffd0b2f0"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:571452362d552de508c37191b6abbbb660028b8b418e2d68c20779e0bc8eaaa8"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5253dcb0bfda7214523de58b002eb0090cb530d7c55993ce5f6d17faf953ece7"}, - {file = "regex-2024.5.10-cp312-cp312-win32.whl", hash = "sha256:2f30a5ab8902f93930dc6f627c4dd5da2703333287081c85cace0fc6e21c25af"}, - {file = "regex-2024.5.10-cp312-cp312-win_amd64.whl", hash = "sha256:3799e36d60a35162bb35b2246d8bb012192b7437dff807ef79c14e7352706306"}, - {file = "regex-2024.5.10-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bbdc5db2c98ac2bf1971ffa1410c87ca7a15800415f788971e8ba8520fc0fda9"}, - {file = "regex-2024.5.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6ccdeef4584450b6f0bddd5135354908dacad95425fcb629fe36d13e48b60f32"}, - {file = "regex-2024.5.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:29d839829209f3c53f004e1de8c3113efce6d98029f044fa5cfee666253ee7e6"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0709ba544cf50bd5cb843df4b8bb6701bae2b70a8e88da9add8386cbca5c1385"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:972b49f2fe1047b9249c958ec4fa1bdd2cf8ce305dc19d27546d5a38e57732d8"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9cdbb1998da94607d5eec02566b9586f0e70d6438abf1b690261aac0edda7ab6"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7c8ee4861d9ef5b1120abb75846828c811f932d63311596ad25fa168053e00"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d35d4cc9270944e95f9c88af757b0c9fc43f396917e143a5756608462c5223b"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8722f72068b3e1156a4b2e1afde6810f1fc67155a9fa30a4b9d5b4bc46f18fb0"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:696639a73ca78a380acfaa0a1f6dd8220616a99074c05bba9ba8bb916914b224"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea057306ab469130167014b662643cfaed84651c792948891d003cf0039223a5"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b43b78f9386d3d932a6ce5af4b45f393d2e93693ee18dc4800d30a8909df700e"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c43395a3b7cc9862801a65c6994678484f186ce13c929abab44fb8a9e473a55a"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0bc94873ba11e34837bffd7e5006703abeffc4514e2f482022f46ce05bd25e67"}, - {file = "regex-2024.5.10-cp38-cp38-win32.whl", hash = "sha256:1118ba9def608250250f4b3e3f48c62f4562ba16ca58ede491b6e7554bfa09ff"}, - {file = "regex-2024.5.10-cp38-cp38-win_amd64.whl", hash = "sha256:458d68d34fb74b906709735c927c029e62f7d06437a98af1b5b6258025223210"}, - {file = "regex-2024.5.10-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:15e593386ec6331e0ab4ac0795b7593f02ab2f4b30a698beb89fbdc34f92386a"}, - {file = "regex-2024.5.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ca23b41355ba95929e9505ee04e55495726aa2282003ed9b012d86f857d3e49b"}, - {file = "regex-2024.5.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2c8982ee19ccecabbaeac1ba687bfef085a6352a8c64f821ce2f43e6d76a9298"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7117cb7d6ac7f2e985f3d18aa8a1728864097da1a677ffa69e970ca215baebf1"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b66421f8878a0c82fc0c272a43e2121c8d4c67cb37429b764f0d5ad70b82993b"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:224a9269f133564109ce668213ef3cb32bc72ccf040b0b51c72a50e569e9dc9e"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab98016541543692a37905871a5ffca59b16e08aacc3d7d10a27297b443f572d"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51d27844763c273a122e08a3e86e7aefa54ee09fb672d96a645ece0454d8425e"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:853cc36e756ff673bf984e9044ccc8fad60b95a748915dddeab9488aea974c73"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4e7eaf9df15423d07b6050fb91f86c66307171b95ea53e2d87a7993b6d02c7f7"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:169fd0acd7a259f58f417e492e93d0e15fc87592cd1e971c8c533ad5703b5830"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:334b79ce9c08f26b4659a53f42892793948a613c46f1b583e985fd5a6bf1c149"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f03b1dbd4d9596dd84955bb40f7d885204d6aac0d56a919bb1e0ff2fb7e1735a"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cfa6d61a76c77610ba9274c1a90a453062bdf6887858afbe214d18ad41cf6bde"}, - {file = "regex-2024.5.10-cp39-cp39-win32.whl", hash = "sha256:249fbcee0a277c32a3ce36d8e36d50c27c968fdf969e0fbe342658d4e010fbc8"}, - {file = "regex-2024.5.10-cp39-cp39-win_amd64.whl", hash = "sha256:0ce56a923f4c01d7568811bfdffe156268c0a7aae8a94c902b92fe34c4bde785"}, - {file = "regex-2024.5.10.tar.gz", hash = "sha256:304e7e2418146ae4d0ef0e9ffa28f881f7874b45b4994cc2279b21b6e7ae50c8"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53"}, + {file = "regex-2024.5.15-cp310-cp310-win32.whl", hash = "sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3"}, + {file = "regex-2024.5.15-cp310-cp310-win_amd64.whl", hash = "sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68"}, + {file = "regex-2024.5.15-cp311-cp311-win32.whl", hash = "sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa"}, + {file = "regex-2024.5.15-cp311-cp311-win_amd64.whl", hash = "sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80"}, + {file = "regex-2024.5.15-cp312-cp312-win32.whl", hash = "sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe"}, + {file = "regex-2024.5.15-cp312-cp312-win_amd64.whl", hash = "sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741"}, + {file = "regex-2024.5.15-cp38-cp38-win32.whl", hash = "sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9"}, + {file = "regex-2024.5.15-cp38-cp38-win_amd64.whl", hash = "sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456"}, + {file = "regex-2024.5.15-cp39-cp39-win32.whl", hash = "sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694"}, + {file = "regex-2024.5.15-cp39-cp39-win_amd64.whl", hash = "sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388"}, + {file = "regex-2024.5.15.tar.gz", hash = "sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c"}, ] [[package]] name = "requests" -version = "2.31.0" +version = "2.32.2" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"}, + {file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"}, ] [package.dependencies] @@ -8112,49 +8020,30 @@ files = [ [package.dependencies] pyasn1 = ">=0.1.3" -[[package]] -name = "rtfde" -version = "0.1.1" -description = "A library for extracting HTML content from RTF encapsulated HTML as commonly found in the exchange MSG email format." -optional = false -python-versions = ">=3.8" -files = [ - {file = "RTFDE-0.1.1-py3-none-any.whl", hash = "sha256:ea7ab0e0b9d4af08415f5017ecff91d74e24216a5e4e4682155cedc478035e99"}, - {file = "RTFDE-0.1.1.tar.gz", hash = "sha256:9e43485e79b2dd1018127735d8134f65d2a9d73af314d2a101f10346333b241e"}, -] - -[package.dependencies] -lark = "1.1.8" -oletools = ">=0.56" - -[package.extras] -dev = ["coverage (>=7.2.2)", "lxml (>=4.6)", "mypy (>=1.1.1)", "pdoc3 (>=0.10.0)"] -msg-parse = ["extract-msg (>=0.27)"] - [[package]] name = "ruff" -version = "0.3.7" +version = "0.4.5" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0e8377cccb2f07abd25e84fc5b2cbe48eeb0fea9f1719cad7caedb061d70e5ce"}, - {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:15a4d1cc1e64e556fa0d67bfd388fed416b7f3b26d5d1c3e7d192c897e39ba4b"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d28bdf3d7dc71dd46929fafeec98ba89b7c3550c3f0978e36389b5631b793663"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:379b67d4f49774ba679593b232dcd90d9e10f04d96e3c8ce4a28037ae473f7bb"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c060aea8ad5ef21cdfbbe05475ab5104ce7827b639a78dd55383a6e9895b7c51"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ebf8f615dde968272d70502c083ebf963b6781aacd3079081e03b32adfe4d58a"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d48098bd8f5c38897b03604f5428901b65e3c97d40b3952e38637b5404b739a2"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da8a4fda219bf9024692b1bc68c9cff4b80507879ada8769dc7e985755d662ea"}, - {file = "ruff-0.3.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c44e0149f1d8b48c4d5c33d88c677a4aa22fd09b1683d6a7ff55b816b5d074f"}, - {file = "ruff-0.3.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3050ec0af72b709a62ecc2aca941b9cd479a7bf2b36cc4562f0033d688e44fa1"}, - {file = "ruff-0.3.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a29cc38e4c1ab00da18a3f6777f8b50099d73326981bb7d182e54a9a21bb4ff7"}, - {file = "ruff-0.3.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b15cc59c19edca917f51b1956637db47e200b0fc5e6e1878233d3a938384b0b"}, - {file = "ruff-0.3.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e491045781b1e38b72c91247cf4634f040f8d0cb3e6d3d64d38dcf43616650b4"}, - {file = "ruff-0.3.7-py3-none-win32.whl", hash = "sha256:bc931de87593d64fad3a22e201e55ad76271f1d5bfc44e1a1887edd0903c7d9f"}, - {file = "ruff-0.3.7-py3-none-win_amd64.whl", hash = "sha256:5ef0e501e1e39f35e03c2acb1d1238c595b8bb36cf7a170e7c1df1b73da00e74"}, - {file = "ruff-0.3.7-py3-none-win_arm64.whl", hash = "sha256:789e144f6dc7019d1f92a812891c645274ed08af6037d11fc65fcbc183b7d59f"}, - {file = "ruff-0.3.7.tar.gz", hash = "sha256:d5c1aebee5162c2226784800ae031f660c350e7a3402c4d1f8ea4e97e232e3ba"}, + {file = "ruff-0.4.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:8f58e615dec58b1a6b291769b559e12fdffb53cc4187160a2fc83250eaf54e96"}, + {file = "ruff-0.4.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:84dd157474e16e3a82745d2afa1016c17d27cb5d52b12e3d45d418bcc6d49264"}, + {file = "ruff-0.4.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f483ad9d50b00e7fd577f6d0305aa18494c6af139bce7319c68a17180087f4"}, + {file = "ruff-0.4.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:63fde3bf6f3ad4e990357af1d30e8ba2730860a954ea9282c95fc0846f5f64af"}, + {file = "ruff-0.4.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78e3ba4620dee27f76bbcad97067766026c918ba0f2d035c2fc25cbdd04d9c97"}, + {file = "ruff-0.4.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:441dab55c568e38d02bbda68a926a3d0b54f5510095c9de7f95e47a39e0168aa"}, + {file = "ruff-0.4.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1169e47e9c4136c997f08f9857ae889d614c5035d87d38fda9b44b4338909cdf"}, + {file = "ruff-0.4.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:755ac9ac2598a941512fc36a9070a13c88d72ff874a9781493eb237ab02d75df"}, + {file = "ruff-0.4.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4b02a65985be2b34b170025a8b92449088ce61e33e69956ce4d316c0fe7cce0"}, + {file = "ruff-0.4.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:75a426506a183d9201e7e5664de3f6b414ad3850d7625764106f7b6d0486f0a1"}, + {file = "ruff-0.4.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:6e1b139b45e2911419044237d90b60e472f57285950e1492c757dfc88259bb06"}, + {file = "ruff-0.4.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a6f29a8221d2e3d85ff0c7b4371c0e37b39c87732c969b4d90f3dad2e721c5b1"}, + {file = "ruff-0.4.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d6ef817124d72b54cc923f3444828ba24fa45c3164bc9e8f1813db2f3d3a8a11"}, + {file = "ruff-0.4.5-py3-none-win32.whl", hash = "sha256:aed8166c18b1a169a5d3ec28a49b43340949e400665555b51ee06f22813ef062"}, + {file = "ruff-0.4.5-py3-none-win_amd64.whl", hash = "sha256:b0b03c619d2b4350b4a27e34fd2ac64d0dabe1afbf43de57d0f9d8a05ecffa45"}, + {file = "ruff-0.4.5-py3-none-win_arm64.whl", hash = "sha256:9d15de3425f53161b3f5a5658d4522e4eee5ea002bf2ac7aa380743dd9ad5fba"}, + {file = "ruff-0.4.5.tar.gz", hash = "sha256:286eabd47e7d4d521d199cab84deca135557e6d1e0f0d01c29e757c3cb151b54"}, ] [[package]] @@ -8298,78 +8187,81 @@ torch = ["safetensors[numpy]", "torch (>=1.10)"] [[package]] name = "scikit-learn" -version = "1.4.2" +version = "1.5.0" description = "A set of python modules for machine learning and data mining" optional = true python-versions = ">=3.9" files = [ - {file = "scikit-learn-1.4.2.tar.gz", hash = "sha256:daa1c471d95bad080c6e44b4946c9390a4842adc3082572c20e4f8884e39e959"}, - {file = "scikit_learn-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8539a41b3d6d1af82eb629f9c57f37428ff1481c1e34dddb3b9d7af8ede67ac5"}, - {file = "scikit_learn-1.4.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:68b8404841f944a4a1459b07198fa2edd41a82f189b44f3e1d55c104dbc2e40c"}, - {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81bf5d8bbe87643103334032dd82f7419bc8c8d02a763643a6b9a5c7288c5054"}, - {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f0ea5d0f693cb247a073d21a4123bdf4172e470e6d163c12b74cbb1536cf38"}, - {file = "scikit_learn-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:87440e2e188c87db80ea4023440923dccbd56fbc2d557b18ced00fef79da0727"}, - {file = "scikit_learn-1.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:45dee87ac5309bb82e3ea633955030df9bbcb8d2cdb30383c6cd483691c546cc"}, - {file = "scikit_learn-1.4.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1d0b25d9c651fd050555aadd57431b53d4cf664e749069da77f3d52c5ad14b3b"}, - {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0203c368058ab92efc6168a1507d388d41469c873e96ec220ca8e74079bf62e"}, - {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44c62f2b124848a28fd695db5bc4da019287abf390bfce602ddc8aa1ec186aae"}, - {file = "scikit_learn-1.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:5cd7b524115499b18b63f0c96f4224eb885564937a0b3477531b2b63ce331904"}, - {file = "scikit_learn-1.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:90378e1747949f90c8f385898fff35d73193dfcaec3dd75d6b542f90c4e89755"}, - {file = "scikit_learn-1.4.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ff4effe5a1d4e8fed260a83a163f7dbf4f6087b54528d8880bab1d1377bd78be"}, - {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:671e2f0c3f2c15409dae4f282a3a619601fa824d2c820e5b608d9d775f91780c"}, - {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d36d0bc983336bbc1be22f9b686b50c964f593c8a9a913a792442af9bf4f5e68"}, - {file = "scikit_learn-1.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:d762070980c17ba3e9a4a1e043ba0518ce4c55152032f1af0ca6f39b376b5928"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9993d5e78a8148b1d0fdf5b15ed92452af5581734129998c26f481c46586d68"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:426d258fddac674fdf33f3cb2d54d26f49406e2599dbf9a32b4d1696091d4256"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5460a1a5b043ae5ae4596b3126a4ec33ccba1b51e7ca2c5d36dac2169f62ab1d"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d64ef6cb8c093d883e5a36c4766548d974898d378e395ba41a806d0e824db8"}, - {file = "scikit_learn-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:c97a50b05c194be9146d61fe87dbf8eac62b203d9e87a3ccc6ae9aed2dfaf361"}, + {file = "scikit_learn-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12e40ac48555e6b551f0a0a5743cc94cc5a765c9513fe708e01f0aa001da2801"}, + {file = "scikit_learn-1.5.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f405c4dae288f5f6553b10c4ac9ea7754d5180ec11e296464adb5d6ac68b6ef5"}, + {file = "scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df8ccabbf583315f13160a4bb06037bde99ea7d8211a69787a6b7c5d4ebb6fc3"}, + {file = "scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c75ea812cd83b1385bbfa94ae971f0d80adb338a9523f6bbcb5e0b0381151d4"}, + {file = "scikit_learn-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:a90c5da84829a0b9b4bf00daf62754b2be741e66b5946911f5bdfaa869fcedd6"}, + {file = "scikit_learn-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a65af2d8a6cce4e163a7951a4cfbfa7fceb2d5c013a4b593686c7f16445cf9d"}, + {file = "scikit_learn-1.5.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:4c0c56c3005f2ec1db3787aeaabefa96256580678cec783986836fc64f8ff622"}, + {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f77547165c00625551e5c250cefa3f03f2fc92c5e18668abd90bfc4be2e0bff"}, + {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:118a8d229a41158c9f90093e46b3737120a165181a1b58c03461447aa4657415"}, + {file = "scikit_learn-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:a03b09f9f7f09ffe8c5efffe2e9de1196c696d811be6798ad5eddf323c6f4d40"}, + {file = "scikit_learn-1.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:460806030c666addee1f074788b3978329a5bfdc9b7d63e7aad3f6d45c67a210"}, + {file = "scikit_learn-1.5.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:1b94d6440603752b27842eda97f6395f570941857456c606eb1d638efdb38184"}, + {file = "scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d82c2e573f0f2f2f0be897e7a31fcf4e73869247738ab8c3ce7245549af58ab8"}, + {file = "scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3a10e1d9e834e84d05e468ec501a356226338778769317ee0b84043c0d8fb06"}, + {file = "scikit_learn-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:855fc5fa8ed9e4f08291203af3d3e5fbdc4737bd617a371559aaa2088166046e"}, + {file = "scikit_learn-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:40fb7d4a9a2db07e6e0cae4dc7bdbb8fada17043bac24104d8165e10e4cff1a2"}, + {file = "scikit_learn-1.5.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:47132440050b1c5beb95f8ba0b2402bbd9057ce96ec0ba86f2f445dd4f34df67"}, + {file = "scikit_learn-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:174beb56e3e881c90424e21f576fa69c4ffcf5174632a79ab4461c4c960315ac"}, + {file = "scikit_learn-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261fe334ca48f09ed64b8fae13f9b46cc43ac5f580c4a605cbb0a517456c8f71"}, + {file = "scikit_learn-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:057b991ac64b3e75c9c04b5f9395eaf19a6179244c089afdebaad98264bff37c"}, + {file = "scikit_learn-1.5.0.tar.gz", hash = "sha256:789e3db01c750ed6d496fa2db7d50637857b451e57bcae863bff707c1247bef7"}, ] [package.dependencies] joblib = ">=1.2.0" numpy = ">=1.19.5" scipy = ">=1.6.0" -threadpoolctl = ">=2.0.0" +threadpoolctl = ">=3.1.0" [package.extras] -benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] +build = ["cython (>=3.0.10)", "meson-python (>=0.15.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] -tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] +install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] +maintenance = ["conda-lock (==2.5.6)"] +tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.2.1)", "scikit-image (>=0.17.2)"] [[package]] name = "scipy" -version = "1.13.0" +version = "1.13.1" description = "Fundamental algorithms for scientific computing in Python" optional = true python-versions = ">=3.9" files = [ - {file = "scipy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba419578ab343a4e0a77c0ef82f088238a93eef141b2b8017e46149776dfad4d"}, - {file = "scipy-1.13.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:22789b56a999265431c417d462e5b7f2b487e831ca7bef5edeb56efe4c93f86e"}, - {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f1432ba070e90d42d7fd836462c50bf98bd08bed0aa616c359eed8a04e3922"}, - {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8434f6f3fa49f631fae84afee424e2483289dfc30a47755b4b4e6b07b2633a4"}, - {file = "scipy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dcbb9ea49b0167de4167c40eeee6e167caeef11effb0670b554d10b1e693a8b9"}, - {file = "scipy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:1d2f7bb14c178f8b13ebae93f67e42b0a6b0fc50eba1cd8021c9b6e08e8fb1cd"}, - {file = "scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa"}, - {file = "scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5"}, - {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5acd8e1dbd8dbe38d0004b1497019b2dbbc3d70691e65d69615f8a7292865d7"}, - {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d"}, - {file = "scipy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4dca18c3ffee287ddd3bc8f1dabaf45f5305c5afc9f8ab9cbfab855e70b2df5c"}, - {file = "scipy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6"}, - {file = "scipy-1.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0de696f589681c2802f9090fff730c218f7c51ff49bf252b6a97ec4a5d19e8b"}, - {file = "scipy-1.13.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b2a3ff461ec4756b7e8e42e1c681077349a038f0686132d623fa404c0bee2551"}, - {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf9fe63e7a4bf01d3645b13ff2aa6dea023d38993f42aaac81a18b1bda7a82a"}, - {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e7626dfd91cdea5714f343ce1176b6c4745155d234f1033584154f60ef1ff42"}, - {file = "scipy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:109d391d720fcebf2fbe008621952b08e52907cf4c8c7efc7376822151820820"}, - {file = "scipy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:8930ae3ea371d6b91c203b1032b9600d69c568e537b7988a3073dfe4d4774f21"}, - {file = "scipy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602"}, - {file = "scipy-1.13.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78"}, - {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5"}, - {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d"}, - {file = "scipy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86"}, - {file = "scipy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e"}, - {file = "scipy-1.13.0.tar.gz", hash = "sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e"}, + {file = "scipy-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:20335853b85e9a49ff7572ab453794298bcf0354d8068c5f6775a0eabf350aca"}, + {file = "scipy-1.13.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d605e9c23906d1994f55ace80e0125c587f96c020037ea6aa98d01b4bd2e222f"}, + {file = "scipy-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfa31f1def5c819b19ecc3a8b52d28ffdcc7ed52bb20c9a7589669dd3c250989"}, + {file = "scipy-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26264b282b9da0952a024ae34710c2aff7d27480ee91a2e82b7b7073c24722f"}, + {file = "scipy-1.13.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eccfa1906eacc02de42d70ef4aecea45415f5be17e72b61bafcfd329bdc52e94"}, + {file = "scipy-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:2831f0dc9c5ea9edd6e51e6e769b655f08ec6db6e2e10f86ef39bd32eb11da54"}, + {file = "scipy-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27e52b09c0d3a1d5b63e1105f24177e544a222b43611aaf5bc44d4a0979e32f9"}, + {file = "scipy-1.13.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:54f430b00f0133e2224c3ba42b805bfd0086fe488835effa33fa291561932326"}, + {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e89369d27f9e7b0884ae559a3a956e77c02114cc60a6058b4e5011572eea9299"}, + {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a78b4b3345f1b6f68a763c6e25c0c9a23a9fd0f39f5f3d200efe8feda560a5fa"}, + {file = "scipy-1.13.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45484bee6d65633752c490404513b9ef02475b4284c4cfab0ef946def50b3f59"}, + {file = "scipy-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:5713f62f781eebd8d597eb3f88b8bf9274e79eeabf63afb4a737abc6c84ad37b"}, + {file = "scipy-1.13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5d72782f39716b2b3509cd7c33cdc08c96f2f4d2b06d51e52fb45a19ca0c86a1"}, + {file = "scipy-1.13.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:017367484ce5498445aade74b1d5ab377acdc65e27095155e448c88497755a5d"}, + {file = "scipy-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:949ae67db5fa78a86e8fa644b9a6b07252f449dcf74247108c50e1d20d2b4627"}, + {file = "scipy-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de3ade0e53bc1f21358aa74ff4830235d716211d7d077e340c7349bc3542e884"}, + {file = "scipy-1.13.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2ac65fb503dad64218c228e2dc2d0a0193f7904747db43014645ae139c8fad16"}, + {file = "scipy-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdd7dacfb95fea358916410ec61bbc20440f7860333aee6d882bb8046264e949"}, + {file = "scipy-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:436bbb42a94a8aeef855d755ce5a465479c721e9d684de76bf61a62e7c2b81d5"}, + {file = "scipy-1.13.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8335549ebbca860c52bf3d02f80784e91a004b71b059e3eea9678ba994796a24"}, + {file = "scipy-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d533654b7d221a6a97304ab63c41c96473ff04459e404b83275b60aa8f4b7004"}, + {file = "scipy-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e98dcf185ba7f8e663e122ebf908c4702420477ae52a04f9908707456ba4d"}, + {file = "scipy-1.13.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a014c2b3697bde71724244f63de2476925596c24285c7a637364761f8710891c"}, + {file = "scipy-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:392e4ec766654852c25ebad4f64e4e584cf19820b980bc04960bca0b0cd6eaa2"}, + {file = "scipy-1.13.1.tar.gz", hash = "sha256:095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c"}, ] [package.dependencies] @@ -8406,19 +8298,18 @@ dev = ["pre-commit", "pytest", "ruff (>=0.3.0)"] [[package]] name = "setuptools" -version = "69.5.1" +version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, - {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shapely" @@ -8597,7 +8488,7 @@ files = [ ] [package.dependencies] -greenlet = {version = "!=0.4.17", optional = true, markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\""} +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} typing-extensions = ">=4.6.0" [package.extras] @@ -8627,13 +8518,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "sqlmodel" -version = "0.0.16" +version = "0.0.18" description = "SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness." optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.7" files = [ - {file = "sqlmodel-0.0.16-py3-none-any.whl", hash = "sha256:b972f5d319580d6c37ecc417881f6ec4d1ad3ed3583d0ac0ed43234a28bf605a"}, - {file = "sqlmodel-0.0.16.tar.gz", hash = "sha256:966656f18a8e9a2d159eb215b07fb0cf5222acfae3362707ca611848a8a06bd1"}, + {file = "sqlmodel-0.0.18-py3-none-any.whl", hash = "sha256:d70fdf8fe595e30a918660cf4537b9c5fc2fffdbfcba851a0135de73c3ebcbb7"}, + {file = "sqlmodel-0.0.18.tar.gz", hash = "sha256:2e520efe03810ef2c268a1004cfc5ef8f8a936312232f38d6c8e62c11af2cac3"}, ] [package.dependencies] @@ -8708,17 +8599,6 @@ docs = ["myst-parser[linkify]", "sphinx", "sphinx-rtd-theme"] release = ["twine"] test = ["pylint", "pytest", "pytest-black", "pytest-cov", "pytest-pylint"] -[[package]] -name = "striprtf" -version = "0.0.26" -description = "A simple library to convert rtf to text" -optional = false -python-versions = "*" -files = [ - {file = "striprtf-0.0.26-py3-none-any.whl", hash = "sha256:8c8f9d32083cdc2e8bfb149455aa1cc5a4e0a035893bedc75db8b73becb3a1bb"}, - {file = "striprtf-0.0.26.tar.gz", hash = "sha256:fdb2bba7ac440072d1c41eab50d8d74ae88f60a8b6575c6e2c7805dc462093aa"}, -] - [[package]] name = "structlog" version = "24.1.0" @@ -8738,13 +8618,13 @@ typing = ["mypy (>=1.4)", "rich", "twisted"] [[package]] name = "supabase" -version = "2.4.5" +version = "2.4.6" description = "Supabase client for Python." optional = false python-versions = "<4.0,>=3.8" files = [ - {file = "supabase-2.4.5-py3-none-any.whl", hash = "sha256:100441c36bf3390b040818c636c372a91645d18b6a9e0c12cea061fb00db664c"}, - {file = "supabase-2.4.5.tar.gz", hash = "sha256:8520b5a194c6d8fdbdd71b45aefc8b5a42d1a6711a2c693b6d299aeb785e8532"}, + {file = "supabase-2.4.6-py3-none-any.whl", hash = "sha256:0bfd6bb33c0e6d6891b55caaf689140f47588b01436fecc336d1d75090c70e8b"}, + {file = "supabase-2.4.6.tar.gz", hash = "sha256:442be0729f5fd9258326ba89859f60bfd8d9218283ed7fd8a62ae81e2f310474"}, ] [package.dependencies] @@ -8890,130 +8770,120 @@ blobfile = ["blobfile (>=2)"] [[package]] name = "tokenizers" -version = "0.15.2" +version = "0.19.1" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "tokenizers-0.15.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:52f6130c9cbf70544287575a985bf44ae1bda2da7e8c24e97716080593638012"}, - {file = "tokenizers-0.15.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:054c1cc9c6d68f7ffa4e810b3d5131e0ba511b6e4be34157aa08ee54c2f8d9ee"}, - {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9b9b070fdad06e347563b88c278995735292ded1132f8657084989a4c84a6d5"}, - {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea621a7eef4b70e1f7a4e84dd989ae3f0eeb50fc8690254eacc08acb623e82f1"}, - {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf7fd9a5141634fa3aa8d6b7be362e6ae1b4cda60da81388fa533e0b552c98fd"}, - {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44f2a832cd0825295f7179eaf173381dc45230f9227ec4b44378322d900447c9"}, - {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8b9ec69247a23747669ec4b0ca10f8e3dfb3545d550258129bd62291aabe8605"}, - {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b6a4c78da863ff26dbd5ad9a8ecc33d8a8d97b535172601cf00aee9d7ce9ce"}, - {file = "tokenizers-0.15.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5ab2a4d21dcf76af60e05af8063138849eb1d6553a0d059f6534357bce8ba364"}, - {file = "tokenizers-0.15.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a47acfac7e511f6bbfcf2d3fb8c26979c780a91e06fb5b9a43831b2c0153d024"}, - {file = "tokenizers-0.15.2-cp310-none-win32.whl", hash = "sha256:064ff87bb6acdbd693666de9a4b692add41308a2c0ec0770d6385737117215f2"}, - {file = "tokenizers-0.15.2-cp310-none-win_amd64.whl", hash = "sha256:3b919afe4df7eb6ac7cafd2bd14fb507d3f408db7a68c43117f579c984a73843"}, - {file = "tokenizers-0.15.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:89cd1cb93e4b12ff39bb2d626ad77e35209de9309a71e4d3d4672667b4b256e7"}, - {file = "tokenizers-0.15.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cfed5c64e5be23d7ee0f0e98081a25c2a46b0b77ce99a4f0605b1ec43dd481fa"}, - {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a907d76dcfda37023ba203ab4ceeb21bc5683436ebefbd895a0841fd52f6f6f2"}, - {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20ea60479de6fc7b8ae756b4b097572372d7e4032e2521c1bbf3d90c90a99ff0"}, - {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:48e2b9335be2bc0171df9281385c2ed06a15f5cf121c44094338306ab7b33f2c"}, - {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:112a1dd436d2cc06e6ffdc0b06d55ac019a35a63afd26475205cb4b1bf0bfbff"}, - {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4620cca5c2817177ee8706f860364cc3a8845bc1e291aaf661fb899e5d1c45b0"}, - {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccd73a82751c523b3fc31ff8194702e4af4db21dc20e55b30ecc2079c5d43cb7"}, - {file = "tokenizers-0.15.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:107089f135b4ae7817affe6264f8c7a5c5b4fd9a90f9439ed495f54fcea56fb4"}, - {file = "tokenizers-0.15.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0ff110ecc57b7aa4a594396525a3451ad70988e517237fe91c540997c4e50e29"}, - {file = "tokenizers-0.15.2-cp311-none-win32.whl", hash = "sha256:6d76f00f5c32da36c61f41c58346a4fa7f0a61be02f4301fd30ad59834977cc3"}, - {file = "tokenizers-0.15.2-cp311-none-win_amd64.whl", hash = "sha256:cc90102ed17271cf0a1262babe5939e0134b3890345d11a19c3145184b706055"}, - {file = "tokenizers-0.15.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f86593c18d2e6248e72fb91c77d413a815153b8ea4e31f7cd443bdf28e467670"}, - {file = "tokenizers-0.15.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0774bccc6608eca23eb9d620196687c8b2360624619623cf4ba9dc9bd53e8b51"}, - {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d0222c5b7c9b26c0b4822a82f6a7011de0a9d3060e1da176f66274b70f846b98"}, - {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3835738be1de66624fff2f4f6f6684775da4e9c00bde053be7564cbf3545cc66"}, - {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0143e7d9dcd811855c1ce1ab9bf5d96d29bf5e528fd6c7824d0465741e8c10fd"}, - {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db35825f6d54215f6b6009a7ff3eedee0848c99a6271c870d2826fbbedf31a38"}, - {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f5e64b0389a2be47091d8cc53c87859783b837ea1a06edd9d8e04004df55a5c"}, - {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e0480c452217edd35eca56fafe2029fb4d368b7c0475f8dfa3c5c9c400a7456"}, - {file = "tokenizers-0.15.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a33ab881c8fe70474980577e033d0bc9a27b7ab8272896e500708b212995d834"}, - {file = "tokenizers-0.15.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a308a607ca9de2c64c1b9ba79ec9a403969715a1b8ba5f998a676826f1a7039d"}, - {file = "tokenizers-0.15.2-cp312-none-win32.whl", hash = "sha256:b8fcfa81bcb9447df582c5bc96a031e6df4da2a774b8080d4f02c0c16b42be0b"}, - {file = "tokenizers-0.15.2-cp312-none-win_amd64.whl", hash = "sha256:38d7ab43c6825abfc0b661d95f39c7f8af2449364f01d331f3b51c94dcff7221"}, - {file = "tokenizers-0.15.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:38bfb0204ff3246ca4d5e726e8cc8403bfc931090151e6eede54d0e0cf162ef0"}, - {file = "tokenizers-0.15.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c861d35e8286a53e06e9e28d030b5a05bcbf5ac9d7229e561e53c352a85b1fc"}, - {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:936bf3842db5b2048eaa53dade907b1160f318e7c90c74bfab86f1e47720bdd6"}, - {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:620beacc3373277700d0e27718aa8b25f7b383eb8001fba94ee00aeea1459d89"}, - {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2735ecbbf37e52db4ea970e539fd2d450d213517b77745114f92867f3fc246eb"}, - {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:473c83c5e2359bb81b0b6fde870b41b2764fcdd36d997485e07e72cc3a62264a"}, - {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968fa1fb3c27398b28a4eca1cbd1e19355c4d3a6007f7398d48826bbe3a0f728"}, - {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:865c60ae6eaebdde7da66191ee9b7db52e542ed8ee9d2c653b6d190a9351b980"}, - {file = "tokenizers-0.15.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7c0d8b52664ab2d4a8d6686eb5effc68b78608a9008f086a122a7b2996befbab"}, - {file = "tokenizers-0.15.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f33dfbdec3784093a9aebb3680d1f91336c56d86cc70ddf88708251da1fe9064"}, - {file = "tokenizers-0.15.2-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d44ba80988ff9424e33e0a49445072ac7029d8c0e1601ad25a0ca5f41ed0c1d6"}, - {file = "tokenizers-0.15.2-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:dce74266919b892f82b1b86025a613956ea0ea62a4843d4c4237be2c5498ed3a"}, - {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0ef06b9707baeb98b316577acb04f4852239d856b93e9ec3a299622f6084e4be"}, - {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c73e2e74bbb07910da0d37c326869f34113137b23eadad3fc00856e6b3d9930c"}, - {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eeb12daf02a59e29f578a865f55d87cd103ce62bd8a3a5874f8fdeaa82e336b"}, - {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ba9f6895af58487ca4f54e8a664a322f16c26bbb442effd01087eba391a719e"}, - {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccec77aa7150e38eec6878a493bf8c263ff1fa8a62404e16c6203c64c1f16a26"}, - {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f40604f5042ff210ba82743dda2b6aa3e55aa12df4e9f2378ee01a17e2855e"}, - {file = "tokenizers-0.15.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5645938a42d78c4885086767c70923abad047163d809c16da75d6b290cb30bbe"}, - {file = "tokenizers-0.15.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:05a77cbfebe28a61ab5c3891f9939cc24798b63fa236d84e5f29f3a85a200c00"}, - {file = "tokenizers-0.15.2-cp37-none-win32.whl", hash = "sha256:361abdc068e8afe9c5b818769a48624687fb6aaed49636ee39bec4e95e1a215b"}, - {file = "tokenizers-0.15.2-cp37-none-win_amd64.whl", hash = "sha256:7ef789f83eb0f9baeb4d09a86cd639c0a5518528f9992f38b28e819df397eb06"}, - {file = "tokenizers-0.15.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4fe1f74a902bee74a3b25aff180fbfbf4f8b444ab37c4d496af7afd13a784ed2"}, - {file = "tokenizers-0.15.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c4b89038a684f40a6b15d6b09f49650ac64d951ad0f2a3ea9169687bbf2a8ba"}, - {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d05a1b06f986d41aed5f2de464c003004b2df8aaf66f2b7628254bcbfb72a438"}, - {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508711a108684111ec8af89d3a9e9e08755247eda27d0ba5e3c50e9da1600f6d"}, - {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:daa348f02d15160cb35439098ac96e3a53bacf35885072611cd9e5be7d333daa"}, - {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:494fdbe5932d3416de2a85fc2470b797e6f3226c12845cadf054dd906afd0442"}, - {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2d60f5246f4da9373f75ff18d64c69cbf60c3bca597290cea01059c336d2470"}, - {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93268e788825f52de4c7bdcb6ebc1fcd4a5442c02e730faa9b6b08f23ead0e24"}, - {file = "tokenizers-0.15.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6fc7083ab404019fc9acafe78662c192673c1e696bd598d16dc005bd663a5cf9"}, - {file = "tokenizers-0.15.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:41e39b41e5531d6b2122a77532dbea60e171ef87a3820b5a3888daa847df4153"}, - {file = "tokenizers-0.15.2-cp38-none-win32.whl", hash = "sha256:06cd0487b1cbfabefb2cc52fbd6b1f8d4c37799bd6c6e1641281adaa6b2504a7"}, - {file = "tokenizers-0.15.2-cp38-none-win_amd64.whl", hash = "sha256:5179c271aa5de9c71712e31cb5a79e436ecd0d7532a408fa42a8dbfa4bc23fd9"}, - {file = "tokenizers-0.15.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82f8652a74cc107052328b87ea8b34291c0f55b96d8fb261b3880216a9f9e48e"}, - {file = "tokenizers-0.15.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02458bee6f5f3139f1ebbb6d042b283af712c0981f5bc50edf771d6b762d5e4f"}, - {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c9a09cd26cca2e1c349f91aa665309ddb48d71636370749414fbf67bc83c5343"}, - {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:158be8ea8554e5ed69acc1ce3fbb23a06060bd4bbb09029431ad6b9a466a7121"}, - {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ddba9a2b0c8c81633eca0bb2e1aa5b3a15362b1277f1ae64176d0f6eba78ab1"}, - {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ef5dd1d39797044642dbe53eb2bc56435308432e9c7907728da74c69ee2adca"}, - {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:454c203164e07a860dbeb3b1f4a733be52b0edbb4dd2e5bd75023ffa8b49403a"}, - {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cf6b7f1d4dc59af960e6ffdc4faffe6460bbfa8dce27a58bf75755ffdb2526d"}, - {file = "tokenizers-0.15.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2ef09bbc16519f6c25d0c7fc0c6a33a6f62923e263c9d7cca4e58b8c61572afb"}, - {file = "tokenizers-0.15.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c9a2ebdd2ad4ec7a68e7615086e633857c85e2f18025bd05d2a4399e6c5f7169"}, - {file = "tokenizers-0.15.2-cp39-none-win32.whl", hash = "sha256:918fbb0eab96fe08e72a8c2b5461e9cce95585d82a58688e7f01c2bd546c79d0"}, - {file = "tokenizers-0.15.2-cp39-none-win_amd64.whl", hash = "sha256:524e60da0135e106b254bd71f0659be9f89d83f006ea9093ce4d1fab498c6d0d"}, - {file = "tokenizers-0.15.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6a9b648a58281c4672212fab04e60648fde574877d0139cd4b4f93fe28ca8944"}, - {file = "tokenizers-0.15.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7c7d18b733be6bbca8a55084027f7be428c947ddf871c500ee603e375013ffba"}, - {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:13ca3611de8d9ddfbc4dc39ef54ab1d2d4aaa114ac8727dfdc6a6ec4be017378"}, - {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:237d1bf3361cf2e6463e6c140628e6406766e8b27274f5fcc62c747ae3c6f094"}, - {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67a0fe1e49e60c664915e9fb6b0cb19bac082ab1f309188230e4b2920230edb3"}, - {file = "tokenizers-0.15.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4e022fe65e99230b8fd89ebdfea138c24421f91c1a4f4781a8f5016fd5cdfb4d"}, - {file = "tokenizers-0.15.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d857be2df69763362ac699f8b251a8cd3fac9d21893de129bc788f8baaef2693"}, - {file = "tokenizers-0.15.2-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:708bb3e4283177236309e698da5fcd0879ce8fd37457d7c266d16b550bcbbd18"}, - {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:64c35e09e9899b72a76e762f9854e8750213f67567787d45f37ce06daf57ca78"}, - {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1257f4394be0d3b00de8c9e840ca5601d0a4a8438361ce9c2b05c7d25f6057b"}, - {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02272fe48280e0293a04245ca5d919b2c94a48b408b55e858feae9618138aeda"}, - {file = "tokenizers-0.15.2-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dc3ad9ebc76eabe8b1d7c04d38be884b8f9d60c0cdc09b0aa4e3bcf746de0388"}, - {file = "tokenizers-0.15.2-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:32e16bdeffa7c4f46bf2152172ca511808b952701d13e7c18833c0b73cb5c23f"}, - {file = "tokenizers-0.15.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fb16ba563d59003028b678d2361a27f7e4ae0ab29c7a80690efa20d829c81fdb"}, - {file = "tokenizers-0.15.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:2277c36d2d6cdb7876c274547921a42425b6810d38354327dd65a8009acf870c"}, - {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cf75d32e8d250781940d07f7eece253f2fe9ecdb1dc7ba6e3833fa17b82fcbc"}, - {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1b3b31884dc8e9b21508bb76da80ebf7308fdb947a17affce815665d5c4d028"}, - {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10122d8d8e30afb43bb1fe21a3619f62c3e2574bff2699cf8af8b0b6c5dc4a3"}, - {file = "tokenizers-0.15.2-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d88b96ff0fe8e91f6ef01ba50b0d71db5017fa4e3b1d99681cec89a85faf7bf7"}, - {file = "tokenizers-0.15.2-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:37aaec5a52e959892870a7c47cef80c53797c0db9149d458460f4f31e2fb250e"}, - {file = "tokenizers-0.15.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e2ea752f2b0fe96eb6e2f3adbbf4d72aaa1272079b0dfa1145507bd6a5d537e6"}, - {file = "tokenizers-0.15.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b19a808d8799fda23504a5cd31d2f58e6f52f140380082b352f877017d6342b"}, - {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:64c86e5e068ac8b19204419ed8ca90f9d25db20578f5881e337d203b314f4104"}, - {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de19c4dc503c612847edf833c82e9f73cd79926a384af9d801dcf93f110cea4e"}, - {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea09acd2fe3324174063d61ad620dec3bcf042b495515f27f638270a7d466e8b"}, - {file = "tokenizers-0.15.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cf27fd43472e07b57cf420eee1e814549203d56de00b5af8659cb99885472f1f"}, - {file = "tokenizers-0.15.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7ca22bd897537a0080521445d91a58886c8c04084a6a19e6c78c586e0cfa92a5"}, - {file = "tokenizers-0.15.2.tar.gz", hash = "sha256:e6e9c6e019dd5484be5beafc775ae6c925f4c69a3487040ed09b45e13df2cb91"}, + {file = "tokenizers-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:952078130b3d101e05ecfc7fc3640282d74ed26bcf691400f872563fca15ac97"}, + {file = "tokenizers-0.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82c8b8063de6c0468f08e82c4e198763e7b97aabfe573fd4cf7b33930ca4df77"}, + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f03727225feaf340ceeb7e00604825addef622d551cbd46b7b775ac834c1e1c4"}, + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:453e4422efdfc9c6b6bf2eae00d5e323f263fff62b29a8c9cd526c5003f3f642"}, + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:02e81bf089ebf0e7f4df34fa0207519f07e66d8491d963618252f2e0729e0b46"}, + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b07c538ba956843833fee1190cf769c60dc62e1cf934ed50d77d5502194d63b1"}, + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28cab1582e0eec38b1f38c1c1fb2e56bce5dc180acb1724574fc5f47da2a4fe"}, + {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b01afb7193d47439f091cd8f070a1ced347ad0f9144952a30a41836902fe09e"}, + {file = "tokenizers-0.19.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7fb297edec6c6841ab2e4e8f357209519188e4a59b557ea4fafcf4691d1b4c98"}, + {file = "tokenizers-0.19.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e8a3dd055e515df7054378dc9d6fa8c8c34e1f32777fb9a01fea81496b3f9d3"}, + {file = "tokenizers-0.19.1-cp310-none-win32.whl", hash = "sha256:7ff898780a155ea053f5d934925f3902be2ed1f4d916461e1a93019cc7250837"}, + {file = "tokenizers-0.19.1-cp310-none-win_amd64.whl", hash = "sha256:bea6f9947e9419c2fda21ae6c32871e3d398cba549b93f4a65a2d369662d9403"}, + {file = "tokenizers-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5c88d1481f1882c2e53e6bb06491e474e420d9ac7bdff172610c4f9ad3898059"}, + {file = "tokenizers-0.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddf672ed719b4ed82b51499100f5417d7d9f6fb05a65e232249268f35de5ed14"}, + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dadc509cc8a9fe460bd274c0e16ac4184d0958117cf026e0ea8b32b438171594"}, + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfedf31824ca4915b511b03441784ff640378191918264268e6923da48104acc"}, + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac11016d0a04aa6487b1513a3a36e7bee7eec0e5d30057c9c0408067345c48d2"}, + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76951121890fea8330d3a0df9a954b3f2a37e3ec20e5b0530e9a0044ca2e11fe"}, + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b342d2ce8fc8d00f376af068e3274e2e8649562e3bc6ae4a67784ded6b99428d"}, + {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d16ff18907f4909dca9b076b9c2d899114dd6abceeb074eca0c93e2353f943aa"}, + {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:706a37cc5332f85f26efbe2bdc9ef8a9b372b77e4645331a405073e4b3a8c1c6"}, + {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:16baac68651701364b0289979ecec728546133e8e8fe38f66fe48ad07996b88b"}, + {file = "tokenizers-0.19.1-cp311-none-win32.whl", hash = "sha256:9ed240c56b4403e22b9584ee37d87b8bfa14865134e3e1c3fb4b2c42fafd3256"}, + {file = "tokenizers-0.19.1-cp311-none-win_amd64.whl", hash = "sha256:ad57d59341710b94a7d9dbea13f5c1e7d76fd8d9bcd944a7a6ab0b0da6e0cc66"}, + {file = "tokenizers-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:621d670e1b1c281a1c9698ed89451395d318802ff88d1fc1accff0867a06f153"}, + {file = "tokenizers-0.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d924204a3dbe50b75630bd16f821ebda6a5f729928df30f582fb5aade90c818a"}, + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4f3fefdc0446b1a1e6d81cd4c07088ac015665d2e812f6dbba4a06267d1a2c95"}, + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9620b78e0b2d52ef07b0d428323fb34e8ea1219c5eac98c2596311f20f1f9266"}, + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04ce49e82d100594715ac1b2ce87d1a36e61891a91de774755f743babcd0dd52"}, + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5c2ff13d157afe413bf7e25789879dd463e5a4abfb529a2d8f8473d8042e28f"}, + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3174c76efd9d08f836bfccaca7cfec3f4d1c0a4cf3acbc7236ad577cc423c840"}, + {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c9d5b6c0e7a1e979bec10ff960fae925e947aab95619a6fdb4c1d8ff3708ce3"}, + {file = "tokenizers-0.19.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a179856d1caee06577220ebcfa332af046d576fb73454b8f4d4b0ba8324423ea"}, + {file = "tokenizers-0.19.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:952b80dac1a6492170f8c2429bd11fcaa14377e097d12a1dbe0ef2fb2241e16c"}, + {file = "tokenizers-0.19.1-cp312-none-win32.whl", hash = "sha256:01d62812454c188306755c94755465505836fd616f75067abcae529c35edeb57"}, + {file = "tokenizers-0.19.1-cp312-none-win_amd64.whl", hash = "sha256:b70bfbe3a82d3e3fb2a5e9b22a39f8d1740c96c68b6ace0086b39074f08ab89a"}, + {file = "tokenizers-0.19.1-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:bb9dfe7dae85bc6119d705a76dc068c062b8b575abe3595e3c6276480e67e3f1"}, + {file = "tokenizers-0.19.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:1f0360cbea28ea99944ac089c00de7b2e3e1c58f479fb8613b6d8d511ce98267"}, + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:71e3ec71f0e78780851fef28c2a9babe20270404c921b756d7c532d280349214"}, + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b82931fa619dbad979c0ee8e54dd5278acc418209cc897e42fac041f5366d626"}, + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e8ff5b90eabdcdaa19af697885f70fe0b714ce16709cf43d4952f1f85299e73a"}, + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e742d76ad84acbdb1a8e4694f915fe59ff6edc381c97d6dfdd054954e3478ad4"}, + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d8c5d59d7b59885eab559d5bc082b2985555a54cda04dda4c65528d90ad252ad"}, + {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b2da5c32ed869bebd990c9420df49813709e953674c0722ff471a116d97b22d"}, + {file = "tokenizers-0.19.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:638e43936cc8b2cbb9f9d8dde0fe5e7e30766a3318d2342999ae27f68fdc9bd6"}, + {file = "tokenizers-0.19.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:78e769eb3b2c79687d9cb0f89ef77223e8e279b75c0a968e637ca7043a84463f"}, + {file = "tokenizers-0.19.1-cp37-none-win32.whl", hash = "sha256:72791f9bb1ca78e3ae525d4782e85272c63faaef9940d92142aa3eb79f3407a3"}, + {file = "tokenizers-0.19.1-cp37-none-win_amd64.whl", hash = "sha256:f3bbb7a0c5fcb692950b041ae11067ac54826204318922da754f908d95619fbc"}, + {file = "tokenizers-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:07f9295349bbbcedae8cefdbcfa7f686aa420be8aca5d4f7d1ae6016c128c0c5"}, + {file = "tokenizers-0.19.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10a707cc6c4b6b183ec5dbfc5c34f3064e18cf62b4a938cb41699e33a99e03c1"}, + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6309271f57b397aa0aff0cbbe632ca9d70430839ca3178bf0f06f825924eca22"}, + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ad23d37d68cf00d54af184586d79b84075ada495e7c5c0f601f051b162112dc"}, + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:427c4f0f3df9109314d4f75b8d1f65d9477033e67ffaec4bca53293d3aca286d"}, + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e83a31c9cf181a0a3ef0abad2b5f6b43399faf5da7e696196ddd110d332519ee"}, + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c27b99889bd58b7e301468c0838c5ed75e60c66df0d4db80c08f43462f82e0d3"}, + {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bac0b0eb952412b0b196ca7a40e7dce4ed6f6926489313414010f2e6b9ec2adf"}, + {file = "tokenizers-0.19.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8a6298bde623725ca31c9035a04bf2ef63208d266acd2bed8c2cb7d2b7d53ce6"}, + {file = "tokenizers-0.19.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:08a44864e42fa6d7d76d7be4bec62c9982f6f6248b4aa42f7302aa01e0abfd26"}, + {file = "tokenizers-0.19.1-cp38-none-win32.whl", hash = "sha256:1de5bc8652252d9357a666e609cb1453d4f8e160eb1fb2830ee369dd658e8975"}, + {file = "tokenizers-0.19.1-cp38-none-win_amd64.whl", hash = "sha256:0bcce02bf1ad9882345b34d5bd25ed4949a480cf0e656bbd468f4d8986f7a3f1"}, + {file = "tokenizers-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0b9394bd204842a2a1fd37fe29935353742be4a3460b6ccbaefa93f58a8df43d"}, + {file = "tokenizers-0.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4692ab92f91b87769d950ca14dbb61f8a9ef36a62f94bad6c82cc84a51f76f6a"}, + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6258c2ef6f06259f70a682491c78561d492e885adeaf9f64f5389f78aa49a051"}, + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c85cf76561fbd01e0d9ea2d1cbe711a65400092bc52b5242b16cfd22e51f0c58"}, + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:670b802d4d82bbbb832ddb0d41df7015b3e549714c0e77f9bed3e74d42400fbe"}, + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85aa3ab4b03d5e99fdd31660872249df5e855334b6c333e0bc13032ff4469c4a"}, + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cbf001afbbed111a79ca47d75941e9e5361297a87d186cbfc11ed45e30b5daba"}, + {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c89aa46c269e4e70c4d4f9d6bc644fcc39bb409cb2a81227923404dd6f5227"}, + {file = "tokenizers-0.19.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:39c1ec76ea1027438fafe16ecb0fb84795e62e9d643444c1090179e63808c69d"}, + {file = "tokenizers-0.19.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c2a0d47a89b48d7daa241e004e71fb5a50533718897a4cd6235cb846d511a478"}, + {file = "tokenizers-0.19.1-cp39-none-win32.whl", hash = "sha256:61b7fe8886f2e104d4caf9218b157b106207e0f2a4905c9c7ac98890688aabeb"}, + {file = "tokenizers-0.19.1-cp39-none-win_amd64.whl", hash = "sha256:f97660f6c43efd3e0bfd3f2e3e5615bf215680bad6ee3d469df6454b8c6e8256"}, + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b11853f17b54c2fe47742c56d8a33bf49ce31caf531e87ac0d7d13d327c9334"}, + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d26194ef6c13302f446d39972aaa36a1dda6450bc8949f5eb4c27f51191375bd"}, + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e8d1ed93beda54bbd6131a2cb363a576eac746d5c26ba5b7556bc6f964425594"}, + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca407133536f19bdec44b3da117ef0d12e43f6d4b56ac4c765f37eca501c7bda"}, + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce05fde79d2bc2e46ac08aacbc142bead21614d937aac950be88dc79f9db9022"}, + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:35583cd46d16f07c054efd18b5d46af4a2f070a2dd0a47914e66f3ff5efb2b1e"}, + {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:43350270bfc16b06ad3f6f07eab21f089adb835544417afda0f83256a8bf8b75"}, + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b4399b59d1af5645bcee2072a463318114c39b8547437a7c2d6a186a1b5a0e2d"}, + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6852c5b2a853b8b0ddc5993cd4f33bfffdca4fcc5d52f89dd4b8eada99379285"}, + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd266ae85c3d39df2f7e7d0e07f6c41a55e9a3123bb11f854412952deacd828"}, + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecb2651956eea2aa0a2d099434134b1b68f1c31f9a5084d6d53f08ed43d45ff2"}, + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b279ab506ec4445166ac476fb4d3cc383accde1ea152998509a94d82547c8e2a"}, + {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:89183e55fb86e61d848ff83753f64cded119f5d6e1f553d14ffee3700d0a4a49"}, + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2edbc75744235eea94d595a8b70fe279dd42f3296f76d5a86dde1d46e35f574"}, + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:0e64bfde9a723274e9a71630c3e9494ed7b4c0f76a1faacf7fe294cd26f7ae7c"}, + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0b5ca92bfa717759c052e345770792d02d1f43b06f9e790ca0a1db62838816f3"}, + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f8a20266e695ec9d7a946a019c1d5ca4eddb6613d4f466888eee04f16eedb85"}, + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63c38f45d8f2a2ec0f3a20073cccb335b9f99f73b3c69483cd52ebc75369d8a1"}, + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dd26e3afe8a7b61422df3176e06664503d3f5973b94f45d5c45987e1cb711876"}, + {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:eddd5783a4a6309ce23432353cdb36220e25cbb779bfa9122320666508b44b88"}, + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:56ae39d4036b753994476a1b935584071093b55c7a72e3b8288e68c313ca26e7"}, + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f9939ca7e58c2758c01b40324a59c034ce0cebad18e0d4563a9b1beab3018243"}, + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c330c0eb815d212893c67a032e9dc1b38a803eccb32f3e8172c19cc69fbb439"}, + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec11802450a2487cdf0e634b750a04cbdc1c4d066b97d94ce7dd2cb51ebb325b"}, + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2b718f316b596f36e1dae097a7d5b91fc5b85e90bf08b01ff139bd8953b25af"}, + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ed69af290c2b65169f0ba9034d1dc39a5db9459b32f1dd8b5f3f32a3fcf06eab"}, + {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f8a9c828277133af13f3859d1b6bf1c3cb6e9e1637df0e45312e6b7c2e622b1f"}, + {file = "tokenizers-0.19.1.tar.gz", hash = "sha256:ee59e6680ed0fdbe6b724cf38bd70400a0c1dd623b07ac729087270caeac88e3"}, ] [package.dependencies] -huggingface_hub = ">=0.16.4,<1.0" +huggingface-hub = ">=0.16.4,<1.0" [package.extras] dev = ["tokenizers[testing]"] -docs = ["setuptools_rust", "sphinx", "sphinx_rtd_theme"] -testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"] +docs = ["setuptools-rust", "sphinx", "sphinx-rtd-theme"] +testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests", "ruff"] [[package]] name = "toml" @@ -9148,13 +9018,13 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "transformers" -version = "4.39.3" +version = "4.40.2" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = true python-versions = ">=3.8.0" files = [ - {file = "transformers-4.39.3-py3-none-any.whl", hash = "sha256:7838034a12cca3168247f9d2d1dba6724c9de3ae0f73a108258c6b8fc5912601"}, - {file = "transformers-4.39.3.tar.gz", hash = "sha256:2586e5ff4150f122716fc40f5530e92871befc051848fbe82600969c535b762d"}, + {file = "transformers-4.40.2-py3-none-any.whl", hash = "sha256:71cb94301ec211a2e1d4b8c8d18dcfaa902dfa00a089dceca167a8aa265d6f2d"}, + {file = "transformers-4.40.2.tar.gz", hash = "sha256:657b6054a2097671398d976ad46e60836e7e15f9ea9551631a96e33cb9240649"}, ] [package.dependencies] @@ -9166,21 +9036,21 @@ pyyaml = ">=5.1" regex = "!=2019.12.17" requests = "*" safetensors = ">=0.4.1" -tokenizers = ">=0.14,<0.19" +tokenizers = ">=0.19,<0.20" tqdm = ">=4.27" [package.extras] accelerate = ["accelerate (>=0.21.0)"] agents = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch"] -all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision"] +all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision"] audio = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] codecarbon = ["codecarbon (==1.2.0)"] deepspeed = ["accelerate (>=0.21.0)", "deepspeed (>=0.9.3)"] deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.21.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder (>=0.3.0)", "nltk", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] -dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] -dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.14,<0.19)", "urllib3 (<2.0.0)"] -dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] -docs = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "hf-doc-builder", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision"] +dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.19,<0.20)", "urllib3 (<2.0.0)"] +dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +docs = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "hf-doc-builder", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision"] docs-specific = ["hf-doc-builder"] flax = ["flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "optax (>=0.0.8,<=0.1.4)"] flax-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] @@ -9201,16 +9071,16 @@ serving = ["fastapi", "pydantic", "starlette", "uvicorn"] sigopt = ["sigopt"] sklearn = ["scikit-learn"] speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] -testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder (>=0.3.0)", "nltk", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "tensorboard", "timeout-decorator"] +testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder (>=0.3.0)", "nltk", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] tf = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"] tf-cpu = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow-cpu (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"] tf-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] timm = ["timm"] -tokenizers = ["tokenizers (>=0.14,<0.19)"] +tokenizers = ["tokenizers (>=0.19,<0.20)"] torch = ["accelerate (>=0.21.0)", "torch"] torch-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] torch-vision = ["Pillow (>=10.0.1,<=15.0)", "torchvision"] -torchhub = ["filelock", "huggingface-hub (>=0.19.3,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.14,<0.19)", "torch", "tqdm (>=4.27)"] +torchhub = ["filelock", "huggingface-hub (>=0.19.3,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.19,<0.20)", "torch", "tqdm (>=4.27)"] video = ["av (==9.2.0)", "decord (==0.6.0)"] vision = ["Pillow (>=10.0.1,<=15.0)"] @@ -9303,24 +9173,13 @@ files = [ [[package]] name = "types-pillow" -version = "10.2.0.20240511" +version = "10.2.0.20240520" description = "Typing stubs for Pillow" optional = false python-versions = ">=3.8" files = [ - {file = "types-Pillow-10.2.0.20240511.tar.gz", hash = "sha256:b2fcc27b8e15ae3741941e43b4f39eba6fce6bcb152af90bbb07b387d2585783"}, - {file = "types_Pillow-10.2.0.20240511-py3-none-any.whl", hash = "sha256:ef87a19ea0a02a89c784cbc1b99dfff6c00dd0d5796a8ac868cf7ec69c5f88ff"}, -] - -[[package]] -name = "types-protobuf" -version = "4.25.0.20240417" -description = "Typing stubs for protobuf" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-protobuf-4.25.0.20240417.tar.gz", hash = "sha256:c34eff17b9b3a0adb6830622f0f302484e4c089f533a46e3f147568313544352"}, - {file = "types_protobuf-4.25.0.20240417-py3-none-any.whl", hash = "sha256:e9b613227c2127e3d4881d75d93c93b4d6fd97b5f6a099a0b654a05351c8685d"}, + {file = "types-Pillow-10.2.0.20240520.tar.gz", hash = "sha256:130b979195465fa1e1676d8e81c9c7c30319e8e95b12fae945e8f0d525213107"}, + {file = "types_Pillow-10.2.0.20240520-py3-none-any.whl", hash = "sha256:33c36494b380e2a269bb742181bea5d9b00820367822dbd3760f07210a1da23d"}, ] [[package]] @@ -9413,13 +9272,13 @@ types-pyOpenSSL = "*" [[package]] name = "types-requests" -version = "2.31.0.20240406" +version = "2.32.0.20240523" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, - {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, + {file = "types-requests-2.32.0.20240523.tar.gz", hash = "sha256:26b8a6de32d9f561192b9942b41c0ab2d8010df5677ca8aa146289d11d505f57"}, + {file = "types_requests-2.32.0.20240523-py3-none-any.whl", hash = "sha256:f19ed0e2daa74302069bbbbf9e82902854ffa780bc790742a810a9aaa52f65ec"}, ] [package.dependencies] @@ -9427,24 +9286,24 @@ urllib3 = ">=2" [[package]] name = "types-setuptools" -version = "69.5.0.20240513" +version = "70.0.0.20240523" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.5.0.20240513.tar.gz", hash = "sha256:3a8ccea3e3f1f639856a1dd622be282f74e94e00fdc364630240f999cc9594fc"}, - {file = "types_setuptools-69.5.0.20240513-py3-none-any.whl", hash = "sha256:bd3964c08cffd5a057d9cabe61641c86a41a1b5dd2b652b8d371eed64d89d726"}, + {file = "types-setuptools-70.0.0.20240523.tar.gz", hash = "sha256:268c782f9d657bb0447a97bb9d50debd3a48721bb9d1d8194548d4835798beac"}, + {file = "types_setuptools-70.0.0.20240523-py3-none-any.whl", hash = "sha256:1828c1e2bc93cdb371fd0955fa51e27c3143490fe40a650db3fca22ea44233b3"}, ] [[package]] name = "typing-extensions" -version = "4.11.0" +version = "4.12.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, + {file = "typing_extensions-4.12.0-py3-none-any.whl", hash = "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594"}, + {file = "typing_extensions-4.12.0.tar.gz", hash = "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8"}, ] [[package]] @@ -9473,23 +9332,6 @@ files = [ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] -[[package]] -name = "tzlocal" -version = "5.2" -description = "tzinfo object for the local timezone" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, - {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, -] - -[package.dependencies] -tzdata = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] - [[package]] name = "ujson" version = "5.10.0" @@ -9605,6 +9447,17 @@ h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "uuid6" +version = "2024.1.12" +description = "New time-based UUID formats which are suited for use as a database key" +optional = false +python-versions = ">=3.8" +files = [ + {file = "uuid6-2024.1.12-py3-none-any.whl", hash = "sha256:8150093c8d05a331bc0535bc5ef6cf57ac6eceb2404fd319bc10caee2e02c065"}, + {file = "uuid6-2024.1.12.tar.gz", hash = "sha256:ed0afb3a973057575f9883201baefe402787ca5e11e1d24e377190f0c43f1993"}, +] + [[package]] name = "uvicorn" version = "0.29.0" @@ -9817,13 +9670,13 @@ files = [ [[package]] name = "weaviate-client" -version = "4.6.1" +version = "4.6.3" description = "A python native Weaviate client" optional = false python-versions = ">=3.8" files = [ - {file = "weaviate_client-4.6.1-py3-none-any.whl", hash = "sha256:0db94e5c87f92c9490d90f6de6637baa55dc0d92a3750dd782667b7e5d718ca3"}, - {file = "weaviate_client-4.6.1.tar.gz", hash = "sha256:6d3351f20dd98e3936351473c305ff7660c5ec4bd8b5ad1f11593ef60e8058f6"}, + {file = "weaviate_client-4.6.3-py3-none-any.whl", hash = "sha256:b2921f9aea84a4eccb1c75d55dd2857a87241e5536540fb96ffdf4737ed4fe8a"}, + {file = "weaviate_client-4.6.3.tar.gz", hash = "sha256:a6e638f746f91c310fe6680cffa77949718f17d8b40b966f7037028cacfd94e0"}, ] [package.dependencies] @@ -9964,16 +9817,6 @@ files = [ beautifulsoup4 = "*" requests = ">=2.0.0,<3.0.0" -[[package]] -name = "win-unicode-console" -version = "0.5" -description = "Enable Unicode input and display when running Python from Windows console." -optional = false -python-versions = "*" -files = [ - {file = "win_unicode_console-0.5.zip", hash = "sha256:d4142d4d56d46f449d6f00536a73625a871cba040f0bc1a2e305a04578f07d1e"}, -] - [[package]] name = "win32-setctime" version = "1.1.0" @@ -10301,6 +10144,20 @@ files = [ idna = ">=2.0" multidict = ">=4.0" +[[package]] +name = "youtube-transcript-api" +version = "0.6.2" +description = "This is an python API which allows you to get the transcripts/subtitles for a given YouTube video. It also works for automatically generated subtitles, supports translating subtitles and it does not require a headless browser, like other selenium based solutions do!" +optional = false +python-versions = "*" +files = [ + {file = "youtube_transcript_api-0.6.2-py3-none-any.whl", hash = "sha256:019dbf265c6a68a0591c513fff25ed5a116ce6525832aefdfb34d4df5567121c"}, + {file = "youtube_transcript_api-0.6.2.tar.gz", hash = "sha256:cad223d7620633cec44f657646bffc8bbc5598bd8e70b1ad2fa8277dec305eb7"}, +] + +[package.dependencies] +requests = "*" + [[package]] name = "zep-python" version = "2.0.0rc6" @@ -10318,18 +10175,18 @@ pydantic = ">=2.0.0" [[package]] name = "zipp" -version = "3.18.1" +version = "3.18.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, + {file = "zipp-3.18.2-py3-none-any.whl", hash = "sha256:dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e"}, + {file = "zipp-3.18.2.tar.gz", hash = "sha256:6278d9ddbcfb1f1089a88fde84481528b07b0e10474e09dcfe53dad4069fa059"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [[package]] name = "zope-event" @@ -10351,54 +10208,48 @@ test = ["zope.testrunner"] [[package]] name = "zope-interface" -version = "6.3" +version = "6.4.post1" description = "Interfaces for Python" optional = false python-versions = ">=3.7" files = [ - {file = "zope.interface-6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f32010ffb87759c6a3ad1c65ed4d2e38e51f6b430a1ca11cee901ec2b42e021"}, - {file = "zope.interface-6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e78a183a3c2f555c2ad6aaa1ab572d1c435ba42f1dc3a7e8c82982306a19b785"}, - {file = "zope.interface-6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa0491a9f154cf8519a02026dc85a416192f4cb1efbbf32db4a173ba28b289a"}, - {file = "zope.interface-6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62e32f02b3f26204d9c02c3539c802afc3eefb19d601a0987836ed126efb1f21"}, - {file = "zope.interface-6.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c40df4aea777be321b7e68facb901bc67317e94b65d9ab20fb96e0eb3c0b60a1"}, - {file = "zope.interface-6.3-cp310-cp310-win_amd64.whl", hash = "sha256:46034be614d1f75f06e7dcfefba21d609b16b38c21fc912b01a99cb29e58febb"}, - {file = "zope.interface-6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:600101f43a7582d5b9504a7c629a1185a849ce65e60fca0f6968dfc4b76b6d39"}, - {file = "zope.interface-6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4d6b229f5e1a6375f206455cc0a63a8e502ed190fe7eb15e94a312dc69d40299"}, - {file = "zope.interface-6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10cde8dc6b2fd6a1d0b5ca4be820063e46ddba417ab82bcf55afe2227337b130"}, - {file = "zope.interface-6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40aa8c8e964d47d713b226c5baf5f13cdf3a3169c7a2653163b17ff2e2334d10"}, - {file = "zope.interface-6.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d165d7774d558ea971cb867739fb334faf68fc4756a784e689e11efa3becd59e"}, - {file = "zope.interface-6.3-cp311-cp311-win_amd64.whl", hash = "sha256:69dedb790530c7ca5345899a1b4cb837cc53ba669051ea51e8c18f82f9389061"}, - {file = "zope.interface-6.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8d407e0fd8015f6d5dfad481309638e1968d70e6644e0753f229154667dd6cd5"}, - {file = "zope.interface-6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:72d5efecad16c619a97744a4f0b67ce1bcc88115aa82fcf1dc5be9bb403bcc0b"}, - {file = "zope.interface-6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:567d54c06306f9c5b6826190628d66753b9f2b0422f4c02d7c6d2b97ebf0a24e"}, - {file = "zope.interface-6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483e118b1e075f1819b3c6ace082b9d7d3a6a5eb14b2b375f1b80a0868117920"}, - {file = "zope.interface-6.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb78c12c1ad3a20c0d981a043d133299117b6854f2e14893b156979ed4e1d2c"}, - {file = "zope.interface-6.3-cp312-cp312-win_amd64.whl", hash = "sha256:ad4524289d8dbd6fb5aa17aedb18f5643e7d48358f42c007a5ee51a2afc2a7c5"}, - {file = "zope.interface-6.3-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:a56fe1261230093bfeedc1c1a6cd6f3ec568f9b07f031c9a09f46b201f793a85"}, - {file = "zope.interface-6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:014bb94fe6bf1786da1aa044eadf65bc6437bcb81c451592987e5be91e70a91e"}, - {file = "zope.interface-6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e8a218e8e2d87d4d9342aa973b7915297a08efbebea5b25900c73e78ed468e"}, - {file = "zope.interface-6.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f95bebd0afe86b2adc074df29edb6848fc4d474ff24075e2c263d698774e108d"}, - {file = "zope.interface-6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:d0e7321557c702bd92dac3c66a2f22b963155fdb4600133b6b29597f62b71b12"}, - {file = "zope.interface-6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:187f7900b63845dcdef1be320a523dbbdba94d89cae570edc2781eb55f8c2f86"}, - {file = "zope.interface-6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a058e6cf8d68a5a19cb5449f42a404f0d6c2778b897e6ce8fadda9cea308b1b0"}, - {file = "zope.interface-6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8fa0fb05083a1a4216b4b881fdefa71c5d9a106e9b094cd4399af6b52873e91"}, - {file = "zope.interface-6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:26c9a37fb395a703e39b11b00b9e921c48f82b6e32cc5851ad5d0618cd8876b5"}, - {file = "zope.interface-6.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b0c4c90e5eefca2c3e045d9f9ed9f1e2cdbe70eb906bff6b247e17119ad89a1"}, - {file = "zope.interface-6.3-cp38-cp38-win_amd64.whl", hash = "sha256:5683aa8f2639016fd2b421df44301f10820e28a9b96382a6e438e5c6427253af"}, - {file = "zope.interface-6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2c3cfb272bcb83650e6695d49ae0d14dd06dc694789a3d929f23758557a23d92"}, - {file = "zope.interface-6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:01a0b3dd012f584afcf03ed814bce0fc40ed10e47396578621509ac031be98bf"}, - {file = "zope.interface-6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4137025731e824eee8d263b20682b28a0bdc0508de9c11d6c6be54163e5b7c83"}, - {file = "zope.interface-6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c8731596198198746f7ce2a4487a0edcbc9ea5e5918f0ab23c4859bce56055c"}, - {file = "zope.interface-6.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf34840e102d1d0b2d39b1465918d90b312b1119552cebb61a242c42079817b9"}, - {file = "zope.interface-6.3-cp39-cp39-win_amd64.whl", hash = "sha256:a1adc14a2a9d5e95f76df625a9b39f4709267a483962a572e3f3001ef90ea6e6"}, - {file = "zope.interface-6.3.tar.gz", hash = "sha256:f83d6b4b22262d9a826c3bd4b2fbfafe1d0000f085ef8e44cd1328eea274ae6a"}, + {file = "zope.interface-6.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:16f73c42f10f761051157332943ee1f7cf973cc1c78a50d1960c313a211cca4a"}, + {file = "zope.interface-6.4.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ca89624d0eabc7ce4f299c6d621531cb8b0ebac3bb4f9ebf2d057477602e1b8"}, + {file = "zope.interface-6.4.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de6eaa0b7df493904d24050dcdc3db6589bd94f7e49caab57971fe47a669b3ea"}, + {file = "zope.interface-6.4.post1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a45a7990d143acc37faa905d4a528f5923a5dd30f46536977d8061d10a895b09"}, + {file = "zope.interface-6.4.post1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcefd4012593ee410ebf5728ee98f61b3401f0563c5068e760aa2b7720ca68a0"}, + {file = "zope.interface-6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:36234d3b8211d053c42684666c2a04eb1a35e0cec6bc3e54586bb60fb0be3b17"}, + {file = "zope.interface-6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c18218451823ca9b5131ceaacf655fe9dd4e592ebf848cb0a65fe8428bbf604"}, + {file = "zope.interface-6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:563a7192a5baf8d9b189dc598c3555e695e00fdce3eafb88b30d6d3df986fcc5"}, + {file = "zope.interface-6.4.post1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd3ab863a4e7d888728c949ba052a649664dea156bdd7140eb9269bbe6e33205"}, + {file = "zope.interface-6.4.post1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52901ff6d75a4332457610cbd2883f39b386c5bebe0745ecf78e3fe22cfdd0d9"}, + {file = "zope.interface-6.4.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:799743a342249c9b9529abd1115a3f81754800e75dea254b58efdd2984009798"}, + {file = "zope.interface-6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:15fa208d7a802c0dd3e9d4d5336619a37efd57f2d2ce830d9f9d5843a2b7daba"}, + {file = "zope.interface-6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d91698257850ca5f523a5513a69775e6fb7c18129311e118996f8e9b463d11b0"}, + {file = "zope.interface-6.4.post1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:45fb6fe8b5852564e63d6705a7904530a7c886056e6e9aaf938dc5e2bc637097"}, + {file = "zope.interface-6.4.post1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec57dec41c0c8b723dd70da1864d50908c689e1c9cf43f32e9b04c0992e5d93d"}, + {file = "zope.interface-6.4.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de6c1dad571276768fd6bc92999e8d942151552662a9048e3384cac05b148985"}, + {file = "zope.interface-6.4.post1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaa1f8967c3f272de80c4bec4b1379f97cd29006323f50558bd2f780a4f637ef"}, + {file = "zope.interface-6.4.post1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8140cf2665c5a07adc285bc859fdda67cfbd7edd62480dfca2211f4798502b54"}, + {file = "zope.interface-6.4.post1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:18f4061c3456c61557e9d7068e435f5db164b38f15f3d9bd995ff185c6db2c62"}, + {file = "zope.interface-6.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a430d2cc52aef2af0dc45866852730fbc93463cf8cdeb179e8ee04440e0955c4"}, + {file = "zope.interface-6.4.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:065f8ff0e034e43b8da05ffed308a9e3311720a2b13b83724f26a8dd6709964d"}, + {file = "zope.interface-6.4.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0940b3b44b6cc0375ea0da5fefee05a9abe8bb53594a3a6e4aafb9f99dc5de8d"}, + {file = "zope.interface-6.4.post1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d200aef16e577682dd54a79ff5f4f897a9807722b54bd8a9bca404679c609d"}, + {file = "zope.interface-6.4.post1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e0678885d07e865047e15be3ebe5c87903cc7f5ca5edfd0045d1c7b43f7fe9d"}, + {file = "zope.interface-6.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bf9fa875a9bae5318f24b0d9ab9e2c8a23bccad2979e9e4305eed8119bbe3195"}, + {file = "zope.interface-6.4.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68b13ac49becfaba5b77359559812daac0c5c4b3c0d43cdb293a2dec8db95c24"}, + {file = "zope.interface-6.4.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a00983c5c793b17b829020e11032dabab023c4e0ef12f134b90df802ae5adf2"}, + {file = "zope.interface-6.4.post1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ada5ac54ac7d34bb33423da40b7f3edfc54c6b9623ac9daac7f456dbf25173ba"}, + {file = "zope.interface-6.4.post1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297ee171f40f8f18665bb75f576df7d1ddce19f3e6696ef6acb930dcbfbf693f"}, + {file = "zope.interface-6.4.post1.tar.gz", hash = "sha256:e9961413091e3c9d5c3ed671757049cc6153280f39a154a0b633608efcfdec6b"}, ] [package.dependencies] setuptools = "*" [package.extras] -docs = ["Sphinx", "repoze.sphinx.autointerface", "sphinx-rtd-theme"] +docs = ["Sphinx", "repoze.sphinx.autointerface", "sphinx_rtd_theme"] test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] @@ -10409,4 +10260,4 @@ local = ["ctransformers", "llama-cpp-python", "sentence-transformers"] [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.13" -content-hash = "1e59b887d9cef40cd980e2cb698c48e135911400176d8bef1012ddc8853e420a" +content-hash = "33629727ceeb0aa86064658e89349c24fd786bb1bd3833f093651b70b264edb7" diff --git a/pyproject.toml b/pyproject.toml index 55edcab69..6a5401bea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langflow" -version = "1.0.0a33" +version = "1.0.0a37" description = "A Python package with a built-in web application" authors = ["Langflow "] maintainers = [ @@ -29,21 +29,20 @@ python = ">=3.10,<3.13" langflow-base = { path = "./src/backend/base", develop = true } beautifulsoup4 = "^4.12.2" google-search-results = "^2.4.1" -google-api-python-client = "^2.118.0" +google-api-python-client = "^2.130.0" huggingface-hub = { version = "^0.20.0", extras = ["inference"] } llama-cpp-python = { version = "~0.2.0", optional = true } networkx = "^3.1" -pysrt = "^1.1.2" -fake-useragent = "^1.4.0" +fake-useragent = "^1.5.0" psycopg2-binary = "^2.9.6" pyarrow = "^14.0.0" wikipedia = "^1.4.0" -qdrant-client = "^1.7.0" +qdrant-client = "^1.9.0" weaviate-client = "*" sentence-transformers = { version = "^2.3.1", optional = true } ctransformers = { version = "^0.2.10", optional = true } -cohere = "^5.1.7" -faiss-cpu = "^1.7.4" +cohere = "^5.5.3" +faiss-cpu = "^1.8.0" types-cachetools = "^5.3.0.5" pinecone-client = "^3.0.3" pymongo = "^4.6.0" @@ -57,10 +56,9 @@ redis = { version = "^5.0.1", optional = true } flower = { version = "^2.0.0", optional = true } metaphor-python = "^0.1.11" pywin32 = { version = "^306", markers = "sys_platform == 'win32'" } -langfuse = "^2.9.0" +langfuse = "^2.33.0" metal-sdk = "^2.5.0" markupsafe = "^2.1.3" -extract-msg = "^0.47.0" # jq is not available for windows boto3 = "^1.34.0" numexpr = "^2.8.6" @@ -71,41 +69,41 @@ langchain-google-genai = "^1.0.1" langchain-cohere = "^0.1.0rc1" elasticsearch = "^8.12.0" pytube = "^15.0.0" -llama-index = "^0.10.13" -# unstructured = { extras = ["md"], version = "^0.12.4" } dspy-ai = "^2.4.0" -html2text = "^2024.2.26" -assemblyai = "^0.23.1" -litellm = "^1.34.22" -chromadb = "^0.4.24" +assemblyai = "^0.26.0" +litellm = "^1.38.0" +chromadb = "^0.5.0" langchain-anthropic = "^0.1.6" -langchain-astradb = "^0.1.0" +langchain-astradb = "^0.3.0" langchain-openai = "^0.1.1" zep-python = { version = "^2.0.0rc5", allow-prereleases = true } langchain-google-vertexai = "^1.0.3" langchain-groq = "^0.1.3" langchain-pinecone = "^0.1.0" langchain-mistralai = "^0.1.6" +couchbase = "^4.2.1" +youtube-transcript-api = "^0.6.2" +markdown = "^3.6" [tool.poetry.group.dev.dependencies] types-redis = "^4.6.0.5" ipykernel = "^6.29.0" -mypy = "^1.9.0" -ruff = "^0.3.5" +mypy = "^1.10.0" +ruff = "^0.4.5" httpx = "*" -pytest = "^8.1.0" -types-requests = "^2.31.0" -requests = "^2.31.0" -pytest-cov = "^4.1.0" +pytest = "^8.2.0" +types-requests = "^2.32.0" +requests = "^2.32.0" +pytest-cov = "^5.0.0" pandas-stubs = "^2.1.4.231227" types-pillow = "^10.2.0.20240213" types-pyyaml = "^6.0.12.8" types-python-jose = "^3.3.4.8" types-passlib = "^1.7.7.13" locust = "^2.23.1" -pytest-mock = "^3.12.0" -pytest-xdist = "^3.5.0" +pytest-mock = "^3.14.0" +pytest-xdist = "^3.6.0" types-pywin32 = "^306.0.0.4" types-google-cloud-ndb = "^2.2.0.0" pytest-sugar = "^1.0.0" @@ -134,7 +132,7 @@ ignore-regex = '.*(Stati Uniti|Tense=Pres).*' [tool.pytest.ini_options] minversion = "6.0" -addopts = "-ra" +addopts = "-ra -n auto" testpaths = ["tests", "integration"] console_output_style = "progress" filterwarnings = ["ignore::DeprecationWarning"] diff --git a/scripts/aws/lib/construct/db.ts b/scripts/aws/lib/construct/db.ts index 34cb8a482..255ec663c 100644 --- a/scripts/aws/lib/construct/db.ts +++ b/scripts/aws/lib/construct/db.ts @@ -1,65 +1,85 @@ -import { Construct } from 'constructs'; -import * as ec2 from 'aws-cdk-lib/aws-ec2' +import { Construct } from "constructs"; +import * as ec2 from "aws-cdk-lib/aws-ec2"; import * as rds from "aws-cdk-lib/aws-rds"; -import * as cdk from 'aws-cdk-lib'; +import * as cdk from "aws-cdk-lib"; interface RdsProps { - vpc: ec2.Vpc - dbSG:ec2.SecurityGroup + vpc: ec2.Vpc; + dbSG: ec2.SecurityGroup; } -export class Rds extends Construct{ - readonly rdsCluster: rds.DatabaseCluster +export class Rds extends Construct { + readonly rdsCluster: rds.DatabaseCluster; - constructor(scope: Construct, id:string, props: RdsProps){ + constructor(scope: Construct, id: string, props: RdsProps) { super(scope, id); - const {vpc, dbSG} = props - const instanceType = ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE4_GRAVITON, ec2.InstanceSize.MEDIUM) + const { vpc, dbSG } = props; + const instanceType = ec2.InstanceType.of( + ec2.InstanceClass.BURSTABLE4_GRAVITON, + ec2.InstanceSize.MEDIUM, + ); // RDSのパスワードを自動生成してSecrets Managerに格納 - const rdsCredentials = rds.Credentials.fromGeneratedSecret('db_user',{ - secretName: 'langflow-DbSecret', - }) - + const rdsCredentials = rds.Credentials.fromGeneratedSecret("db_user", { + secretName: "langflow-DbSecret", + }); + // DB クラスターのパラメータグループ作成 - const clusterParameterGroup = new rds.ParameterGroup(scope, 'ClusterParameterGroup',{ - engine: rds.DatabaseClusterEngine.auroraMysql({ - version: rds.AuroraMysqlEngineVersion.VER_3_02_0 - }), - description: 'for-langflow', - }) - clusterParameterGroup.bindToCluster({}) + const clusterParameterGroup = new rds.ParameterGroup( + scope, + "ClusterParameterGroup", + { + engine: rds.DatabaseClusterEngine.auroraMysql({ + version: rds.AuroraMysqlEngineVersion.of( + "8.0.mysql_aurora.3.05.2", + "8.0", + ), + }), + description: "for-langflow", + }, + ); + clusterParameterGroup.bindToCluster({}); // DB インスタンスのパラメタグループ作成 - const instanceParameterGroup = new rds.ParameterGroup(scope, 'InstanceParameterGroup',{ - engine: rds.DatabaseClusterEngine.auroraMysql({ - version: rds.AuroraMysqlEngineVersion.VER_3_02_0, - }), - description: 'for-langflow', - }) - instanceParameterGroup.bindToInstance({}) + const instanceParameterGroup = new rds.ParameterGroup( + scope, + "InstanceParameterGroup", + { + engine: rds.DatabaseClusterEngine.auroraMysql({ + version: rds.AuroraMysqlEngineVersion.of( + "8.0.mysql_aurora.3.05.2", + "8.0", + ), + }), + description: "for-langflow", + }, + ); + instanceParameterGroup.bindToInstance({}); - this.rdsCluster = new rds.DatabaseCluster(scope, 'LangflowDbCluster', { + this.rdsCluster = new rds.DatabaseCluster(scope, "LangflowDbCluster", { engine: rds.DatabaseClusterEngine.auroraMysql({ - version: rds.AuroraMysqlEngineVersion.VER_3_02_0, + version: rds.AuroraMysqlEngineVersion.of( + "8.0.mysql_aurora.3.05.2", + "8.0", + ), }), storageEncrypted: true, credentials: rdsCredentials, - instanceIdentifierBase: 'langflow-instance', - vpc:vpc, - vpcSubnets:vpc.selectSubnets({ - subnetGroupName: 'langflow-Isolated', + instanceIdentifierBase: "langflow-instance", + vpc: vpc, + vpcSubnets: vpc.selectSubnets({ + subnetGroupName: "langflow-Isolated", }), - securityGroups:[dbSG], + securityGroups: [dbSG], writer: rds.ClusterInstance.provisioned("WriterInstance", { instanceType: instanceType, enablePerformanceInsights: true, - parameterGroup:instanceParameterGroup, + parameterGroup: instanceParameterGroup, }), - // 2台目以降はreaders:で設定 + // 2台目以降はreaders:で設定 parameterGroup: clusterParameterGroup, - defaultDatabaseName: 'langflow', - }) + defaultDatabaseName: "langflow", + }); } } diff --git a/scripts/aws/package-lock.json b/scripts/aws/package-lock.json index 4deefa752..c1be6a071 100644 --- a/scripts/aws/package-lock.json +++ b/scripts/aws/package-lock.json @@ -8,35 +8,35 @@ "name": "cdk", "version": "0.1.0", "dependencies": { - "@aws-solutions-constructs/aws-cloudfront-s3": "^2.49.0", - "aws-cdk-lib": "^2.124.0", - "cdk-ecr-deployment": "^2.5.30", - "constructs": "^10.0.0", - "deploy-time-build": "^0.3.12", - "dotenv": "^16.3.1", + "@aws-solutions-constructs/aws-cloudfront-s3": "^2.57.0", + "aws-cdk-lib": "^2.141.0", + "cdk-ecr-deployment": "^3.0.55", + "constructs": "^10.3.0", + "deploy-time-build": "^0.3.21", + "dotenv": "^16.4.5", "source-map-support": "^0.5.21" }, "bin": { "cdk": "bin/cdk.js" }, "devDependencies": { - "@types/jest": "^29.5.1", - "@types/node": "20.1.7", - "aws-cdk": "^2.86.0", - "jest": "^29.5.0", - "ts-jest": "^29.1.0", - "ts-node": "^10.9.1", - "typescript": "~5.1.3" + "@types/jest": "^29.5.12", + "@types/node": "^20.12.12", + "aws-cdk": "^2.141.0", + "jest": "^29.7.0", + "ts-jest": "^29.1.2", + "ts-node": "^10.9.2", + "typescript": "^5.4.5" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -53,72 +53,87 @@ "integrity": "sha512-3M2tELJOxQv0apCIiuKQ4pAbncz9GuLwnKFqxifWfe77wuMxyTRPmxssYHs42ePqzap1LT6GDcPygGs+hHstLg==" }, "node_modules/@aws-cdk/asset-node-proxy-agent-v6": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.1.tgz", - "integrity": "sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.3.tgz", + "integrity": "sha512-twhuEG+JPOYCYPx/xy5uH2+VUsIEhPTzDY0F1KuB+ocjWWB/KEDiOVL19nHvbPCB6fhWnkykXEMJ4HHcKvjtvg==" }, - "node_modules/@aws-solutions-constructs/aws-cloudfront-s3": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@aws-solutions-constructs/aws-cloudfront-s3/-/aws-cloudfront-s3-2.49.0.tgz", - "integrity": "sha512-0VMtl+Ma+aLZo3Nuvq9bTl/Oz9vn5OaPEOELr9pe8kYuoHwGQUGuxXP/xJlQUWbXwR3JCQVcN5k4kdnD5eLXFw==", - "dependencies": { - "@aws-solutions-constructs/core": "2.49.0", - "@aws-solutions-constructs/resources": "2.49.0" + "node_modules/@aws-cdk/integ-tests-alpha": { + "version": "2.138.0-alpha.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/integ-tests-alpha/-/integ-tests-alpha-2.138.0-alpha.0.tgz", + "integrity": "sha512-TqLcJbC9VX05X2Py2GpFZ8quO7Mj3i1NuerekzqM8RV8AiU3aPMcZFGRK+MdXHNIiGzYx9ZGfMPERVT4Qqwn6A==", + "engines": { + "node": ">= 14.15.0" }, "peerDependencies": { - "@aws-solutions-constructs/core": "2.49.0", - "@aws-solutions-constructs/resources": "2.49.0", - "aws-cdk-lib": "^2.118.0", + "aws-cdk-lib": "^2.138.0", + "constructs": "^10.0.0" + } + }, + "node_modules/@aws-solutions-constructs/aws-cloudfront-s3": { + "version": "2.57.0", + "resolved": "https://registry.npmjs.org/@aws-solutions-constructs/aws-cloudfront-s3/-/aws-cloudfront-s3-2.57.0.tgz", + "integrity": "sha512-ReL7pk7UE2Xgg0mw6v8TmMC6Jhkmv1R4s3UZqM9w4RMXzp3LceS78YZLJHBT6m8AAT6wxY4kAFqJNoUZJ7fFKg==", + "dependencies": { + "@aws-cdk/integ-tests-alpha": "2.138.0-alpha.0", + "@aws-solutions-constructs/core": "2.57.0", + "@aws-solutions-constructs/resources": "2.57.0", + "constructs": "^10.0.0" + }, + "peerDependencies": { + "@aws-solutions-constructs/core": "2.57.0", + "@aws-solutions-constructs/resources": "2.57.0", + "aws-cdk-lib": "^2.138.0", "constructs": "^10.0.0" } }, "node_modules/@aws-solutions-constructs/core": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@aws-solutions-constructs/core/-/core-2.49.0.tgz", - "integrity": "sha512-SZ3CBYF6jVQj0DSNwhksqwz5ohW4w+DlgKiZhrO9gLiW4YcRrxFzwQ7I9FHFUDPZOxsN4NmsuQNj/3s02gycmQ==", + "version": "2.57.0", + "resolved": "https://registry.npmjs.org/@aws-solutions-constructs/core/-/core-2.57.0.tgz", + "integrity": "sha512-AGDqfup4vfo1ueum44M70lcnUPVFM1jZhK9XVksxEQdQJA1T6O1OdcGGJO3aw3vQVC+9YS9upTYCfHUyC5j3qw==", "bundleDependencies": [ "deepmerge", "npmlog", "deep-diff" ], "dependencies": { + "@aws-cdk/integ-tests-alpha": "2.138.0-alpha.0", + "constructs": "^10.0.0", "deep-diff": "^1.0.2", "deepmerge": "^4.0.0", - "npmlog": "^4.1.2" + "npmlog": "^7.0.0" }, "peerDependencies": { - "aws-cdk-lib": "^2.118.0", + "aws-cdk-lib": "^2.138.0", "constructs": "^10.0.0" } }, "node_modules/@aws-solutions-constructs/core/node_modules/ansi-regex": { - "version": "2.1.1", + "version": "5.0.1", "inBundle": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/@aws-solutions-constructs/core/node_modules/aproba": { - "version": "1.2.0", + "version": "2.0.0", "inBundle": true, "license": "ISC" }, "node_modules/@aws-solutions-constructs/core/node_modules/are-we-there-yet": { - "version": "1.1.7", + "version": "4.0.2", "inBundle": true, "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-solutions-constructs/core/node_modules/code-point-at": { - "version": "1.1.0", + "node_modules/@aws-solutions-constructs/core/node_modules/color-support": { + "version": "1.1.3", "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "bin": { + "color-support": "bin.js" } }, "node_modules/@aws-solutions-constructs/core/node_modules/console-control-strings": { @@ -126,11 +141,6 @@ "inBundle": true, "license": "ISC" }, - "node_modules/@aws-solutions-constructs/core/node_modules/core-util-is": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT" - }, "node_modules/@aws-solutions-constructs/core/node_modules/deep-diff": { "version": "1.0.2", "inBundle": true, @@ -144,29 +154,27 @@ "node": ">=0.10.0" } }, - "node_modules/@aws-solutions-constructs/core/node_modules/delegates": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, "node_modules/@aws-solutions-constructs/core/node_modules/emoji-regex": { "version": "8.0.0", "inBundle": true, "license": "MIT" }, "node_modules/@aws-solutions-constructs/core/node_modules/gauge": { - "version": "2.7.4", + "version": "5.0.2", "inBundle": true, "license": "ISC", "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@aws-solutions-constructs/core/node_modules/has-unicode": { @@ -174,142 +182,7 @@ "inBundle": true, "license": "ISC" }, - "node_modules/@aws-solutions-constructs/core/node_modules/inherits": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC" - }, "node_modules/@aws-solutions-constructs/core/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/isarray": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@aws-solutions-constructs/core/node_modules/npmlog": { - "version": "4.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/number-is-nan": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/object-assign": { - "version": "4.1.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/process-nextick-args": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@aws-solutions-constructs/core/node_modules/readable-stream": { - "version": "2.3.8", - "inBundle": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/safe-buffer": { - "version": "5.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@aws-solutions-constructs/core/node_modules/set-blocking": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@aws-solutions-constructs/core/node_modules/signal-exit": { - "version": "3.0.7", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@aws-solutions-constructs/core/node_modules/string_decoder": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/string-width": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/strip-ansi": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/util-deprecate": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@aws-solutions-constructs/core/node_modules/wide-align": { - "version": "1.1.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/wide-align/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@aws-solutions-constructs/core/node_modules/wide-align/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "inBundle": true, "license": "MIT", @@ -317,7 +190,37 @@ "node": ">=8" } }, - "node_modules/@aws-solutions-constructs/core/node_modules/wide-align/node_modules/string-width": { + "node_modules/@aws-solutions-constructs/core/node_modules/npmlog": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@aws-solutions-constructs/core/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/@aws-solutions-constructs/core/node_modules/signal-exit": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@aws-solutions-constructs/core/node_modules/string-width": { "version": "4.2.3", "inBundle": true, "license": "MIT", @@ -330,7 +233,7 @@ "node": ">=8" } }, - "node_modules/@aws-solutions-constructs/core/node_modules/wide-align/node_modules/strip-ansi": { + "node_modules/@aws-solutions-constructs/core/node_modules/strip-ansi": { "version": "6.0.1", "inBundle": true, "license": "MIT", @@ -341,136 +244,75 @@ "node": ">=8" } }, + "node_modules/@aws-solutions-constructs/core/node_modules/wide-align": { + "version": "1.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/@aws-solutions-constructs/resources": { - "version": "2.49.0", - "resolved": "https://registry.npmjs.org/@aws-solutions-constructs/resources/-/resources-2.49.0.tgz", - "integrity": "sha512-HHx9tTA36plfVxzzQ+qjHCJOo6ikHR+xEqtb1dDBQvgtWo3SnEbWAKBDqNPA6DGn7PoFhxE0zA0ntj7RfFjeLQ==", + "version": "2.57.0", + "resolved": "https://registry.npmjs.org/@aws-solutions-constructs/resources/-/resources-2.57.0.tgz", + "integrity": "sha512-2LYLlTF8GPvKY1KIFcF7MJNO7vnND7g93+FZY3sg95cSB6U9wKqhVdEn1LRGZLGljmsJJBHxUSedy8TOVIjOsQ==", "bundleDependencies": [ "@aws-sdk/client-kms", "@aws-sdk/client-s3", "aws-sdk-client-mock" ], "dependencies": { + "@aws-cdk/integ-tests-alpha": "2.138.0-alpha.0", "@aws-sdk/client-kms": "^3.478.0", "@aws-sdk/client-s3": "^3.478.0", - "@aws-solutions-constructs/core": "2.49.0", - "aws-sdk-client-mock": "^3.0.0" + "@aws-solutions-constructs/core": "2.57.0", + "aws-sdk-client-mock": "^3.0.0", + "constructs": "^10.0.0" }, "peerDependencies": { - "@aws-solutions-constructs/core": "2.49.0", - "aws-cdk-lib": "^2.118.0", + "@aws-solutions-constructs/core": "2.57.0", + "aws-cdk-lib": "^2.138.0", "constructs": "^10.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -486,14 +328,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", - "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -501,14 +343,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -551,28 +393,28 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -582,88 +424,89 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -741,9 +584,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -813,12 +656,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -915,12 +758,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -930,34 +773,34 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", - "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.3", - "@babel/types": "^7.23.3", - "debug": "^4.1.0", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -965,13 +808,13 @@ } }, "node_modules/@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1310,32 +1153,32 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -1348,9 +1191,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1364,9 +1207,9 @@ "dev": true }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -1382,9 +1225,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", "dev": true }, "node_modules/@tsconfig/node12": { @@ -1406,9 +1249,9 @@ "dev": true }, "node_modules/@types/babel__core": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.4.tgz", - "integrity": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -1419,9 +1262,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -1438,9 +1281,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -1480,9 +1323,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.8", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.8.tgz", - "integrity": "sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -1490,10 +1333,13 @@ } }, "node_modules/@types/node": { - "version": "20.1.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.7.tgz", - "integrity": "sha512-WCuw/o4GSwDGMoonES8rcvwsig77dGCMbZDrZr2x4ZZiNW4P/gcoZXe/0twgtobcTkmg9TuKflxYL/DuwDyJzg==", - "dev": true + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -1502,9 +1348,9 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.31", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", - "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -1517,9 +1363,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1529,9 +1375,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" @@ -1605,9 +1451,9 @@ } }, "node_modules/aws-cdk": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.86.0.tgz", - "integrity": "sha512-GRcdU6p00Zu3fIZYPG+EbpDYppYMtzebuf0jrmCfKhCytRGaPWDHHfu3hrv0de4d0zbUD/+AmiODPMu3J6nXbQ==", + "version": "2.141.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.141.0.tgz", + "integrity": "sha512-RM9uDiETBEKCHemItaRGVjOLwoZ5iqXnejpyXY7+YF75c2c0Ui7HSZI8QD0stDg3S/2UbLcKv2RA9dBsjrWUGA==", "dev": true, "bin": { "cdk": "bin/cdk" @@ -1620,9 +1466,9 @@ } }, "node_modules/aws-cdk-lib": { - "version": "2.124.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.124.0.tgz", - "integrity": "sha512-K/Tey8TMw30GO6UD0qb19CPhBMZhleGshz520ZnbDUJwNfFtejwZOnpmRMOdUP9f4tHc5BrXl1VGsZtXtUaGhg==", + "version": "2.141.0", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.141.0.tgz", + "integrity": "sha512-xda56Lfwpdqg9MssnFdXrAKTmeeNjfrfFCaWwqGqToG6cfGY2W+6wyyoObX60/MeZGhhs3Lhdb/K94ulLJ4X/A==", "bundleDependencies": [ "@balena/dockerignore", "case", @@ -1633,21 +1479,23 @@ "punycode", "semver", "table", - "yaml" + "yaml", + "mime-types" ], "dependencies": { "@aws-cdk/asset-awscli-v1": "^2.2.202", "@aws-cdk/asset-kubectl-v20": "^2.1.2", - "@aws-cdk/asset-node-proxy-agent-v6": "^2.0.1", + "@aws-cdk/asset-node-proxy-agent-v6": "^2.0.3", "@balena/dockerignore": "^1.0.2", "case": "1.6.3", "fs-extra": "^11.2.0", - "ignore": "^5.3.0", + "ignore": "^5.3.1", "jsonschema": "^1.4.1", + "mime-types": "^2.1.35", "minimatch": "^3.1.2", "punycode": "^2.3.1", - "semver": "^7.5.4", - "table": "^6.8.1", + "semver": "^7.6.0", + "table": "^6.8.2", "yaml": "1.10.2" }, "engines": { @@ -1663,14 +1511,14 @@ "license": "Apache-2.0" }, "node_modules/aws-cdk-lib/node_modules/ajv": { - "version": "8.12.0", + "version": "8.13.0", "inBundle": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -1779,7 +1627,7 @@ "license": "ISC" }, "node_modules/aws-cdk-lib/node_modules/ignore": { - "version": "5.3.0", + "version": "5.3.1", "inBundle": true, "license": "MIT", "engines": { @@ -1834,6 +1682,25 @@ "node": ">=10" } }, + "node_modules/aws-cdk-lib/node_modules/mime-db": { + "version": "1.52.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/mime-types": { + "version": "2.1.35", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/aws-cdk-lib/node_modules/minimatch": { "version": "3.1.2", "inBundle": true, @@ -1862,7 +1729,7 @@ } }, "node_modules/aws-cdk-lib/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.0", "inBundle": true, "license": "ISC", "dependencies": { @@ -1916,7 +1783,7 @@ } }, "node_modules/aws-cdk-lib/node_modules/table": { - "version": "6.8.1", + "version": "6.8.2", "inBundle": true, "license": "BSD-3-Clause", "dependencies": { @@ -2095,9 +1962,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -2114,9 +1981,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -2171,9 +2038,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001561", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", - "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", + "version": "1.0.30001618", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001618.tgz", + "integrity": "sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==", "dev": true, "funding": [ { @@ -2191,9 +2058,9 @@ ] }, "node_modules/cdk-ecr-deployment": { - "version": "2.5.30", - "resolved": "https://registry.npmjs.org/cdk-ecr-deployment/-/cdk-ecr-deployment-2.5.30.tgz", - "integrity": "sha512-IFS/DD6OmNcXv24YKjjaz1sb04xxsoUb7vPYwx7kTBAOxOnT0CuAadF8/HVfM/YVoqoOPXCJe3ikAXy1iI0nKw==", + "version": "3.0.55", + "resolved": "https://registry.npmjs.org/cdk-ecr-deployment/-/cdk-ecr-deployment-3.0.55.tgz", + "integrity": "sha512-z10vrHqdFX08uNT3KPFU6TeBJIP+j0xst0atwW7XL1TK3TPe8CSUG+LAs2Uh0dkX3fsVesAWEIbw4QmiMiIsoQ==", "bundleDependencies": [ "got", "hpagent" @@ -2243,12 +2110,15 @@ } }, "node_modules/cdk-ecr-deployment/node_modules/@types/cacheable-request/node_modules/@types/node": { - "version": "20.3.3", + "version": "20.12.11", "inBundle": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/cdk-ecr-deployment/node_modules/@types/http-cache-semantics": { - "version": "4.0.1", + "version": "4.0.4", "inBundle": true, "license": "MIT" }, @@ -2261,12 +2131,15 @@ } }, "node_modules/cdk-ecr-deployment/node_modules/@types/keyv/node_modules/@types/node": { - "version": "20.3.3", + "version": "20.12.11", "inBundle": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/cdk-ecr-deployment/node_modules/@types/responselike": { - "version": "1.0.0", + "version": "1.0.3", "inBundle": true, "license": "MIT", "dependencies": { @@ -2274,9 +2147,12 @@ } }, "node_modules/cdk-ecr-deployment/node_modules/@types/responselike/node_modules/@types/node": { - "version": "20.3.3", + "version": "20.12.11", "inBundle": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/cdk-ecr-deployment/node_modules/cacheable-lookup": { "version": "5.0.4", @@ -2303,20 +2179,6 @@ "node": ">=8" } }, - "node_modules/cdk-ecr-deployment/node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cdk-ecr-deployment/node_modules/clone-response": { "version": "1.0.3", "inBundle": true, @@ -2366,6 +2228,20 @@ "once": "^1.4.0" } }, + "node_modules/cdk-ecr-deployment/node_modules/get-stream": { + "version": "5.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cdk-ecr-deployment/node_modules/got": { "version": "11.8.6", "inBundle": true, @@ -2418,7 +2294,7 @@ "license": "MIT" }, "node_modules/cdk-ecr-deployment/node_modules/keyv": { - "version": "4.5.2", + "version": "4.5.4", "inBundle": true, "license": "MIT", "dependencies": { @@ -2507,6 +2383,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cdk-ecr-deployment/node_modules/undici-types": { + "version": "5.26.5", + "inBundle": true, + "license": "MIT" + }, "node_modules/cdk-ecr-deployment/node_modules/wrappy": { "version": "1.0.2", "inBundle": true, @@ -2553,9 +2434,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, "node_modules/cliui": { @@ -2685,9 +2566,9 @@ } }, "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -2708,9 +2589,9 @@ } }, "node_modules/deploy-time-build": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/deploy-time-build/-/deploy-time-build-0.3.12.tgz", - "integrity": "sha512-fVyuwB0Nh7mOLYswhHIHv3NOCeTWyNAjzM8cqSBnuhfvRKSdLZUFPnfwlPk1VgvYp9lfrxBZ+eicjWPBrAr53g==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/deploy-time-build/-/deploy-time-build-0.3.21.tgz", + "integrity": "sha512-lbc5TS08md+5e+cU4sxpDzOiUNWOEfuvElhapPHGWMrzJjINdiAv6hw9vc5ExnTZmYoOCcE1oNdaVbc8FCqiRA==", "peerDependencies": { "aws-cdk-lib": "^2.38.0", "constructs": "^10.0.5" @@ -2744,20 +2625,20 @@ } }, "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://dotenvx.com" } }, "node_modules/electron-to-chromium": { - "version": "1.4.580", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.580.tgz", - "integrity": "sha512-T5q3pjQon853xxxHUq3ZP68ZpvJHuSMY2+BZaW3QzjS4HvNuvsMmZ/+lU+nCrftre1jFZ+OSlExynXWBihnXzw==", + "version": "1.4.767", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.767.tgz", + "integrity": "sha512-nzzHfmQqBss7CE3apQHkHjXW77+8w3ubGCIoEijKCJebPufREaFETgGXWTkh32t259F3Kcq+R8MZdFdOJROgYw==", "dev": true }, "node_modules/emittery": { @@ -2788,9 +2669,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -3019,9 +2900,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { "function-bind": "^1.1.2" @@ -3162,14 +3043,14 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -3177,26 +3058,11 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -3204,12 +3070,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -3239,9 +3099,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -3721,26 +3581,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -3748,12 +3593,6 @@ "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -3964,26 +3803,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -3991,12 +3815,6 @@ "node": ">=10" } }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -4071,9 +3889,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-path": { @@ -4224,9 +4042,9 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -4302,9 +4120,9 @@ } }, "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -4318,9 +4136,9 @@ ] }, "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/require-directory": { @@ -4600,9 +4418,9 @@ } }, "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", + "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -4618,7 +4436,7 @@ "ts-jest": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", @@ -4642,26 +4460,11 @@ } } }, - "node_modules/ts-jest/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4669,16 +4472,10 @@ "node": ">=10" } }, - "node_modules/ts-jest/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -4740,9 +4537,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4752,10 +4549,16 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -4772,8 +4575,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -4789,9 +4592,9 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", diff --git a/scripts/aws/package.json b/scripts/aws/package.json index c74884aea..29a02b756 100644 --- a/scripts/aws/package.json +++ b/scripts/aws/package.json @@ -11,21 +11,21 @@ "cdk": "cdk" }, "devDependencies": { - "@types/jest": "^29.5.1", - "@types/node": "20.1.7", - "aws-cdk": "^2.86.0", - "jest": "^29.5.0", - "ts-jest": "^29.1.0", - "ts-node": "^10.9.1", - "typescript": "~5.1.3" + "@types/jest": "^29.5.12", + "@types/node": "^20.12.12", + "aws-cdk": "^2.141.0", + "jest": "^29.7.0", + "ts-jest": "^29.1.2", + "ts-node": "^10.9.2", + "typescript": "^5.4.5" }, "dependencies": { - "@aws-solutions-constructs/aws-cloudfront-s3": "^2.49.0", - "aws-cdk-lib": "^2.124.0", - "cdk-ecr-deployment": "^2.5.30", - "constructs": "^10.0.0", - "deploy-time-build": "^0.3.12", - "dotenv": "^16.3.1", + "@aws-solutions-constructs/aws-cloudfront-s3": "^2.57.0", + "aws-cdk-lib": "^2.141.0", + "cdk-ecr-deployment": "^3.0.55", + "constructs": "^10.3.0", + "deploy-time-build": "^0.3.21", + "dotenv": "^16.4.5", "source-map-support": "^0.5.21" } } diff --git a/scripts/gcp/deploy_langflow_gcp.sh b/scripts/gcp/deploy_langflow_gcp.sh index cae2d0c93..cdb8e209f 100644 --- a/scripts/gcp/deploy_langflow_gcp.sh +++ b/scripts/gcp/deploy_langflow_gcp.sh @@ -48,8 +48,10 @@ apt -y upgrade # Install Python 3 pip, Langflow, and Nginx apt -y install python3-pip -pip install langflow -langflow --host 0.0.0.0 --port 7860 +pip3 install pip -U +apt -y update +pip3 install langflow +langflow run --host 0.0.0.0 --port 7860 EOF ) diff --git a/src/backend/.gitignore b/src/backend/.gitignore index 9af18a35f..ac0cc6c6d 100644 --- a/src/backend/.gitignore +++ b/src/backend/.gitignore @@ -131,3 +131,4 @@ dmypy.json # Pyre type checker .pyre/ +*.db \ No newline at end of file diff --git a/src/backend/base/langflow/__main__.py b/src/backend/base/langflow/__main__.py index 4e09b8ee5..dfb784c90 100644 --- a/src/backend/base/langflow/__main__.py +++ b/src/backend/base/langflow/__main__.py @@ -2,9 +2,9 @@ import platform import socket import sys import time +import warnings from pathlib import Path from typing import Optional -import warnings import click import httpx @@ -17,8 +17,10 @@ from rich import print as rprint from rich.console import Console from rich.panel import Panel from rich.table import Table +from sqlmodel import select from langflow.main import setup_app +from langflow.services.database.models.folder.utils import create_default_folder_if_it_doesnt_exist from langflow.services.database.utils import session_getter from langflow.services.deps import get_db_service from langflow.services.utils import initialize_services @@ -432,17 +434,57 @@ def superuser( # Verify that the superuser was created from langflow.services.database.models.user.model import User - user: User = session.query(User).filter(User.username == username).first() + user: User = session.exec(select(User).where(User.username == username)).first() if user is None or not user.is_superuser: typer.echo("Superuser creation failed.") return - + # Now create the first folder for the user + result = create_default_folder_if_it_doesnt_exist(session, user.id) + if result: + typer.echo("Default folder created successfully.") + else: + raise RuntimeError("Could not create default folder.") typer.echo("Superuser created successfully.") else: typer.echo("Superuser creation failed.") +# command to copy the langflow database from the cache to the current directory +# because now the database is stored per installation +@app.command() +def copy_db(): + """ + Copy the database files to the current directory. + + This function copies the 'langflow.db' and 'langflow-pre.db' files from the cache directory to the current directory. + If the files exist in the cache directory, they will be copied to the same directory as this script (__main__.py). + + Returns: + None + """ + import shutil + + from platformdirs import user_cache_dir + + cache_dir = Path(user_cache_dir("langflow")) + db_path = cache_dir / "langflow.db" + pre_db_path = cache_dir / "langflow-pre.db" + # It should be copied to the current directory + # this file is __main__.py and it should be in the same directory as the database + destination_folder = Path(__file__).parent + if db_path.exists(): + shutil.copy(db_path, destination_folder) + typer.echo(f"Database copied to {destination_folder}") + else: + typer.echo("Database not found in the cache directory.") + if pre_db_path.exists(): + shutil.copy(pre_db_path, destination_folder) + typer.echo(f"Pre-release database copied to {destination_folder}") + else: + typer.echo("Pre-release database not found in the cache directory.") + + @app.command() def migration( test: bool = typer.Option(True, help="Run migrations in test mode."), diff --git a/src/backend/base/langflow/alembic/versions/012fb73ac359_add_folder_table.py b/src/backend/base/langflow/alembic/versions/012fb73ac359_add_folder_table.py new file mode 100644 index 000000000..b9ebc2ca2 --- /dev/null +++ b/src/backend/base/langflow/alembic/versions/012fb73ac359_add_folder_table.py @@ -0,0 +1,78 @@ +"""Add Folder table + +Revision ID: 012fb73ac359 +Revises: c153816fd85f +Create Date: 2024-05-07 12:52:16.954691 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +import sqlmodel +from alembic import op +from sqlalchemy.engine.reflection import Inspector + +# revision identifiers, used by Alembic. +revision: str = "012fb73ac359" +down_revision: Union[str, None] = "c153816fd85f" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + conn = op.get_bind() + inspector = Inspector.from_engine(conn) # type: ignore + table_names = inspector.get_table_names() + # ### commands auto generated by Alembic - please adjust! ### + if "folder" not in table_names: + op.create_table( + "folder", + sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=False), + sa.Column("description", sqlmodel.sql.sqltypes.AutoString(), nullable=True), + sa.Column("id", sqlmodel.sql.sqltypes.GUID(), nullable=False), + sa.Column("parent_id", sqlmodel.sql.sqltypes.GUID(), nullable=True), + sa.Column("user_id", sqlmodel.sql.sqltypes.GUID(), nullable=True), + sa.ForeignKeyConstraint( + ["parent_id"], + ["folder.id"], + ), + sa.ForeignKeyConstraint( + ["user_id"], + ["user.id"], + ), + sa.PrimaryKeyConstraint("id"), + ) + indexes = inspector.get_indexes("folder") + if "ix_folder_name" not in [index["name"] for index in indexes]: + with op.batch_alter_table("folder", schema=None) as batch_op: + batch_op.create_index(batch_op.f("ix_folder_name"), ["name"], unique=False) + + if "folder_id" not in inspector.get_columns("flow"): + with op.batch_alter_table("flow", schema=None) as batch_op: + batch_op.add_column(sa.Column("folder_id", sqlmodel.sql.sqltypes.GUID(), nullable=True)) + batch_op.create_foreign_key("flow_folder_id_fkey", "folder", ["folder_id"], ["id"]) + batch_op.drop_column("folder") + + # ### end Alembic commands ### + + +def downgrade() -> None: + conn = op.get_bind() + inspector = Inspector.from_engine(conn) # type: ignore + table_names = inspector.get_table_names() + # ### commands auto generated by Alembic - please adjust! ### + if "folder_id" in inspector.get_columns("flow"): + with op.batch_alter_table("flow", schema=None) as batch_op: + batch_op.add_column(sa.Column("folder", sa.VARCHAR(), nullable=True)) + batch_op.drop_constraint("flow_folder_id_fkey", type_="foreignkey") + batch_op.drop_column("folder_id") + + indexes = inspector.get_indexes("folder") + if "ix_folder_name" in [index["name"] for index in indexes]: + with op.batch_alter_table("folder", schema=None) as batch_op: + batch_op.drop_index(batch_op.f("ix_folder_name")) + + if "folder" in table_names: + op.drop_table("folder") + # ### end Alembic commands ### diff --git a/src/backend/base/langflow/alembic/versions/29fe8f1f806b_add_missing_index.py b/src/backend/base/langflow/alembic/versions/29fe8f1f806b_add_missing_index.py new file mode 100644 index 000000000..9a2518df2 --- /dev/null +++ b/src/backend/base/langflow/alembic/versions/29fe8f1f806b_add_missing_index.py @@ -0,0 +1,43 @@ +"""Add missing index + +Revision ID: 29fe8f1f806b +Revises: 012fb73ac359 +Create Date: 2024-05-21 09:23:48.772367 + +""" + +from typing import Sequence, Union + +from alembic import op +from sqlalchemy.engine.reflection import Inspector + +revision: str = "29fe8f1f806b" +down_revision: Union[str, None] = "012fb73ac359" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + conn = op.get_bind() + inspector = Inspector.from_engine(conn) # type: ignore + # ### commands auto generated by Alembic - please adjust! ### + indexes = inspector.get_indexes("flow") + with op.batch_alter_table("flow", schema=None) as batch_op: + indexes_names = [index["name"] for index in indexes] + if "ix_flow_folder_id" not in indexes_names: + batch_op.create_index(batch_op.f("ix_flow_folder_id"), ["folder_id"], unique=False) + + # ### end Alembic commands ### + + +def downgrade() -> None: + conn = op.get_bind() + inspector = Inspector.from_engine(conn) # type: ignore + # ### commands auto generated by Alembic - please adjust! ### + indexes = inspector.get_indexes("flow") + with op.batch_alter_table("flow", schema=None) as batch_op: + indexes_names = [index["name"] for index in indexes] + if "ix_flow_folder_id" in indexes_names: + batch_op.drop_index(batch_op.f("ix_flow_folder_id")) + + # ### end Alembic commands ### diff --git a/src/backend/base/langflow/api/router.py b/src/backend/base/langflow/api/router.py index 569014acf..d5d709738 100644 --- a/src/backend/base/langflow/api/router.py +++ b/src/backend/base/langflow/api/router.py @@ -13,6 +13,7 @@ from langflow.api.v1 import ( users_router, validate_router, variables_router, + folders_router, ) router = APIRouter( @@ -29,3 +30,4 @@ router.include_router(login_router) router.include_router(variables_router) router.include_router(files_router) router.include_router(monitor_router) +router.include_router(folders_router) diff --git a/src/backend/base/langflow/api/utils.py b/src/backend/base/langflow/api/utils.py index e2f6e07e7..ffb5f22c9 100644 --- a/src/backend/base/langflow/api/utils.py +++ b/src/backend/base/langflow/api/utils.py @@ -140,7 +140,10 @@ def get_file_path_value(file_path): # If the path is not in the cache dir, return empty string # This is to prevent access to files outside the cache dir # If the path is not a file, return empty string - if not path.exists() or not str(path).startswith(user_cache_dir("langflow", "langflow")): + if not str(path).startswith(user_cache_dir("langflow", "langflow")): + return "" + + if not path.exists(): return "" return file_path diff --git a/src/backend/base/langflow/api/v1/__init__.py b/src/backend/base/langflow/api/v1/__init__.py index 0342c76c8..efc55cba8 100644 --- a/src/backend/base/langflow/api/v1/__init__.py +++ b/src/backend/base/langflow/api/v1/__init__.py @@ -9,6 +9,7 @@ from langflow.api.v1.store import router as store_router from langflow.api.v1.users import router as users_router from langflow.api.v1.validate import router as validate_router from langflow.api.v1.variable import router as variables_router +from langflow.api.v1.folders import router as folders_router __all__ = [ "chat_router", @@ -22,4 +23,5 @@ __all__ = [ "variables_router", "monitor_router", "files_router", + "folders_router", ] diff --git a/src/backend/base/langflow/api/v1/callback.py b/src/backend/base/langflow/api/v1/callback.py index b326311ac..6a60ea037 100644 --- a/src/backend/base/langflow/api/v1/callback.py +++ b/src/backend/base/langflow/api/v1/callback.py @@ -1,13 +1,12 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional from uuid import UUID - -from langchain.schema import AgentAction, AgentFinish from langchain_core.callbacks.base import AsyncCallbackHandler from loguru import logger from langflow.api.v1.schemas import ChatResponse, PromptResponse from langflow.services.deps import get_chat_service, get_socket_service from langflow.utils.util import remove_ansi_escape_codes +from langchain_core.agents import AgentAction, AgentFinish if TYPE_CHECKING: from langflow.services.socket.service import SocketIOService diff --git a/src/backend/base/langflow/api/v1/chat.py b/src/backend/base/langflow/api/v1/chat.py index 549e0c2b7..23dea900b 100644 --- a/src/backend/base/langflow/api/v1/chat.py +++ b/src/backend/base/langflow/api/v1/chat.py @@ -29,7 +29,7 @@ from langflow.services.deps import get_chat_service, get_session, get_session_se from langflow.services.monitor.utils import log_vertex_build if TYPE_CHECKING: - from langflow.graph.vertex.types import ChatVertex + from langflow.graph.vertex.types import InterfaceVertex from langflow.services.session.service import SessionService router = APIRouter(tags=["Chat"]) @@ -53,7 +53,7 @@ async def try_running_celery_task(vertex, user_id): @router.post("/build/{flow_id}/vertices", response_model=VerticesOrderResponse) async def retrieve_vertices_order( - flow_id: str, + flow_id: uuid.UUID, data: Optional[Annotated[Optional[FlowDataRequest], Body(embed=True)]] = None, stop_component_id: Optional[str] = None, start_component_id: Optional[str] = None, @@ -78,12 +78,13 @@ async def retrieve_vertices_order( HTTPException: If there is an error checking the build status. """ try: + flow_id_str = str(flow_id) # First, we need to check if the flow_id is in the cache if not data: - graph = await build_and_cache_graph_from_db(flow_id=flow_id, session=session, chat_service=chat_service) + graph = await build_and_cache_graph_from_db(flow_id=flow_id_str, session=session, chat_service=chat_service) else: graph = await build_and_cache_graph_from_data( - flow_id=flow_id, graph_data=data.model_dump(), chat_service=chat_service + flow_id=flow_id_str, graph_data=data.model_dump(), chat_service=chat_service ) graph.validate_stream() if stop_component_id or start_component_id: @@ -119,7 +120,7 @@ async def retrieve_vertices_order( @router.post("/build/{flow_id}/vertices/{vertex_id}") async def build_vertex( - flow_id: str, + flow_id: uuid.UUID, vertex_id: str, background_tasks: BackgroundTasks, inputs: Annotated[Optional[InputValueRequest], Body(embed=True)] = None, @@ -143,27 +144,25 @@ async def build_vertex( HTTPException: If there is an error building the vertex. """ + flow_id_str = str(flow_id) - start_time = time.perf_counter() next_runnable_vertices = [] top_level_vertices = [] try: start_time = time.perf_counter() - cache = await chat_service.get_cache(flow_id) + cache = await chat_service.get_cache(flow_id_str) if not cache: # If there's no cache - logger.warning(f"No cache found for {flow_id}. Building graph starting at {vertex_id}") + logger.warning(f"No cache found for {flow_id_str}. Building graph starting at {vertex_id}") graph = await build_and_cache_graph_from_db( - flow_id=flow_id, session=next(get_session()), chat_service=chat_service + flow_id=flow_id_str, session=next(get_session()), chat_service=chat_service ) else: graph = cache.get("result") - result_data_response = ResultDataResponse(results={}) - duration = "" vertex = graph.get_vertex(vertex_id) try: - lock = chat_service._cache_locks[flow_id] - set_cache_coro = partial(chat_service.set_cache, flow_id=flow_id) + lock = chat_service._cache_locks[flow_id_str] + set_cache_coro = partial(chat_service.set_cache, flow_id=flow_id_str) ( next_runnable_vertices, top_level_vertices, @@ -189,13 +188,13 @@ async def build_vertex( artifacts = {} # If there's an error building the vertex # we need to clear the cache - await chat_service.clear_cache(flow_id) + await chat_service.clear_cache(flow_id_str) # Log the vertex build if not vertex.will_stream: background_tasks.add_task( log_vertex_build, - flow_id=flow_id, + flow_id=flow_id_str, vertex_id=vertex_id, valid=valid, params=params, @@ -212,7 +211,7 @@ async def build_vertex( inactivated_vertices = list(graph.inactivated_vertices) graph.reset_inactivated_vertices() graph.reset_activated_vertices() - await chat_service.set_cache(flow_id, graph) + await chat_service.set_cache(flow_id_str, graph) # graph.stop_vertex tells us if the user asked # to stop the build of the graph at a certain vertex @@ -240,7 +239,7 @@ async def build_vertex( @router.get("/build/{flow_id}/{vertex_id}/stream", response_class=StreamingResponse) async def build_vertex_stream( - flow_id: str, + flow_id: uuid.UUID, vertex_id: str, session_id: Optional[str] = None, chat_service: "ChatService" = Depends(get_chat_service), @@ -272,23 +271,24 @@ async def build_vertex_stream( HTTPException: If an error occurs while building the vertex. """ try: + flow_id_str = str(flow_id) async def stream_vertex(): try: if not session_id: - cache = await chat_service.get_cache(flow_id) + cache = await chat_service.get_cache(flow_id_str) if not cache: # If there's no cache - raise ValueError(f"No cache found for {flow_id}.") + raise ValueError(f"No cache found for {flow_id_str}.") else: graph = cache.get("result") else: - session_data = await session_service.load_session(session_id, flow_id=flow_id) + session_data = await session_service.load_session(session_id, flow_id=flow_id_str) graph, artifacts = session_data if session_data else (None, None) if not graph: - raise ValueError(f"No graph found for {flow_id}.") + raise ValueError(f"No graph found for {flow_id_str}.") - vertex: "ChatVertex" = graph.get_vertex(vertex_id) + vertex: "InterfaceVertex" = graph.get_vertex(vertex_id) if not hasattr(vertex, "stream"): raise ValueError(f"Vertex {vertex_id} does not support streaming") if isinstance(vertex._built_result, str) and vertex._built_result: diff --git a/src/backend/base/langflow/api/v1/endpoints.py b/src/backend/base/langflow/api/v1/endpoints.py index e13d4333d..e7bb761ba 100644 --- a/src/backend/base/langflow/api/v1/endpoints.py +++ b/src/backend/base/langflow/api/v1/endpoints.py @@ -1,5 +1,6 @@ from http import HTTPStatus from typing import Annotated, List, Optional, Union +from uuid import UUID import sqlalchemy as sa from fastapi import APIRouter, Body, Depends, HTTPException, UploadFile, status @@ -18,9 +19,7 @@ from langflow.api.v1.schemas import ( UploadFileResponse, ) from langflow.graph.graph.base import Graph -from langflow.graph.schema import RunOutputs from langflow.interface.custom.custom_component import CustomComponent -from langflow.interface.custom.directory_reader import DirectoryReader from langflow.interface.custom.utils import build_custom_component_template from langflow.processing.process import process_tweaks, run_graph_internal from langflow.schema.graph import Tweaks @@ -54,7 +53,7 @@ def get_all( @router.post("/run/{flow_id}", response_model=RunResponse, response_model_exclude_none=True) async def simplified_run_flow( db: Annotated[Session, Depends(get_session)], - flow_id: str, + flow_id: UUID, input_request: SimplifiedAPIRequest = SimplifiedAPIRequest(), stream: bool = False, api_key_user: User = Depends(api_key_security), @@ -111,26 +110,26 @@ async def simplified_run_flow( session_id = input_request.session_id try: - task_result: List[RunOutputs] = [] + flow_id_str = str(flow_id) artifacts = {} if input_request.session_id: - session_data = await session_service.load_session(input_request.session_id, flow_id=flow_id) + session_data = await session_service.load_session(input_request.session_id, flow_id=flow_id_str) graph, artifacts = session_data if session_data else (None, None) if graph is None: raise ValueError(f"Session {input_request.session_id} not found") else: # Get the flow that matches the flow_id and belongs to the user # flow = session.query(Flow).filter(Flow.id == flow_id).filter(Flow.user_id == api_key_user.id).first() - flow = db.exec(select(Flow).where(Flow.id == flow_id).where(Flow.user_id == api_key_user.id)).first() + flow = db.exec(select(Flow).where(Flow.id == flow_id_str).where(Flow.user_id == api_key_user.id)).first() if flow is None: - raise ValueError(f"Flow {flow_id} not found") + raise ValueError(f"Flow {flow_id_str} not found") if flow.data is None: - raise ValueError(f"Flow {flow_id} has no data") + raise ValueError(f"Flow {flow_id_str} has no data") graph_data = flow.data graph_data = process_tweaks(graph_data, input_request.tweaks or {}, stream=stream) - graph = Graph.from_payload(graph_data, flow_id=flow_id, user_id=str(api_key_user.id)) + graph = Graph.from_payload(graph_data, flow_id=flow_id_str, user_id=str(api_key_user.id)) inputs = [ InputValueRequest(components=[], input_value=input_request.input_value, type=input_request.input_type) ] @@ -153,7 +152,7 @@ async def simplified_run_flow( ] task_result, session_id = await run_graph_internal( graph=graph, - flow_id=flow_id, + flow_id=flow_id_str, session_id=input_request.session_id, inputs=inputs, outputs=outputs, @@ -166,12 +165,12 @@ async def simplified_run_flow( except sa.exc.StatementError as exc: # StatementError('(builtins.ValueError) badly formed hexadecimal UUID string') if "badly formed hexadecimal UUID string" in str(exc): - logger.error(f"Flow ID {flow_id} is not a valid UUID") + logger.error(f"Flow ID {flow_id_str} is not a valid UUID") # This means the Flow ID is not a valid UUID which means it can't find the flow raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(exc)) from exc except ValueError as exc: - if f"Flow {flow_id} not found" in str(exc): - logger.error(f"Flow {flow_id} not found") + if f"Flow {flow_id_str} not found" in str(exc): + logger.error(f"Flow {flow_id_str} not found") raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(exc)) from exc elif f"Session {session_id} not found" in str(exc): logger.error(f"Session {session_id} not found") @@ -187,7 +186,7 @@ async def simplified_run_flow( @router.post("/run/advanced/{flow_id}", response_model=RunResponse, response_model_exclude_none=True) async def experimental_run_flow( session: Annotated[Session, Depends(get_session)], - flow_id: str, + flow_id: UUID, inputs: Optional[List[InputValueRequest]] = [InputValueRequest(components=[], input_value="")], outputs: Optional[List[str]] = [], tweaks: Annotated[Optional[Tweaks], Body(embed=True)] = None, # noqa: F821 @@ -235,31 +234,33 @@ async def experimental_run_flow( This endpoint facilitates complex flow executions with customized inputs, outputs, and configurations, catering to diverse application requirements. """ try: + flow_id_str = str(flow_id) if outputs is None: outputs = [] - task_result: List[RunOutputs] = [] artifacts = {} if session_id: - session_data = await session_service.load_session(session_id, flow_id=flow_id) + session_data = await session_service.load_session(session_id, flow_id=flow_id_str) graph, artifacts = session_data if session_data else (None, None) if graph is None: raise ValueError(f"Session {session_id} not found") else: # Get the flow that matches the flow_id and belongs to the user # flow = session.query(Flow).filter(Flow.id == flow_id).filter(Flow.user_id == api_key_user.id).first() - flow = session.exec(select(Flow).where(Flow.id == flow_id).where(Flow.user_id == api_key_user.id)).first() + flow = session.exec( + select(Flow).where(Flow.id == flow_id_str).where(Flow.user_id == api_key_user.id) + ).first() if flow is None: - raise ValueError(f"Flow {flow_id} not found") + raise ValueError(f"Flow {flow_id_str} not found") if flow.data is None: - raise ValueError(f"Flow {flow_id} has no data") + raise ValueError(f"Flow {flow_id_str} has no data") graph_data = flow.data graph_data = process_tweaks(graph_data, tweaks or {}) - graph = Graph.from_payload(graph_data, flow_id=flow_id) + graph = Graph.from_payload(graph_data, flow_id=flow_id_str) task_result, session_id = await run_graph_internal( graph=graph, - flow_id=flow_id, + flow_id=flow_id_str, session_id=session_id, inputs=inputs, outputs=outputs, @@ -272,12 +273,12 @@ async def experimental_run_flow( except sa.exc.StatementError as exc: # StatementError('(builtins.ValueError) badly formed hexadecimal UUID string') if "badly formed hexadecimal UUID string" in str(exc): - logger.error(f"Flow ID {flow_id} is not a valid UUID") + logger.error(f"Flow ID {flow_id_str} is not a valid UUID") # This means the Flow ID is not a valid UUID which means it can't find the flow raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(exc)) from exc except ValueError as exc: - if f"Flow {flow_id} not found" in str(exc): - logger.error(f"Flow {flow_id} not found") + if f"Flow {flow_id_str} not found" in str(exc): + logger.error(f"Flow {flow_id_str} not found") raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(exc)) from exc elif f"Session {session_id} not found" in str(exc): logger.error(f"Session {session_id} not found") @@ -357,13 +358,14 @@ async def get_task_status(task_id: str): ) async def create_upload_file( file: UploadFile, - flow_id: str, + flow_id: UUID, ): try: - file_path = save_uploaded_file(file, folder_name=flow_id) + flow_id_str = str(flow_id) + file_path = save_uploaded_file(file, folder_name=flow_id_str) return UploadFileResponse( - flowId=flow_id, + flowId=flow_id_str, file_path=file_path, ) except Exception as exc: @@ -400,23 +402,6 @@ async def custom_component( return built_frontend_node -@router.post("/custom_component/reload", status_code=HTTPStatus.OK) -async def reload_custom_component(path: str, user: User = Depends(get_current_active_user)): - from langflow.interface.custom.utils import build_custom_component_template - - try: - reader = DirectoryReader("") - valid, content = reader.process_file(path) - if not valid: - raise ValueError(content) - - extractor = CustomComponent(code=content) - frontend_node, _ = build_custom_component_template(extractor, user_id=user.id) - return frontend_node - except Exception as exc: - raise HTTPException(status_code=400, detail=str(exc)) - - @router.post("/custom_component/update", status_code=HTTPStatus.OK) async def custom_component_update( code_request: UpdateCustomComponentRequest, diff --git a/src/backend/base/langflow/api/v1/files.py b/src/backend/base/langflow/api/v1/files.py index 435aea826..bbe97f81a 100644 --- a/src/backend/base/langflow/api/v1/files.py +++ b/src/backend/base/langflow/api/v1/files.py @@ -1,6 +1,7 @@ import hashlib from http import HTTPStatus from io import BytesIO +from uuid import UUID from fastapi import APIRouter, Depends, HTTPException, UploadFile from fastapi.responses import StreamingResponse @@ -20,38 +21,41 @@ router = APIRouter(tags=["Files"], prefix="/files") # then finds it in the database and returns it while # using the current user as the owner def get_flow_id( - flow_id: str, + flow_id: UUID, current_user=Depends(get_current_active_user), session=Depends(get_session), ): + flow_id_str = str(flow_id) # AttributeError: 'SelectOfScalar' object has no attribute 'first' - flow = session.get(Flow, flow_id) + flow = session.get(Flow, flow_id_str) if not flow: raise HTTPException(status_code=404, detail="Flow not found") if flow.user_id != current_user.id: raise HTTPException(status_code=403, detail="You don't have access to this flow") - return flow_id + return flow_id_str @router.post("/upload/{flow_id}", status_code=HTTPStatus.CREATED) async def upload_file( file: UploadFile, - flow_id: str = Depends(get_flow_id), + flow_id: UUID = Depends(get_flow_id), storage_service: StorageService = Depends(get_storage_service), ): try: + flow_id_str = str(flow_id) file_content = await file.read() file_name = file.filename or hashlib.sha256(file_content).hexdigest() - folder = flow_id + folder = flow_id_str await storage_service.save_file(flow_id=folder, file_name=file_name, data=file_content) - return UploadFileResponse(flowId=flow_id, file_path=f"{folder}/{file_name}") + return UploadFileResponse(flowId=flow_id_str, file_path=f"{folder}/{file_name}") except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @router.get("/download/{flow_id}/{file_name}") -async def download_file(file_name: str, flow_id: str, storage_service: StorageService = Depends(get_storage_service)): +async def download_file(file_name: str, flow_id: UUID, storage_service: StorageService = Depends(get_storage_service)): try: + flow_id_str = str(flow_id) extension = file_name.split(".")[-1] if not extension: @@ -62,7 +66,7 @@ async def download_file(file_name: str, flow_id: str, storage_service: StorageSe if not content_type: raise HTTPException(status_code=500, detail=f"Content type not found for extension {extension}") - file_content = await storage_service.get_file(flow_id=flow_id, file_name=file_name) + file_content = await storage_service.get_file(flow_id=flow_id_str, file_name=file_name) headers = { "Content-Disposition": f"attachment; filename={file_name} filename*=UTF-8''{file_name}", "Content-Type": "application/octet-stream", @@ -74,9 +78,10 @@ async def download_file(file_name: str, flow_id: str, storage_service: StorageSe @router.get("/images/{flow_id}/{file_name}") -async def download_image(file_name: str, flow_id: str, storage_service: StorageService = Depends(get_storage_service)): +async def download_image(file_name: str, flow_id: UUID, storage_service: StorageService = Depends(get_storage_service)): try: extension = file_name.split(".")[-1] + flow_id_str = str(flow_id) if not extension: raise HTTPException(status_code=500, detail=f"Extension not found for file {file_name}") @@ -88,7 +93,7 @@ async def download_image(file_name: str, flow_id: str, storage_service: StorageS elif not content_type.startswith("image"): raise HTTPException(status_code=500, detail=f"Content type {content_type} is not an image") - file_content = await storage_service.get_file(flow_id=flow_id, file_name=file_name) + file_content = await storage_service.get_file(flow_id=flow_id_str, file_name=file_name) return StreamingResponse(BytesIO(file_content), media_type=content_type) except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @@ -96,10 +101,11 @@ async def download_image(file_name: str, flow_id: str, storage_service: StorageS @router.get("/list/{flow_id}") async def list_files( - flow_id: str = Depends(get_flow_id), storage_service: StorageService = Depends(get_storage_service) + flow_id: UUID = Depends(get_flow_id), storage_service: StorageService = Depends(get_storage_service) ): try: - files = await storage_service.list_files(flow_id=flow_id) + flow_id_str = str(flow_id) + files = await storage_service.list_files(flow_id=flow_id_str) return {"files": files} except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @@ -107,10 +113,11 @@ async def list_files( @router.delete("/delete/{flow_id}/{file_name}") async def delete_file( - file_name: str, flow_id: str = Depends(get_flow_id), storage_service: StorageService = Depends(get_storage_service) + file_name: str, flow_id: UUID = Depends(get_flow_id), storage_service: StorageService = Depends(get_storage_service) ): try: - await storage_service.delete_file(flow_id=flow_id, file_name=file_name) + flow_id_str = str(flow_id) + await storage_service.delete_file(flow_id=flow_id_str, file_name=file_name) return {"message": f"File {file_name} deleted successfully"} except Exception as e: raise HTTPException(status_code=500, detail=str(e)) diff --git a/src/backend/base/langflow/api/v1/flows.py b/src/backend/base/langflow/api/v1/flows.py index bafd1c08b..7fe7c516b 100644 --- a/src/backend/base/langflow/api/v1/flows.py +++ b/src/backend/base/langflow/api/v1/flows.py @@ -6,13 +6,15 @@ import orjson from fastapi import APIRouter, Depends, File, HTTPException, UploadFile from fastapi.encoders import jsonable_encoder from loguru import logger -from sqlmodel import Session, select +from sqlmodel import Session, col, select from langflow.api.utils import remove_api_keys, validate_is_component -from langflow.api.v1.schemas import FlowListCreate, FlowListRead +from langflow.api.v1.schemas import FlowListCreate, FlowListIds, FlowListRead from langflow.initial_setup.setup import STARTER_FOLDER_NAME from langflow.services.auth.utils import get_current_active_user from langflow.services.database.models.flow import Flow, FlowCreate, FlowRead, FlowUpdate +from langflow.services.database.models.folder.constants import DEFAULT_FOLDER_NAME +from langflow.services.database.models.folder.model import Folder from langflow.services.database.models.user.model import User from langflow.services.deps import get_session, get_settings_service from langflow.services.settings.service import SettingsService @@ -35,6 +37,11 @@ def create_flow( db_flow = Flow.model_validate(flow, from_attributes=True) db_flow.updated_at = datetime.now(timezone.utc) + if db_flow.folder_id is None: + default_folder = session.exec(select(Folder).where(Folder.name == DEFAULT_FOLDER_NAME)).first() + if default_folder: + db_flow.folder_id = default_folder.id + session.add(db_flow) session.commit() session.refresh(db_flow) @@ -64,12 +71,9 @@ def read_flows( flow_ids = [flow.id for flow in flows] # with the session get the flows that DO NOT have a user_id try: - example_flows = session.exec( - select(Flow).where( - Flow.user_id == None, # noqa - Flow.folder == STARTER_FOLDER_NAME, - ) - ).all() + folder = session.exec(select(Folder).where(Folder.name == STARTER_FOLDER_NAME)).first() + + example_flows = folder.flows if folder else [] for example_flow in example_flows: if example_flow.id not in flow_ids: flows.append(example_flow) # type: ignore @@ -129,6 +133,10 @@ def update_flow( if value is not None: setattr(db_flow, key, value) db_flow.updated_at = datetime.now(timezone.utc) + if db_flow.folder_id is None: + default_folder = session.exec(select(Folder).where(Folder.name == DEFAULT_FOLDER_NAME)).first() + if default_folder: + db_flow.folder_id = default_folder.id session.add(db_flow) session.commit() session.refresh(db_flow) @@ -208,3 +216,31 @@ async def download_file( """Download all flows as a file.""" flows = read_flows(current_user=current_user, session=session, settings_service=settings_service) return FlowListRead(flows=flows) + + +@router.post("/multiple_delete/") +async def delete_multiple_flows( + flow_ids: FlowListIds, user: User = Depends(get_current_active_user), db: Session = Depends(get_session) +): + """ + Delete multiple flows by their IDs. + + Args: + flow_ids (List[str]): The list of flow IDs to delete. + user (User, optional): The user making the request. Defaults to the current active user. + + Returns: + dict: A dictionary containing the number of flows deleted. + + """ + try: + deleted_flows = db.exec( + select(Flow).where(col(Flow.id).in_(flow_ids.flow_ids)).where(Flow.user_id == user.id) + ).all() + for flow in deleted_flows: + db.delete(flow) + db.commit() + return {"deleted": len(deleted_flows)} + except Exception as exc: + logger.exception(exc) + raise HTTPException(status_code=500, detail=str(exc)) from exc diff --git a/src/backend/base/langflow/api/v1/folders.py b/src/backend/base/langflow/api/v1/folders.py new file mode 100644 index 000000000..3aa57842c --- /dev/null +++ b/src/backend/base/langflow/api/v1/folders.py @@ -0,0 +1,239 @@ +from typing import List +from uuid import UUID + +import orjson +from fastapi import APIRouter, Depends, File, HTTPException, Response, UploadFile, status +from sqlalchemy import or_, update +from sqlmodel import Session, select + +from langflow.api.v1.flows import create_flows +from langflow.api.v1.schemas import FlowListCreate, FlowListReadWithFolderName +from langflow.services.auth.utils import get_current_active_user +from langflow.services.database.models.flow.model import Flow, FlowCreate, FlowRead +from langflow.services.database.models.folder.constants import DEFAULT_FOLDER_NAME +from langflow.services.database.models.folder.model import ( + Folder, + FolderCreate, + FolderRead, + FolderReadWithFlows, + FolderUpdate, +) +from langflow.services.database.models.user.model import User +from langflow.services.deps import get_session + +router = APIRouter(prefix="/folders", tags=["Folders"]) + + +@router.post("/", response_model=FolderRead, status_code=201) +def create_folder( + *, + session: Session = Depends(get_session), + folder: FolderCreate, + current_user: User = Depends(get_current_active_user), +): + try: + new_folder = Folder.model_validate(folder, from_attributes=True) + new_folder.user_id = current_user.id + + folder_results = session.exec( + select(Folder).where( + Folder.name.like(f"{new_folder.name}%"), # type: ignore + Folder.user_id == current_user.id, + ) + ) + existing_folder_names = [folder.name for folder in folder_results] + + if existing_folder_names: + new_folder.name = f"{new_folder.name} ({len(existing_folder_names) + 1})" + + session.add(new_folder) + session.commit() + session.refresh(new_folder) + + if folder.components_list: + update_statement_components = ( + update(Flow).where(Flow.id.in_(folder.components_list)).values(folder_id=new_folder.id) # type: ignore + ) + session.exec(update_statement_components) # type: ignore + session.commit() + + if folder.flows_list: + update_statement_flows = update(Flow).where(Flow.id.in_(folder.flows_list)).values(folder_id=new_folder.id) # type: ignore + session.exec(update_statement_flows) # type: ignore + session.commit() + + return new_folder + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/", response_model=List[FolderRead], status_code=200) +def read_folders( + *, + session: Session = Depends(get_session), + current_user: User = Depends(get_current_active_user), +): + try: + folders = session.exec( + select(Folder).where( + or_(Folder.user_id == current_user.id, Folder.user_id == None) # type: ignore # noqa: E711 + ) + ).all() + return folders + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/{folder_id}", response_model=FolderReadWithFlows, status_code=200) +def read_folder( + *, + session: Session = Depends(get_session), + folder_id: UUID, + current_user: User = Depends(get_current_active_user), +): + try: + folder = session.exec(select(Folder).where(Folder.id == folder_id, Folder.user_id == current_user.id)).first() + if not folder: + raise HTTPException(status_code=404, detail="Folder not found") + return folder + except Exception as e: + if "No result found" in str(e): + raise HTTPException(status_code=404, detail="Folder not found") + raise HTTPException(status_code=500, detail=str(e)) + + +@router.patch("/{folder_id}", response_model=FolderRead, status_code=200) +def update_folder( + *, + session: Session = Depends(get_session), + folder_id: UUID, + folder: FolderUpdate, # Assuming FolderUpdate is a Pydantic model defining updatable fields + current_user: User = Depends(get_current_active_user), +): + try: + existing_folder = session.exec( + select(Folder).where(Folder.id == folder_id, Folder.user_id == current_user.id) + ).first() + if not existing_folder: + raise HTTPException(status_code=404, detail="Folder not found") + folder_data = folder.model_dump(exclude_unset=True) + for key, value in folder_data.items(): + if key != "components" and key != "flows": + setattr(existing_folder, key, value) + session.add(existing_folder) + session.commit() + session.refresh(existing_folder) + + concat_folder_components = folder.components + folder.flows + + flows_ids = session.exec(select(Flow.id).where(Flow.folder_id == existing_folder.id)).all() + + excluded_flows = list(set(flows_ids) - set(concat_folder_components)) + + my_collection_folder = session.exec(select(Folder).where(Folder.name == DEFAULT_FOLDER_NAME)).first() + if my_collection_folder: + update_statement_my_collection = ( + update(Flow).where(Flow.id.in_(excluded_flows)).values(folder_id=my_collection_folder.id) # type: ignore + ) + session.exec(update_statement_my_collection) # type: ignore + session.commit() + + if concat_folder_components: + update_statement_components = ( + update(Flow).where(Flow.id.in_(concat_folder_components)).values(folder_id=existing_folder.id) # type: ignore + ) + session.exec(update_statement_components) # type: ignore + session.commit() + + return existing_folder + + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.delete("/{folder_id}", status_code=204) +def delete_folder( + *, + session: Session = Depends(get_session), + folder_id: UUID, + current_user: User = Depends(get_current_active_user), +): + try: + folder = session.exec(select(Folder).where(Folder.id == folder_id, Folder.user_id == current_user.id)).first() + if not folder: + raise HTTPException(status_code=404, detail="Folder not found") + session.delete(folder) + session.commit() + flows = session.exec(select(Flow).where(Flow.folder_id == folder_id, Folder.user_id == current_user.id)).all() + for flow in flows: + session.delete(flow) + session.commit() + return Response(status_code=status.HTTP_204_NO_CONTENT) + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/download/{folder_id}", response_model=FlowListReadWithFolderName, status_code=200) +async def download_file( + *, + session: Session = Depends(get_session), + folder_id: UUID, + current_user: User = Depends(get_current_active_user), +): + """Download all flows from folder.""" + try: + folder = session.exec(select(Folder).where(Folder.id == folder_id, Folder.user_id == current_user.id)).first() + return folder + except Exception as e: + if "No result found" in str(e): + raise HTTPException(status_code=404, detail="Folder not found") + raise HTTPException(status_code=500, detail=str(e)) + + +@router.post("/upload/", response_model=List[FlowRead], status_code=201) +async def upload_file( + *, + session: Session = Depends(get_session), + file: UploadFile = File(...), + current_user: User = Depends(get_current_active_user), +): + """Upload flows from a file.""" + contents = await file.read() + data = orjson.loads(contents) + + if not data: + raise HTTPException(status_code=400, detail="No flows found in the file") + + folder_results = session.exec( + select(Folder).where( + Folder.name == data["folder_name"], + Folder.user_id == current_user.id, + ) + ) + existing_folder_names = [folder.name for folder in folder_results] + + if existing_folder_names: + data["folder_name"] = f"{data['folder_name']} ({len(existing_folder_names) + 1})" + + folder = FolderCreate(name=data["folder_name"], description=data["folder_description"]) + + new_folder = Folder.model_validate(folder, from_attributes=True) + new_folder.id = None + new_folder.user_id = current_user.id + session.add(new_folder) + session.commit() + session.refresh(new_folder) + + del data["folder_name"] + del data["folder_description"] + + if "flows" in data: + flow_list = FlowListCreate(flows=[FlowCreate(**flow) for flow in data["flows"]]) + else: + raise HTTPException(status_code=400, detail="No flows found in the data") + # Now we set the user_id for all flows + for flow in flow_list.flows: + flow.user_id = current_user.id + flow.folder_id = new_folder.id + + return create_flows(session=session, flow_list=flow_list, current_user=current_user) diff --git a/src/backend/base/langflow/api/v1/login.py b/src/backend/base/langflow/api/v1/login.py index 8c9fb5bd4..69a1d5876 100644 --- a/src/backend/base/langflow/api/v1/login.py +++ b/src/backend/base/langflow/api/v1/login.py @@ -1,5 +1,7 @@ from fastapi import APIRouter, Depends, HTTPException, Request, Response, status from fastapi.security import OAuth2PasswordRequestForm +from sqlmodel import Session + from langflow.api.v1.schemas import Token from langflow.services.auth.utils import ( authenticate_user, @@ -7,14 +9,10 @@ from langflow.services.auth.utils import ( create_user_longterm_token, create_user_tokens, ) -from langflow.services.deps import ( - get_session, - get_settings_service, - get_variable_service, -) +from langflow.services.database.models.folder.utils import create_default_folder_if_it_doesnt_exist +from langflow.services.deps import get_session, get_settings_service, get_variable_service from langflow.services.settings.manager import SettingsService from langflow.services.variable.service import VariableService -from sqlmodel import Session router = APIRouter(tags=["Login"]) @@ -58,6 +56,8 @@ async def login_to_get_access_token( expires=auth_settings.ACCESS_TOKEN_EXPIRE_SECONDS, ) variable_service.initialize_user_variables(user.id, db) + # Create default folder for user if it doesn't exist + create_default_folder_if_it_doesnt_exist(db, user.id) return tokens else: raise HTTPException( @@ -86,6 +86,7 @@ async def auto_login( expires=None, # Set to None to make it a session cookie ) variable_service.initialize_user_variables(user_id, db) + create_default_folder_if_it_doesnt_exist(db, user_id) return tokens raise HTTPException( @@ -139,4 +140,3 @@ async def logout(response: Response): response.delete_cookie("refresh_token_lf") response.delete_cookie("access_token_lf") return {"message": "Logout successful"} - return {"message": "Logout successful"} diff --git a/src/backend/base/langflow/api/v1/monitor.py b/src/backend/base/langflow/api/v1/monitor.py index dbefd1c3b..05fee6f03 100644 --- a/src/backend/base/langflow/api/v1/monitor.py +++ b/src/backend/base/langflow/api/v1/monitor.py @@ -1,10 +1,13 @@ -from typing import Optional +from typing import List, Optional from fastapi import APIRouter, Depends, HTTPException, Query - from langflow.services.deps import get_monitor_service -from langflow.services.monitor.schema import VertexBuildMapModel +from langflow.services.monitor.schema import ( + MessageModelResponse, + TransactionModelResponse, + VertexBuildMapModel, +) from langflow.services.monitor.service import MonitorService router = APIRouter(prefix="/monitor", tags=["Monitor"]) @@ -40,8 +43,9 @@ async def delete_vertex_builds( raise HTTPException(status_code=500, detail=str(e)) -@router.get("/messages") +@router.get("/messages", response_model=List[MessageModelResponse]) async def get_messages( + flow_id: Optional[str] = Query(None), session_id: Optional[str] = Query(None), sender: Optional[str] = Query(None), sender_name: Optional[str] = Query(None), @@ -49,25 +53,32 @@ async def get_messages( monitor_service: MonitorService = Depends(get_monitor_service), ): try: - return monitor_service.get_messages( + df = monitor_service.get_messages( + flow_id=flow_id, sender=sender, sender_name=sender_name, session_id=session_id, order_by=order_by, ) + dicts = df.to_dict(orient="records") + return [MessageModelResponse(**d) for d in dicts] except Exception as e: raise HTTPException(status_code=500, detail=str(e)) -@router.get("/transactions") +@router.get("/transactions", response_model=List[TransactionModelResponse]) async def get_transactions( source: Optional[str] = Query(None), target: Optional[str] = Query(None), status: Optional[str] = Query(None), order_by: Optional[str] = Query("timestamp"), + flow_id: Optional[str] = Query(None), monitor_service: MonitorService = Depends(get_monitor_service), ): try: - return monitor_service.get_transactions(source=source, target=target, status=status, order_by=order_by) + dicts = monitor_service.get_transactions( + source=source, target=target, status=status, order_by=order_by, flow_id=flow_id + ) + return [TransactionModelResponse(**d) for d in dicts] except Exception as e: raise HTTPException(status_code=500, detail=str(e)) diff --git a/src/backend/base/langflow/api/v1/schemas.py b/src/backend/base/langflow/api/v1/schemas.py index 9558ac8c5..2b9eff312 100644 --- a/src/backend/base/langflow/api/v1/schemas.py +++ b/src/backend/base/langflow/api/v1/schemas.py @@ -139,10 +139,20 @@ class FlowListCreate(BaseModel): flows: List[FlowCreate] +class FlowListIds(BaseModel): + flow_ids: List[str] + + class FlowListRead(BaseModel): flows: List[FlowRead] +class FlowListReadWithFolderName(BaseModel): + flows: List[FlowRead] + name: str + description: str + + class InitResponse(BaseModel): flowId: str diff --git a/src/backend/base/langflow/api/v1/users.py b/src/backend/base/langflow/api/v1/users.py index 7a6d4b7c6..f7261e9d2 100644 --- a/src/backend/base/langflow/api/v1/users.py +++ b/src/backend/base/langflow/api/v1/users.py @@ -13,6 +13,7 @@ from langflow.services.auth.utils import ( get_password_hash, verify_password, ) +from langflow.services.database.models.folder.utils import create_default_folder_if_it_doesnt_exist from langflow.services.database.models.user import User, UserCreate, UserRead, UserUpdate from langflow.services.database.models.user.crud import get_user_by_id, update_user from langflow.services.deps import get_session, get_settings_service @@ -36,6 +37,9 @@ def add_user( session.add(new_user) session.commit() session.refresh(new_user) + folder = create_default_folder_if_it_doesnt_exist(session, new_user.id) + if not folder: + raise HTTPException(status_code=500, detail="Error creating default folder") except IntegrityError as e: session.rollback() raise HTTPException(status_code=400, detail="This username is unavailable.") from e diff --git a/src/backend/base/langflow/base/io/chat.py b/src/backend/base/langflow/base/io/chat.py index b3cb7c01d..14a09b3f5 100644 --- a/src/backend/base/langflow/base/io/chat.py +++ b/src/backend/base/langflow/base/io/chat.py @@ -49,12 +49,12 @@ class ChatComponent(CustomComponent): sender: Optional[str] = None, sender_name: Optional[str] = None, ) -> list[Record]: - records = store_message( message, session_id=session_id, sender=sender, sender_name=sender_name, + flow_id=self.graph.flow_id, ) self.status = records diff --git a/src/backend/base/langflow/base/memory/memory.py b/src/backend/base/langflow/base/memory/memory.py index 836752509..1bb2e22ff 100644 --- a/src/backend/base/langflow/base/memory/memory.py +++ b/src/backend/base/langflow/base/memory/memory.py @@ -1,7 +1,5 @@ from typing import Optional -from langflow.field_typing import Text -from langflow.helpers.record import records_to_text from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record diff --git a/src/backend/base/langflow/base/prompts/api_utils.py b/src/backend/base/langflow/base/prompts/api_utils.py index 89a17399c..d5a6aac28 100644 --- a/src/backend/base/langflow/base/prompts/api_utils.py +++ b/src/backend/base/langflow/base/prompts/api_utils.py @@ -1,10 +1,10 @@ from fastapi import HTTPException -from langchain.prompts import PromptTemplate from loguru import logger from langflow.api.v1.base import INVALID_NAMES, check_input_variables from langflow.interface.utils import extract_input_variables_from_prompt from langflow.template.field.prompt import DefaultPromptField +from langchain_core.prompts import PromptTemplate def validate_prompt(prompt_template: str, silent_errors: bool = False) -> list[str]: diff --git a/src/backend/base/langflow/base/prompts/utils.py b/src/backend/base/langflow/base/prompts/utils.py index fbf46dd71..2270035af 100644 --- a/src/backend/base/langflow/base/prompts/utils.py +++ b/src/backend/base/langflow/base/prompts/utils.py @@ -1,3 +1,6 @@ +from copy import deepcopy + + from langchain_core.documents import Document from langflow.schema import Record @@ -27,19 +30,20 @@ def dict_values_to_string(d: dict) -> dict: dict: The dictionary with values converted to strings. """ # Do something similar to the above - for key, value in d.items(): + d_copy = deepcopy(d) + for key, value in d_copy.items(): # it could be a list of records or documents or strings if isinstance(value, list): for i, item in enumerate(value): if isinstance(item, Record): - d[key][i] = record_to_string(item) + d_copy[key][i] = record_to_string(item) elif isinstance(item, Document): - d[key][i] = document_to_string(item) + d_copy[key][i] = document_to_string(item) elif isinstance(value, Record): - d[key] = record_to_string(value) + d_copy[key] = record_to_string(value) elif isinstance(value, Document): - d[key] = document_to_string(value) - return d + d_copy[key] = document_to_string(value) + return d_copy def document_to_string(document: Document) -> str: diff --git a/src/backend/base/langflow/components/agents/JsonAgent.py b/src/backend/base/langflow/components/agents/JsonAgent.py index 5fa342417..51f20d71d 100644 --- a/src/backend/base/langflow/components/agents/JsonAgent.py +++ b/src/backend/base/langflow/components/agents/JsonAgent.py @@ -1,10 +1,11 @@ -from langchain.agents import AgentExecutor, create_json_agent +from langchain.agents import AgentExecutor from langchain_community.agent_toolkits.json.toolkit import JsonToolkit from langflow.field_typing import ( BaseLanguageModel, ) from langflow.interface.custom.custom_component import CustomComponent +from langchain_community.agent_toolkits import create_json_agent class JsonAgentComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/agents/OpenAIConversationalAgent.py b/src/backend/base/langflow/components/agents/OpenAIConversationalAgent.py index 0edf8ea55..c4287569a 100644 --- a/src/backend/base/langflow/components/agents/OpenAIConversationalAgent.py +++ b/src/backend/base/langflow/components/agents/OpenAIConversationalAgent.py @@ -4,14 +4,14 @@ from langchain.agents.agent import AgentExecutor from langchain.agents.agent_toolkits.conversational_retrieval.openai_functions import _get_default_system_message from langchain.agents.openai_functions_agent.base import OpenAIFunctionsAgent from langchain.memory.token_buffer import ConversationTokenBufferMemory -from langchain.prompts import SystemMessagePromptTemplate -from langchain.prompts.chat import MessagesPlaceholder -from langchain.schema.memory import BaseMemory -from langchain.tools import Tool -from langchain_community.chat_models import ChatOpenAI +from langchain_openai import ChatOpenAI from langflow.field_typing.range_spec import RangeSpec from langflow.interface.custom.custom_component import CustomComponent +from pydantic.v1 import SecretStr +from langchain_core.memory import BaseMemory +from langchain_core.prompts import MessagesPlaceholder, SystemMessagePromptTemplate +from langchain_core.tools import Tool class ConversationalAgent(CustomComponent): @@ -57,9 +57,14 @@ class ConversationalAgent(CustomComponent): max_token_limit: int = 2000, temperature: float = 0.9, ) -> AgentExecutor: + if openai_api_key: + api_key = SecretStr(openai_api_key) + else: + api_key = None + llm = ChatOpenAI( model=model_name, - api_key=openai_api_key, + api_key=api_key, base_url=openai_api_base, max_tokens=max_token_limit, temperature=temperature, diff --git a/src/backend/base/langflow/components/embeddings/AmazonBedrockEmbeddings.py b/src/backend/base/langflow/components/embeddings/AmazonBedrockEmbeddings.py index d4330d9e4..c8cf2a96b 100644 --- a/src/backend/base/langflow/components/embeddings/AmazonBedrockEmbeddings.py +++ b/src/backend/base/langflow/components/embeddings/AmazonBedrockEmbeddings.py @@ -1,9 +1,8 @@ from typing import Optional - -from langchain.embeddings.base import Embeddings from langchain_community.embeddings import BedrockEmbeddings from langflow.interface.custom.custom_component import CustomComponent +from langchain_core.embeddings import Embeddings class AmazonBedrockEmeddingsComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/embeddings/AzureOpenAIEmbeddings.py b/src/backend/base/langflow/components/embeddings/AzureOpenAIEmbeddings.py index d8aec24cd..5e02890ff 100644 --- a/src/backend/base/langflow/components/embeddings/AzureOpenAIEmbeddings.py +++ b/src/backend/base/langflow/components/embeddings/AzureOpenAIEmbeddings.py @@ -1,7 +1,7 @@ -from langchain.embeddings.base import Embeddings -from langchain_community.embeddings import AzureOpenAIEmbeddings - from langflow.interface.custom.custom_component import CustomComponent +from langchain_core.embeddings import Embeddings +from langchain_openai import AzureOpenAIEmbeddings +from pydantic.v1 import SecretStr class AzureOpenAIEmbeddingsComponent(CustomComponent): @@ -52,12 +52,16 @@ class AzureOpenAIEmbeddingsComponent(CustomComponent): api_version: str, api_key: str, ) -> Embeddings: + if api_key: + azure_api_key = SecretStr(api_key) + else: + azure_api_key = None try: embeddings = AzureOpenAIEmbeddings( azure_endpoint=azure_endpoint, azure_deployment=azure_deployment, api_version=api_version, - api_key=api_key, + api_key=azure_api_key, ) except Exception as e: diff --git a/src/backend/base/langflow/components/embeddings/MistalAIEmbeddings.py b/src/backend/base/langflow/components/embeddings/MistalAIEmbeddings.py index 4088d4839..23d80132f 100644 --- a/src/backend/base/langflow/components/embeddings/MistalAIEmbeddings.py +++ b/src/backend/base/langflow/components/embeddings/MistalAIEmbeddings.py @@ -1,9 +1,9 @@ -from typing import List, Optional from pydantic.v1 import SecretStr from langchain_mistralai.embeddings import MistralAIEmbeddings from langflow.interface.custom.custom_component import CustomComponent -from langflow.field_typing import Embeddings, NestedDict +from langflow.field_typing import Embeddings + class MistralAIEmbeddingsComponent(CustomComponent): display_name = "MistralAI Embeddings" @@ -37,11 +37,7 @@ class MistralAIEmbeddingsComponent(CustomComponent): "advanced": True, "value": 120, }, - "endpoint": { - "display_name": "API Endpoint", - "advanced": True, - "value": "https://api.mistral.ai/v1/" - } + "endpoint": {"display_name": "API Endpoint", "advanced": True, "value": "https://api.mistral.ai/v1/"}, } def build( @@ -51,7 +47,7 @@ class MistralAIEmbeddingsComponent(CustomComponent): max_concurrent_requests: int = 64, max_retries: int = 5, timeout: int = 120, - endpoint: str = "https://api.mistral.ai/v1/" + endpoint: str = "https://api.mistral.ai/v1/", ) -> Embeddings: if mistral_api_key: api_key = SecretStr(mistral_api_key) @@ -64,6 +60,5 @@ class MistralAIEmbeddingsComponent(CustomComponent): endpoint=endpoint, max_concurrent_requests=max_concurrent_requests, max_retries=max_retries, - timeout=timeout + timeout=timeout, ) - diff --git a/src/backend/base/langflow/components/embeddings/OllamaEmbeddings.py b/src/backend/base/langflow/components/embeddings/OllamaEmbeddings.py index 63ddc6fd4..575df2d3f 100644 --- a/src/backend/base/langflow/components/embeddings/OllamaEmbeddings.py +++ b/src/backend/base/langflow/components/embeddings/OllamaEmbeddings.py @@ -1,9 +1,8 @@ from typing import Optional - -from langchain.embeddings.base import Embeddings from langchain_community.embeddings import OllamaEmbeddings from langflow.interface.custom.custom_component import CustomComponent +from langchain_core.embeddings import Embeddings class OllamaEmbeddingsComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/experimental/Pass.py b/src/backend/base/langflow/components/experimental/Pass.py index 1c76a8e96..9528f0591 100644 --- a/src/backend/base/langflow/components/experimental/Pass.py +++ b/src/backend/base/langflow/components/experimental/Pass.py @@ -3,11 +3,12 @@ from langflow.interface.custom.custom_component import CustomComponent from langflow.schema import Record from langflow.field_typing import Text + class PassComponent(CustomComponent): display_name = "Pass" description = "A pass-through component that forwards the second input while ignoring the first, used for controlling workflow direction." field_order = ["ignored_input", "forwarded_input"] - + def build_config(self) -> dict: return { "ignored_input": { @@ -19,7 +20,7 @@ class PassComponent(CustomComponent): "display_name": "Input", "info": "This input is forwarded by the component.", "input_types": ["Text", "Record"], - } + }, } def build(self, ignored_input: Text, forwarded_input: Text) -> Union[Text, Record]: diff --git a/src/backend/base/langflow/components/experimental/StoreMessage.py b/src/backend/base/langflow/components/experimental/StoreMessage.py index ac50b78b4..9f3aa60e2 100644 --- a/src/backend/base/langflow/components/experimental/StoreMessage.py +++ b/src/backend/base/langflow/components/experimental/StoreMessage.py @@ -32,7 +32,6 @@ class StoreMessageComponent(CustomComponent): session_id: Optional[str] = None, message: str = "", ) -> List[Record]: - store_message( sender=sender, sender_name=sender_name, diff --git a/src/backend/base/langflow/components/experimental/SubFlow.py b/src/backend/base/langflow/components/experimental/SubFlow.py index 72e07c8e8..80e15c6ad 100644 --- a/src/backend/base/langflow/components/experimental/SubFlow.py +++ b/src/backend/base/langflow/components/experimental/SubFlow.py @@ -35,7 +35,7 @@ class SubFlowComponent(CustomComponent): build_config["flow_name"]["options"] = self.get_flow_names() # Clean up the build config for key in list(build_config.keys()): - if key not in self.field_order + ["code", "_type"]: + if key not in self.field_order + ["code", "_type", "get_final_results_only"]: del build_config[key] if field_value is not None and field_name == "flow_name": try: @@ -85,20 +85,29 @@ class SubFlowComponent(CustomComponent): "display_name": "Tweaks", "info": "Tweaks to apply to the flow.", }, + "get_final_results_only": { + "display_name": "Get Final Results Only", + "info": "If False, the output will contain all outputs from the flow.", + "advanced": True, + }, } - def build_records_from_result_data(self, result_data: ResultData) -> List[Record]: + def build_records_from_result_data(self, result_data: ResultData, get_final_results_only: bool) -> List[Record]: messages = result_data.messages if not messages: return [] records = [] for message in messages: message_dict = message if isinstance(message, dict) else message.model_dump() - record = Record(data={"result": result_data.model_dump(), "message": message_dict.get("message", "")}) + if get_final_results_only: + result_data_dict = result_data.model_dump() + results = result_data_dict.get("results", {}) + inner_result = results.get("result", {}) + record = Record(data={"result": inner_result, "message": message_dict}, text_key="result") records.append(record) return records - async def build(self, flow_name: str, **kwargs) -> List[Record]: + async def build(self, flow_name: str, get_final_results_only: bool = True, **kwargs) -> List[Record]: tweaks = {key: {"input_value": value} for key, value in kwargs.items()} run_outputs: List[Optional[RunOutputs]] = await self.run_flow( tweaks=tweaks, @@ -112,7 +121,7 @@ class SubFlowComponent(CustomComponent): if run_output is not None: for output in run_output.outputs: if output: - records.extend(self.build_records_from_result_data(output)) + records.extend(self.build_records_from_result_data(output, get_final_results_only)) self.status = records logger.debug(records) diff --git a/src/backend/base/langflow/components/experimental/TextOperator.py b/src/backend/base/langflow/components/experimental/TextOperator.py index 095a7dcb3..89fba13b6 100644 --- a/src/backend/base/langflow/components/experimental/TextOperator.py +++ b/src/backend/base/langflow/components/experimental/TextOperator.py @@ -4,6 +4,7 @@ from langflow.interface.custom.custom_component import CustomComponent from langflow.schema import Record from langflow.field_typing import Text + class TextOperatorComponent(CustomComponent): display_name = "Text Operator" description = "Compares two text inputs based on a specified condition such as equality or inequality, with optional case sensitivity." @@ -21,14 +22,7 @@ class TextOperatorComponent(CustomComponent): "operator": { "display_name": "Operator", "info": "The operator to apply for comparing the texts.", - "options": [ - "equals", - "not equals", - "contains", - "starts with", - "ends with", - "exists" - ], + "options": ["equals", "not equals", "contains", "starts with", "ends with", "exists"], }, "case_sensitive": { "display_name": "Case Sensitive", @@ -51,11 +45,8 @@ class TextOperatorComponent(CustomComponent): case_sensitive: bool = False, true_output: Optional[Text] = "", ) -> Union[Text, Record]: - if not input_text or not match_text: - raise ValueError( - "Both 'input_text' and 'match_text' must be provided and non-empty." - ) + raise ValueError("Both 'input_text' and 'match_text' must be provided and non-empty.") if not case_sensitive: input_text = input_text.lower() @@ -82,4 +73,4 @@ class TextOperatorComponent(CustomComponent): self.status = "Comparison failed, stopping execution." self.stop() - return output_record \ No newline at end of file + return output_record diff --git a/src/backend/base/langflow/components/memories/AstraDBMessageReader.py b/src/backend/base/langflow/components/memories/AstraDBMessageReader.py new file mode 100644 index 000000000..bbb732f16 --- /dev/null +++ b/src/backend/base/langflow/components/memories/AstraDBMessageReader.py @@ -0,0 +1,91 @@ +from typing import Optional, cast + +from langchain_astradb.chat_message_histories import AstraDBChatMessageHistory + +from langflow.base.memory.memory import BaseMemoryComponent +from langflow.field_typing import Text +from langflow.schema.schema import Record + + +class AstraDBMessageReaderComponent(BaseMemoryComponent): + display_name = "Astra DB Message Reader" + description = "Retrieves stored chat messages from Astra DB." + + def build_config(self): + return { + "session_id": { + "display_name": "Session ID", + "info": "Session ID of the chat history.", + "input_types": ["Text"], + }, + "collection_name": { + "display_name": "Collection Name", + "info": "Collection name for Astra DB.", + "input_types": ["Text"], + }, + "token": { + "display_name": "Astra DB Application Token", + "info": "Token for the Astra DB instance.", + "password": True, + }, + "api_endpoint": { + "display_name": "Astra DB API Endpoint", + "info": "API Endpoint for the Astra DB instance.", + "password": True, + }, + "namespace": { + "display_name": "Namespace", + "info": "Namespace for the Astra DB instance.", + "input_types": ["Text"], + "advanced": True, + }, + } + + def get_messages(self, **kwargs) -> list[Record]: + """ + Retrieves messages from the AstraDBChatMessageHistory memory. + + Args: + memory (AstraDBChatMessageHistory): The AstraDBChatMessageHistory instance to retrieve messages from. + + Returns: + list[Record]: A list of Record objects representing the search results. + """ + memory: AstraDBChatMessageHistory = cast(AstraDBChatMessageHistory, kwargs.get("memory")) + if not memory: + raise ValueError("AstraDBChatMessageHistory instance is required.") + + # Get messages from the memory + messages = memory.messages + results = [Record.from_lc_message(message) for message in messages] + + return list(results) + + def build( + self, + session_id: Text, + collection_name: str, + token: str, + api_endpoint: str, + namespace: Optional[str] = None, + ) -> list[Record]: + try: + pass + except ImportError: + raise ImportError( + "Could not import langchain Astra DB integration package. " + "Please install it with `pip install langchain-astradb`." + ) + + memory = AstraDBChatMessageHistory( + session_id=session_id, + collection_name=collection_name, + token=token, + api_endpoint=api_endpoint, + namespace=namespace, + ) + + records = self.get_messages(memory=memory) + self.status = records + + return records diff --git a/src/backend/base/langflow/components/memories/AstraDBMessageWriter.py b/src/backend/base/langflow/components/memories/AstraDBMessageWriter.py new file mode 100644 index 000000000..265f60cf4 --- /dev/null +++ b/src/backend/base/langflow/components/memories/AstraDBMessageWriter.py @@ -0,0 +1,117 @@ +from typing import Optional + +from langflow.base.memory.memory import BaseMemoryComponent +from langflow.field_typing import Text +from langflow.schema.schema import Record + +from langchain_core.messages import BaseMessage +from langchain_astradb import AstraDBChatMessageHistory + + +class AstraDBMessageWriterComponent(BaseMemoryComponent): + display_name = "Astra DB Message Writer" + description = "Writes a message to Astra DB." + + def build_config(self): + return { + "input_value": { + "display_name": "Input Record", + "info": "Record to write to Astra DB.", + }, + "session_id": { + "display_name": "Session ID", + "info": "Session ID of the chat history.", + "input_types": ["Text"], + }, + "collection_name": { + "display_name": "Collection Name", + "info": "Collection name for Astra DB.", + "input_types": ["Text"], + }, + "token": { + "display_name": "Astra DB Application Token", + "info": "Token for the Astra DB instance.", + "password": True, + }, + "api_endpoint": { + "display_name": "Astra DB API Endpoint", + "info": "API Endpoint for the Astra DB instance.", + "password": True, + }, + "namespace": { + "display_name": "Namespace", + "info": "Namespace for the Astra DB instance.", + "input_types": ["Text"], + "advanced": True, + }, + } + + def add_message( + self, + sender: str, + sender_name: str, + text: Text, + session_id: str, + metadata: Optional[dict] = None, + **kwargs, + ): + """ + Adds a message to the AstraDBChatMessageHistory memory. + + Args: + sender (Text): The type of the message sender. Valid values are "Machine" or "User". + sender_name (Text): The name of the message sender. + text (Text): The content of the message. + session_id (Text): The session ID associated with the message. + metadata (dict | None, optional): Additional metadata for the message. Defaults to None. + **kwargs: Additional keyword arguments. + + Raises: + ValueError: If the AstraDBChatMessageHistory instance is not provided. + + """ + memory: AstraDBChatMessageHistory | None = kwargs.pop("memory", None) + if memory is None: + raise ValueError("AstraDBChatMessageHistory instance is required.") + + text_list = [ + BaseMessage( + content=text, + sender=sender, + sender_name=sender_name, + metadata=metadata, + session_id=session_id, + ) + ] + + memory.add_messages(text_list) + + def build( + self, + input_value: Record, + session_id: Text, + collection_name: str, + token: str, + api_endpoint: str, + namespace: Optional[str] = None, + ) -> Record: + try: + pass + except ImportError: + raise ImportError( + "Could not import langchain Astra DB integration package. " + "Please install it with `pip install langchain-astradb`." + ) + + memory = AstraDBChatMessageHistory( + session_id=session_id, + collection_name=collection_name, + token=token, + api_endpoint=api_endpoint, + namespace=namespace, + ) + + self.add_message(**input_value.data, memory=memory) + self.status = f"Added message to Astra DB memory for session {session_id}" + + return input_value diff --git a/src/backend/base/langflow/components/model_specs/AnthropicLLMSpecs.py b/src/backend/base/langflow/components/model_specs/AnthropicLLMSpecs.py index 016eaeb2d..d83ad23a0 100644 --- a/src/backend/base/langflow/components/model_specs/AnthropicLLMSpecs.py +++ b/src/backend/base/langflow/components/model_specs/AnthropicLLMSpecs.py @@ -1,10 +1,9 @@ from typing import Optional - -from langchain.llms.base import BaseLanguageModel from langchain_anthropic import ChatAnthropic from pydantic.v1 import SecretStr from langflow.interface.custom.custom_component import CustomComponent +from langchain_core.language_models import BaseLanguageModel class ChatAntropicSpecsComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/model_specs/AzureChatOpenAISpecs.py b/src/backend/base/langflow/components/model_specs/AzureChatOpenAISpecs.py index 6f468bbed..c0fd2b779 100644 --- a/src/backend/base/langflow/components/model_specs/AzureChatOpenAISpecs.py +++ b/src/backend/base/langflow/components/model_specs/AzureChatOpenAISpecs.py @@ -1,9 +1,9 @@ from typing import Optional -from langchain.llms.base import BaseLanguageModel -from langchain_community.chat_models.azure_openai import AzureChatOpenAI - from langflow.interface.custom.custom_component import CustomComponent +from langchain_core.language_models import BaseLanguageModel +from langchain_openai import AzureChatOpenAI +from pydantic.v1 import SecretStr class AzureChatOpenAISpecsComponent(CustomComponent): @@ -84,13 +84,17 @@ class AzureChatOpenAISpecsComponent(CustomComponent): temperature: float = 0.7, max_tokens: Optional[int] = 1000, ) -> BaseLanguageModel: + if api_key: + azure_api_key = SecretStr(api_key) + else: + azure_api_key = None try: llm = AzureChatOpenAI( model=model, azure_endpoint=azure_endpoint, azure_deployment=azure_deployment, api_version=api_version, - api_key=api_key, + api_key=azure_api_key, temperature=temperature, max_tokens=max_tokens, ) diff --git a/src/backend/base/langflow/components/model_specs/ChatOpenAISpecs.py b/src/backend/base/langflow/components/model_specs/ChatOpenAISpecs.py index 5a7d47f04..75f893582 100644 --- a/src/backend/base/langflow/components/model_specs/ChatOpenAISpecs.py +++ b/src/backend/base/langflow/components/model_specs/ChatOpenAISpecs.py @@ -1,6 +1,8 @@ from typing import Optional -from langchain_community.chat_models.openai import ChatOpenAI +from langchain_openai import ChatOpenAI +from pydantic.v1 import SecretStr + from langflow.base.models.openai_constants import MODEL_NAMES from langflow.field_typing import BaseLanguageModel, NestedDict @@ -59,11 +61,15 @@ class ChatOpenAIComponent(CustomComponent): ) -> BaseLanguageModel: if not openai_api_base: openai_api_base = "https://api.openai.com/v1" + if openai_api_key: + api_key = SecretStr(openai_api_key) + else: + api_key = None return ChatOpenAI( max_tokens=max_tokens, model_kwargs=model_kwargs, model=model_name, base_url=openai_api_base, - api_key=openai_api_key, + api_key=api_key, temperature=temperature, ) diff --git a/src/backend/base/langflow/components/outputs/RecordsOutput.py b/src/backend/base/langflow/components/outputs/RecordsOutput.py new file mode 100644 index 000000000..25eae862e --- /dev/null +++ b/src/backend/base/langflow/components/outputs/RecordsOutput.py @@ -0,0 +1,10 @@ +from langflow.custom import CustomComponent +from langflow.schema import Record + + +class RecordsOutput(CustomComponent): + display_name = "Records Output" + description = "Display Records as a Table" + + def build(self, input_value: Record) -> Record: + return input_value diff --git a/src/backend/base/langflow/components/retrievers/AmazonKendra.py b/src/backend/base/langflow/components/retrievers/AmazonKendra.py index 6584f6545..436f69d0f 100644 --- a/src/backend/base/langflow/components/retrievers/AmazonKendra.py +++ b/src/backend/base/langflow/components/retrievers/AmazonKendra.py @@ -1,9 +1,8 @@ from typing import Optional - -from langchain.schema import BaseRetriever from langchain_community.retrievers import AmazonKendraRetriever from langflow.interface.custom.custom_component import CustomComponent +from langchain_core.retrievers import BaseRetriever class AmazonKendraRetrieverComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/retrievers/MetalRetriever.py b/src/backend/base/langflow/components/retrievers/MetalRetriever.py index c5c56a397..4f1e71dd1 100644 --- a/src/backend/base/langflow/components/retrievers/MetalRetriever.py +++ b/src/backend/base/langflow/components/retrievers/MetalRetriever.py @@ -1,10 +1,9 @@ from typing import Optional - -from langchain.schema import BaseRetriever from langchain_community.retrievers import MetalRetriever from metal_sdk.metal import Metal # type: ignore from langflow.interface.custom.custom_component import CustomComponent +from langchain_core.retrievers import BaseRetriever class MetalRetrieverComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/retrievers/VectaraSelfQueryRetriver.py b/src/backend/base/langflow/components/retrievers/VectaraSelfQueryRetriver.py index 759021487..0f5db6383 100644 --- a/src/backend/base/langflow/components/retrievers/VectaraSelfQueryRetriver.py +++ b/src/backend/base/langflow/components/retrievers/VectaraSelfQueryRetriver.py @@ -1,13 +1,12 @@ import json from typing import List - -from langchain.base_language import BaseLanguageModel from langchain.chains.query_constructor.base import AttributeInfo from langchain.retrievers.self_query.base import SelfQueryRetriever -from langchain.schema import BaseRetriever -from langchain.schema.vectorstore import VectorStore from langflow.interface.custom.custom_component import CustomComponent +from langchain_core.language_models import BaseLanguageModel +from langchain_core.retrievers import BaseRetriever +from langchain_core.vectorstores import VectorStore class VectaraSelfQueryRetriverComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/textsplitters/CharacterTextSplitter.py b/src/backend/base/langflow/components/textsplitters/CharacterTextSplitter.py index 2a0f3686f..8c23720f2 100644 --- a/src/backend/base/langflow/components/textsplitters/CharacterTextSplitter.py +++ b/src/backend/base/langflow/components/textsplitters/CharacterTextSplitter.py @@ -1,10 +1,9 @@ from typing import List -from langchain.text_splitter import CharacterTextSplitter - from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record from langflow.utils.util import unescape_string +from langchain_text_splitters import CharacterTextSplitter class CharacterTextSplitterComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/textsplitters/LanguageRecursiveTextSplitter.py b/src/backend/base/langflow/components/textsplitters/LanguageRecursiveTextSplitter.py index 1a4ae24a1..19dc94686 100644 --- a/src/backend/base/langflow/components/textsplitters/LanguageRecursiveTextSplitter.py +++ b/src/backend/base/langflow/components/textsplitters/LanguageRecursiveTextSplitter.py @@ -1,9 +1,8 @@ from typing import List, Optional -from langchain.text_splitter import Language - from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record +from langchain_text_splitters import Language, RecursiveCharacterTextSplitter class LanguageRecursiveTextSplitterComponent(CustomComponent): @@ -61,7 +60,6 @@ class LanguageRecursiveTextSplitterComponent(CustomComponent): Returns: list[str]: The chunks of text. """ - from langchain.text_splitter import RecursiveCharacterTextSplitter # Make sure chunk_size and chunk_overlap are ints if isinstance(chunk_size, str): diff --git a/src/backend/base/langflow/components/textsplitters/RecursiveCharacterTextSplitter.py b/src/backend/base/langflow/components/textsplitters/RecursiveCharacterTextSplitter.py index 1ceaa8bd6..2bcde2232 100644 --- a/src/backend/base/langflow/components/textsplitters/RecursiveCharacterTextSplitter.py +++ b/src/backend/base/langflow/components/textsplitters/RecursiveCharacterTextSplitter.py @@ -1,11 +1,10 @@ from typing import Optional - -from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_core.documents import Document from langflow.interface.custom.custom_component import CustomComponent from langflow.schema import Record from langflow.utils.util import build_loader_repr_from_records, unescape_string +from langchain_text_splitters import RecursiveCharacterTextSplitter class RecursiveCharacterTextSplitterComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/toolkits/Metaphor.py b/src/backend/base/langflow/components/toolkits/Metaphor.py index 14962924f..ba63416fb 100644 --- a/src/backend/base/langflow/components/toolkits/Metaphor.py +++ b/src/backend/base/langflow/components/toolkits/Metaphor.py @@ -1,11 +1,9 @@ from typing import List, Union - -from langchain.agents import tool -from langchain.agents.agent_toolkits.base import BaseToolkit -from langchain.tools import Tool from metaphor_python import Metaphor # type: ignore from langflow.interface.custom.custom_component import CustomComponent +from langchain_community.agent_toolkits.base import BaseToolkit +from langchain_core.tools import Tool, tool class MetaphorToolkit(CustomComponent): diff --git a/src/backend/base/langflow/components/toolkits/VectorStoreInfo.py b/src/backend/base/langflow/components/toolkits/VectorStoreInfo.py index 626a14fd8..78f00dc40 100644 --- a/src/backend/base/langflow/components/toolkits/VectorStoreInfo.py +++ b/src/backend/base/langflow/components/toolkits/VectorStoreInfo.py @@ -1,7 +1,7 @@ from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreInfo -from langchain_community.vectorstores import VectorStore from langflow.interface.custom.custom_component import CustomComponent +from langchain_core.vectorstores import VectorStore class VectorStoreInfoComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/tools/PythonREPLTool.py b/src/backend/base/langflow/components/tools/PythonREPLTool.py index 6cc7d8649..f2f3b4b52 100644 --- a/src/backend/base/langflow/components/tools/PythonREPLTool.py +++ b/src/backend/base/langflow/components/tools/PythonREPLTool.py @@ -1,10 +1,9 @@ import importlib - -from langchain.agents import Tool from langchain_experimental.utilities import PythonREPL from langflow.base.tools.base import build_status_from_tool from langflow.custom import CustomComponent +from langchain_core.tools import Tool class PythonREPLToolComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/vectorsearch/CouchbaseSearch.py b/src/backend/base/langflow/components/vectorsearch/CouchbaseSearch.py new file mode 100644 index 000000000..2aa23c490 --- /dev/null +++ b/src/backend/base/langflow/components/vectorsearch/CouchbaseSearch.py @@ -0,0 +1,69 @@ +from typing import List + +from langflow.components.vectorstores.base.model import LCVectorStoreComponent +from langflow.components.vectorstores.Couchbase import CouchbaseComponent +from langflow.field_typing import Embeddings, Text +from langflow.schema import Record + + +class CouchbaseSearchComponent(LCVectorStoreComponent): + display_name = "Couchbase Search" + description = "Search a Couchbase Vector Store for similar documents." + documentation = "https://python.langchain.com/docs/integrations/vectorstores/couchbase" + icon = "Couchbase" + field_order = [ + "couchbase_connection_string", + "couchbase_username", + "couchbase_password", + "bucket_name", + "scope_name", + "collection_name", + "index_name", + ] + + def build_config(self): + return { + "input_value": {"display_name": "Input"}, + "embedding": {"display_name": "Embedding"}, + "couchbase_connection_string": {"display_name": "Couchbase Cluster connection string", "required": True}, + "couchbase_username": {"display_name": "Couchbase username", "required": True}, + "couchbase_password": {"display_name": "Couchbase password", "password": True, "required": True}, + "bucket_name": {"display_name": "Bucket Name", "required": True}, + "scope_name": {"display_name": "Scope Name", "required": True}, + "collection_name": {"display_name": "Collection Name", "required": True}, + "index_name": {"display_name": "Index Name", "required": True}, + "number_of_results": { + "display_name": "Number of Results", + "info": "Number of results to return.", + "advanced": True, + }, + } + + def build( # type: ignore[override] + self, + input_value: Text, + embedding: Embeddings, + number_of_results: int = 4, + bucket_name: str = "", + scope_name: str = "", + collection_name: str = "", + index_name: str = "", + couchbase_connection_string: str = "", + couchbase_username: str = "", + couchbase_password: str = "", + ) -> List[Record]: + vector_store = CouchbaseComponent().build( + couchbase_connection_string=couchbase_connection_string, + couchbase_username=couchbase_username, + couchbase_password=couchbase_password, + bucket_name=bucket_name, + scope_name=scope_name, + collection_name=collection_name, + embedding=embedding, + index_name=index_name, + ) + if not vector_store: + raise ValueError("Failed to create Couchbase Vector Store") + return self.search_with_vector_store( + vector_store=vector_store, input_value=input_value, search_type="similarity", k=number_of_results + ) diff --git a/src/backend/base/langflow/components/vectorsearch/RedisSearch.py b/src/backend/base/langflow/components/vectorsearch/RedisSearch.py index 25e71c64b..afe653f6e 100644 --- a/src/backend/base/langflow/components/vectorsearch/RedisSearch.py +++ b/src/backend/base/langflow/components/vectorsearch/RedisSearch.py @@ -1,11 +1,10 @@ from typing import List, Optional -from langchain.embeddings.base import Embeddings - from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.Redis import RedisComponent from langflow.field_typing import Text from langflow.schema import Record +from langchain_core.embeddings import Embeddings class RedisSearchComponent(RedisComponent, LCVectorStoreComponent): diff --git a/src/backend/base/langflow/components/vectorsearch/WeaviateSearch.py b/src/backend/base/langflow/components/vectorsearch/WeaviateSearch.py index fd5ccd1aa..b51f65a55 100644 --- a/src/backend/base/langflow/components/vectorsearch/WeaviateSearch.py +++ b/src/backend/base/langflow/components/vectorsearch/WeaviateSearch.py @@ -1,11 +1,10 @@ from typing import List, Optional -from langchain.embeddings.base import Embeddings - from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.Weaviate import WeaviateVectorStoreComponent from langflow.field_typing import Text from langflow.schema import Record +from langchain_core.embeddings import Embeddings class WeaviateSearchVectorStore(WeaviateVectorStoreComponent, LCVectorStoreComponent): diff --git a/src/backend/base/langflow/components/vectorsearch/__init__.py b/src/backend/base/langflow/components/vectorsearch/__init__.py index 28ea85fce..4cdf5b83c 100644 --- a/src/backend/base/langflow/components/vectorsearch/__init__.py +++ b/src/backend/base/langflow/components/vectorsearch/__init__.py @@ -9,10 +9,12 @@ from .SupabaseVectorStoreSearch import SupabaseSearchComponent from .VectaraSearch import VectaraSearchComponent from .WeaviateSearch import WeaviateSearchVectorStore from .pgvectorSearch import PGVectorSearchComponent +from .Couchbase import CouchbaseSearchComponent # type: ignore __all__ = [ "AstraDBSearchComponent", "ChromaSearchComponent", + "CouchbaseSearchComponent", "FAISSSearchComponent", "MongoDBAtlasSearchComponent", "PineconeSearchComponent", diff --git a/src/backend/base/langflow/components/vectorsearch/pgvectorSearch.py b/src/backend/base/langflow/components/vectorsearch/pgvectorSearch.py index 9b074b5f6..c6bedfede 100644 --- a/src/backend/base/langflow/components/vectorsearch/pgvectorSearch.py +++ b/src/backend/base/langflow/components/vectorsearch/pgvectorSearch.py @@ -1,11 +1,10 @@ from typing import List -from langchain.embeddings.base import Embeddings - from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.pgvector import PGVectorComponent from langflow.field_typing import Text from langflow.schema import Record +from langchain_core.embeddings import Embeddings class PGVectorSearchComponent(PGVectorComponent, LCVectorStoreComponent): diff --git a/src/backend/base/langflow/components/vectorstores/AstraDB.py b/src/backend/base/langflow/components/vectorstores/AstraDB.py index 3425c3a4e..07ded028e 100644 --- a/src/backend/base/langflow/components/vectorstores/AstraDB.py +++ b/src/backend/base/langflow/components/vectorstores/AstraDB.py @@ -1,12 +1,11 @@ from typing import List, Optional, Union - -from langchain.schema import BaseRetriever from langchain_astradb import AstraDBVectorStore from langchain_astradb.utils.astradb import SetupMode from langflow.custom import CustomComponent from langflow.field_typing import Embeddings, VectorStore from langflow.schema import Record +from langchain_core.retrievers import BaseRetriever class AstraDBVectorStoreComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/vectorstores/Chroma.py b/src/backend/base/langflow/components/vectorstores/Chroma.py index 8fe2f54a9..8ea943a61 100644 --- a/src/backend/base/langflow/components/vectorstores/Chroma.py +++ b/src/backend/base/langflow/components/vectorstores/Chroma.py @@ -1,13 +1,13 @@ from typing import List, Optional, Union import chromadb # type: ignore -from langchain.embeddings.base import Embeddings -from langchain.schema import BaseRetriever -from langchain_community.vectorstores import VectorStore from langchain_community.vectorstores.chroma import Chroma from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record +from langchain_core.embeddings import Embeddings +from langchain_core.retrievers import BaseRetriever +from langchain_core.vectorstores import VectorStore class ChromaComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/vectorstores/Couchbase.py b/src/backend/base/langflow/components/vectorstores/Couchbase.py new file mode 100644 index 000000000..f99ac7d40 --- /dev/null +++ b/src/backend/base/langflow/components/vectorstores/Couchbase.py @@ -0,0 +1,90 @@ +from typing import List, Optional, Union + +from langchain_community.vectorstores import CouchbaseVectorStore + +from langflow.custom import CustomComponent +from langflow.field_typing import Embeddings, VectorStore +from langflow.schema import Record + +from datetime import timedelta + +from couchbase.auth import PasswordAuthenticator # type: ignore +from couchbase.cluster import Cluster # type: ignore +from couchbase.options import ClusterOptions # type: ignore +from langchain_core.retrievers import BaseRetriever + + +class CouchbaseComponent(CustomComponent): + display_name = "Couchbase" + description = "Construct a `Couchbase Vector Search` vector store from raw documents." + documentation = "https://python.langchain.com/docs/integrations/vectorstores/couchbase" + icon = "Couchbase" + field_order = [ + "couchbase_connection_string", + "couchbase_username", + "couchbase_password", + "bucket_name", + "scope_name", + "collection_name", + "index_name", + ] + + def build_config(self): + return { + "inputs": {"display_name": "Input", "input_types": ["Document", "Record"]}, + "embedding": {"display_name": "Embedding"}, + "couchbase_connection_string": {"display_name": "Couchbase Cluster connection string", "required": True}, + "couchbase_username": {"display_name": "Couchbase username", "required": True}, + "couchbase_password": {"display_name": "Couchbase password", "password": True, "required": True}, + "bucket_name": {"display_name": "Bucket Name", "required": True}, + "scope_name": {"display_name": "Scope Name", "required": True}, + "collection_name": {"display_name": "Collection Name", "required": True}, + "index_name": {"display_name": "Index Name", "required": True}, + } + + def build( + self, + embedding: Embeddings, + inputs: Optional[List[Record]] = None, + bucket_name: str = "", + scope_name: str = "", + collection_name: str = "", + index_name: str = "", + couchbase_connection_string: str = "", + couchbase_username: str = "", + couchbase_password: str = "", + ) -> Union[VectorStore, BaseRetriever]: + try: + auth = PasswordAuthenticator(couchbase_username, couchbase_password) + options = ClusterOptions(auth) + cluster = Cluster(couchbase_connection_string, options) + + cluster.wait_until_ready(timedelta(seconds=5)) + except Exception as e: + raise ValueError(f"Failed to connect to Couchbase: {e}") + documents = [] + for _input in inputs or []: + if isinstance(_input, Record): + documents.append(_input.to_lc_document()) + else: + documents.append(_input) + if documents: + vector_store = CouchbaseVectorStore.from_documents( + documents=documents, + cluster=cluster, + bucket_name=bucket_name, + scope_name=scope_name, + collection_name=collection_name, + embedding=embedding, + index_name=index_name, + ) + else: + vector_store = CouchbaseVectorStore( + cluster=cluster, + bucket_name=bucket_name, + scope_name=scope_name, + collection_name=collection_name, + embedding=embedding, + index_name=index_name, + ) + return vector_store diff --git a/src/backend/base/langflow/components/vectorstores/FAISS.py b/src/backend/base/langflow/components/vectorstores/FAISS.py index ea9ee1c4d..410ac6a87 100644 --- a/src/backend/base/langflow/components/vectorstores/FAISS.py +++ b/src/backend/base/langflow/components/vectorstores/FAISS.py @@ -1,12 +1,11 @@ from typing import List, Text, Union - -from langchain.schema import BaseRetriever -from langchain_community.vectorstores import VectorStore from langchain_community.vectorstores.faiss import FAISS from langflow.field_typing import Embeddings from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record +from langchain_core.retrievers import BaseRetriever +from langchain_core.vectorstores import VectorStore class FAISSComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/vectorstores/Pinecone.py b/src/backend/base/langflow/components/vectorstores/Pinecone.py index b25bb6086..31521dc10 100644 --- a/src/backend/base/langflow/components/vectorstores/Pinecone.py +++ b/src/backend/base/langflow/components/vectorstores/Pinecone.py @@ -1,7 +1,4 @@ from typing import List, Optional, Union - -from langchain.schema import BaseRetriever -from langchain_community.vectorstores import VectorStore from langchain_core.documents import Document from langchain_pinecone._utilities import DistanceStrategy from langchain_pinecone.vectorstores import PineconeVectorStore @@ -9,6 +6,8 @@ from langchain_pinecone.vectorstores import PineconeVectorStore from langflow.field_typing import Embeddings from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record +from langchain_core.retrievers import BaseRetriever +from langchain_core.vectorstores import VectorStore class PineconeComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/vectorstores/Qdrant.py b/src/backend/base/langflow/components/vectorstores/Qdrant.py index e6b3ddbc9..200d22770 100644 --- a/src/backend/base/langflow/components/vectorstores/Qdrant.py +++ b/src/backend/base/langflow/components/vectorstores/Qdrant.py @@ -1,12 +1,11 @@ from typing import Optional, Union - -from langchain.schema import BaseRetriever -from langchain_community.vectorstores import VectorStore from langchain_community.vectorstores.qdrant import Qdrant from langflow.field_typing import Embeddings from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record +from langchain_core.retrievers import BaseRetriever +from langchain_core.vectorstores import VectorStore class QdrantComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/vectorstores/Redis.py b/src/backend/base/langflow/components/vectorstores/Redis.py index ea1046037..c72c11f4d 100644 --- a/src/backend/base/langflow/components/vectorstores/Redis.py +++ b/src/backend/base/langflow/components/vectorstores/Redis.py @@ -1,12 +1,11 @@ from typing import Optional, Union - -from langchain.embeddings.base import Embeddings -from langchain_community.vectorstores import VectorStore from langchain_community.vectorstores.redis import Redis from langchain_core.retrievers import BaseRetriever from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record +from langchain_core.embeddings import Embeddings +from langchain_core.vectorstores import VectorStore class RedisComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/vectorstores/SupabaseVectorStore.py b/src/backend/base/langflow/components/vectorstores/SupabaseVectorStore.py index df80b3699..71bf78ec8 100644 --- a/src/backend/base/langflow/components/vectorstores/SupabaseVectorStore.py +++ b/src/backend/base/langflow/components/vectorstores/SupabaseVectorStore.py @@ -1,13 +1,12 @@ from typing import List, Optional, Union - -from langchain.schema import BaseRetriever -from langchain_community.vectorstores import VectorStore from langchain_community.vectorstores.supabase import SupabaseVectorStore from supabase.client import Client, create_client from langflow.field_typing import Embeddings from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record +from langchain_core.retrievers import BaseRetriever +from langchain_core.vectorstores import VectorStore class SupabaseComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/vectorstores/Weaviate.py b/src/backend/base/langflow/components/vectorstores/Weaviate.py index 99ede77f7..108c5a5da 100644 --- a/src/backend/base/langflow/components/vectorstores/Weaviate.py +++ b/src/backend/base/langflow/components/vectorstores/Weaviate.py @@ -1,13 +1,14 @@ from typing import Optional, Union import weaviate # type: ignore -from langchain.embeddings.base import Embeddings -from langchain.schema import BaseRetriever -from langchain_community.vectorstores import VectorStore, Weaviate +from langchain_community.vectorstores import Weaviate from langchain_core.documents import Document from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record +from langchain_core.embeddings import Embeddings +from langchain_core.retrievers import BaseRetriever +from langchain_core.vectorstores import VectorStore class WeaviateVectorStoreComponent(CustomComponent): diff --git a/src/backend/base/langflow/components/vectorstores/__init__.py b/src/backend/base/langflow/components/vectorstores/__init__.py index 48e1bf9c7..d38b0a735 100644 --- a/src/backend/base/langflow/components/vectorstores/__init__.py +++ b/src/backend/base/langflow/components/vectorstores/__init__.py @@ -9,10 +9,12 @@ from .SupabaseVectorStore import SupabaseComponent from .Vectara import VectaraComponent from .Weaviate import WeaviateVectorStoreComponent from .pgvector import PGVectorComponent +from .Couchbase import CouchbaseComponent __all__ = [ "AstraDBVectorStoreComponent", "ChromaComponent", + "CouchbaseComponent", "FAISSComponent", "MongoDBAtlasComponent", "PineconeComponent", diff --git a/src/backend/base/langflow/components/vectorstores/pgvector.py b/src/backend/base/langflow/components/vectorstores/pgvector.py index b061b22ac..1c46d1e51 100644 --- a/src/backend/base/langflow/components/vectorstores/pgvector.py +++ b/src/backend/base/langflow/components/vectorstores/pgvector.py @@ -1,12 +1,11 @@ from typing import Optional, Union - -from langchain.embeddings.base import Embeddings -from langchain_community.vectorstores import VectorStore from langchain_community.vectorstores.pgvector import PGVector from langchain_core.retrievers import BaseRetriever from langflow.interface.custom.custom_component import CustomComponent from langflow.schema.schema import Record +from langchain_core.embeddings import Embeddings +from langchain_core.vectorstores import VectorStore class PGVectorComponent(CustomComponent): diff --git a/src/backend/base/langflow/field_typing/constants.py b/src/backend/base/langflow/field_typing/constants.py index 2e8fd4b3b..d73257c14 100644 --- a/src/backend/base/langflow/field_typing/constants.py +++ b/src/backend/base/langflow/field_typing/constants.py @@ -2,17 +2,18 @@ from typing import Callable, Dict, Text, Union from langchain.agents.agent import AgentExecutor from langchain.chains.base import Chain -from langchain.document_loaders.base import BaseLoader -from langchain.llms.base import BaseLLM from langchain.memory.chat_memory import BaseChatMemory -from langchain.prompts import BasePromptTemplate, ChatPromptTemplate, PromptTemplate -from langchain.schema import BaseOutputParser, BaseRetriever, Document -from langchain.schema.embeddings import Embeddings -from langchain.schema.language_model import BaseLanguageModel -from langchain.schema.memory import BaseMemory -from langchain.text_splitter import TextSplitter -from langchain.tools import Tool -from langchain_community.vectorstores import VectorStore +from langchain_core.document_loaders import BaseLoader +from langchain_core.documents import Document +from langchain_core.embeddings import Embeddings +from langchain_core.language_models import BaseLLM, BaseLanguageModel +from langchain_core.memory import BaseMemory +from langchain_core.output_parsers import BaseOutputParser +from langchain_core.prompts import BasePromptTemplate, ChatPromptTemplate, PromptTemplate +from langchain_core.retrievers import BaseRetriever +from langchain_core.tools import Tool +from langchain_core.vectorstores import VectorStore +from langchain_text_splitters import TextSplitter # Type alias for more complex dicts NestedDict = Dict[str, Union[str, Dict]] diff --git a/src/backend/base/langflow/graph/edge/base.py b/src/backend/base/langflow/graph/edge/base.py index ba7fe05e8..1fc2ef344 100644 --- a/src/backend/base/langflow/graph/edge/base.py +++ b/src/backend/base/langflow/graph/edge/base.py @@ -3,9 +3,7 @@ from typing import TYPE_CHECKING, Any, List, Optional from loguru import logger from pydantic import BaseModel, Field -from langflow.graph.edge.utils import build_clean_params from langflow.schema.schema import INPUT_FIELD_NAME -from langflow.services.deps import get_monitor_service from langflow.services.monitor.utils import log_message if TYPE_CHECKING: @@ -143,7 +141,6 @@ class ContractEdge(Edge): if not self.is_fulfilled: await self.honor(source, target) - log_transaction(self, source, target, "success") # If the target vertex is a power component we log messages if target.vertex_type == "ChatOutput" and ( isinstance(target.params.get(INPUT_FIELD_NAME), str) @@ -157,26 +154,9 @@ class ContractEdge(Edge): message=target.params.get(INPUT_FIELD_NAME, {}), session_id=target.params.get("session_id", ""), artifacts=target.artifacts, + flow_id=target.graph.flow_id, ) return self.result def __repr__(self) -> str: return f"{self.source_id} -[{self.target_param}]-> {self.target_id}" - - -def log_transaction(edge: ContractEdge, source: "Vertex", target: "Vertex", status, error=None): - try: - monitor_service = get_monitor_service() - clean_params = build_clean_params(target) - data = { - "source": source.vertex_type, - "target": target.vertex_type, - "target_args": clean_params, - "timestamp": monitor_service.get_timestamp(), - "status": status, - "error": error, - } - monitor_service.add_row(table_name="transactions", data=data) - except Exception as e: - logger.error(f"Error logging transaction: {e}") - logger.error(f"Error logging transaction: {e}") diff --git a/src/backend/base/langflow/graph/edge/utils.py b/src/backend/base/langflow/graph/edge/utils.py index 0f69e4b2d..e69de29bb 100644 --- a/src/backend/base/langflow/graph/edge/utils.py +++ b/src/backend/base/langflow/graph/edge/utils.py @@ -1,19 +0,0 @@ -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from langflow.graph.vertex.base import Vertex - - -def build_clean_params(target: "Vertex") -> dict: - """ - Cleans the parameters of the target vertex. - """ - # Removes all keys that the values aren't python types like str, int, bool, etc. - params = { - key: value for key, value in target.params.items() if isinstance(value, (str, int, bool, float, list, dict)) - } - # if it is a list we need to check if the contents are python types - for key, value in params.items(): - if isinstance(value, list): - params[key] = [item for item in value if isinstance(item, (str, int, bool, float, list, dict))] - return params diff --git a/src/backend/base/langflow/graph/graph/base.py b/src/backend/base/langflow/graph/graph/base.py index 01bbab251..bd17d43f8 100644 --- a/src/backend/base/langflow/graph/graph/base.py +++ b/src/backend/base/langflow/graph/graph/base.py @@ -14,7 +14,7 @@ from langflow.graph.graph.state_manager import GraphStateManager from langflow.graph.graph.utils import process_flow from langflow.graph.schema import InterfaceComponentTypes, RunOutputs from langflow.graph.vertex.base import Vertex -from langflow.graph.vertex.types import ChatVertex, FileToolVertex, LLMVertex, StateVertex, ToolkitVertex +from langflow.graph.vertex.types import FileToolVertex, InterfaceVertex, LLMVertex, StateVertex, ToolkitVertex from langflow.interface.tools.constants import FILE_TOOLS from langflow.schema import Record from langflow.schema.schema import INPUT_FIELD_NAME, InputType @@ -242,6 +242,7 @@ class Graph: outputs: list[str], stream: bool, session_id: str, + fallback_to_env_vars: bool, ) -> List[Optional["ResultData"]]: """ Runs the graph with the given inputs. @@ -289,7 +290,7 @@ class Graph: start_component_id = next( (vertex_id for vertex_id in self._is_input_vertices if "chat" in vertex_id.lower()), None ) - await self.process(start_component_id=start_component_id) + await self.process(start_component_id=start_component_id, fallback_to_env_vars=fallback_to_env_vars) self.increment_run_count() except Exception as exc: logger.exception(exc) @@ -315,6 +316,7 @@ class Graph: outputs: Optional[list[str]] = None, session_id: Optional[str] = None, stream: bool = False, + fallback_to_env_vars: bool = False, ) -> List[RunOutputs]: """ Run the graph with the given inputs and return the outputs. @@ -340,6 +342,7 @@ class Graph: outputs=outputs, session_id=session_id, stream=stream, + fallback_to_env_vars=fallback_to_env_vars, ) try: @@ -362,6 +365,7 @@ class Graph: outputs: Optional[list[str]] = None, session_id: Optional[str] = None, stream: bool = False, + fallback_to_env_vars: bool = False, ) -> List[RunOutputs]: """ Runs the graph with the given inputs. @@ -403,6 +407,7 @@ class Graph: outputs=outputs or [], stream=stream, session_id=session_id or "", + fallback_to_env_vars=fallback_to_env_vars, ) run_output_object = RunOutputs(inputs=run_inputs, outputs=run_outputs) logger.debug(f"Run outputs: {run_output_object}") @@ -468,9 +473,9 @@ class Graph: """Marks a branch of the graph.""" if visited is None: visited = set() - visited.add(vertex_id) if vertex_id in visited: return + visited.add(vertex_id) self.mark_vertex(vertex_id, state) @@ -712,6 +717,7 @@ class Graph: vertex_id: str, inputs_dict: Optional[Dict[str, str]] = None, user_id: Optional[str] = None, + fallback_to_env_vars: bool = False, ): """ Builds a vertex in the graph. @@ -733,7 +739,7 @@ class Graph: vertex = self.get_vertex(vertex_id) try: if not vertex.frozen or not vertex._built: - await vertex.build(user_id=user_id, inputs=inputs_dict) + await vertex.build(user_id=user_id, inputs=inputs_dict, fallback_to_env_vars=fallback_to_env_vars) if vertex.result is not None: params = vertex._built_object_repr() @@ -796,7 +802,7 @@ class Graph: vertices.append(vertex) return vertices - async def process(self, start_component_id: Optional[str] = None) -> "Graph": + async def process(self, fallback_to_env_vars: bool, start_component_id: Optional[str] = None) -> "Graph": """Processes the graph with vertices in each layer run in parallel.""" first_layer = self.sort_vertices(start_component_id=start_component_id) @@ -821,6 +827,7 @@ class Graph: vertex_id=vertex_id, user_id=self.user_id, inputs_dict={}, + fallback_to_env_vars=fallback_to_env_vars, ), name=f"{vertex.display_name} Run {vertex_task_run_count.get(vertex_id, 0)}", ) @@ -987,8 +994,8 @@ class Graph: """Returns the node class based on the node type.""" # First we check for the node_base_type node_name = node_id.split("-")[0] - if node_name in ["ChatOutput", "ChatInput"]: - return ChatVertex + if node_name in InterfaceComponentTypes: + return InterfaceVertex elif node_name in ["SharedState", "Notify", "Listen"]: return StateVertex elif node_base_type in lazy_load_vertex_dict.VERTEX_TYPE_MAP: diff --git a/src/backend/base/langflow/graph/graph/constants.py b/src/backend/base/langflow/graph/graph/constants.py index 193159c13..2ed42fbff 100644 --- a/src/backend/base/langflow/graph/graph/constants.py +++ b/src/backend/base/langflow/graph/graph/constants.py @@ -1,3 +1,4 @@ +from langflow.graph.schema import CHAT_COMPONENTS from langflow.graph.vertex import types from langflow.interface.agents.base import agent_creator from langflow.interface.custom.base import custom_component_creator @@ -13,8 +14,6 @@ from langflow.interface.tools.base import tool_creator from langflow.interface.wrappers.base import wrapper_creator from langflow.utils.lazy_load import LazyLoadDictBase -CHAT_COMPONENTS = ["ChatInput", "ChatOutput", "TextInput", "SessionID"] - class VertexTypesDict(LazyLoadDictBase): def __init__(self): @@ -47,7 +46,7 @@ class VertexTypesDict(LazyLoadDictBase): **{t: types.TextSplitterVertex for t in textsplitter_creator.to_list()}, **{t: types.CustomComponentVertex for t in custom_component_creator.to_list()}, **{t: types.RetrieverVertex for t in retriever_creator.to_list()}, - **{t: types.ChatVertex for t in CHAT_COMPONENTS}, + **{t: types.InterfaceVertex for t in CHAT_COMPONENTS}, } def get_custom_component_vertex_type(self): diff --git a/src/backend/base/langflow/graph/schema.py b/src/backend/base/langflow/graph/schema.py index 0bbdfa720..18010de4c 100644 --- a/src/backend/base/langflow/graph/schema.py +++ b/src/backend/base/langflow/graph/schema.py @@ -30,6 +30,7 @@ class InterfaceComponentTypes(str, Enum, metaclass=ContainsEnumMeta): ChatOutput = "ChatOutput" TextInput = "TextInput" TextOutput = "TextOutput" + RecordsOutput = "RecordsOutput" def __contains__(cls, item): try: @@ -40,6 +41,8 @@ class InterfaceComponentTypes(str, Enum, metaclass=ContainsEnumMeta): return True +CHAT_COMPONENTS = [InterfaceComponentTypes.ChatInput, InterfaceComponentTypes.ChatOutput] +RECORDS_COMPONENTS = [InterfaceComponentTypes.RecordsOutput] INPUT_COMPONENTS = [ InterfaceComponentTypes.ChatInput, InterfaceComponentTypes.TextInput, diff --git a/src/backend/base/langflow/graph/vertex/base.py b/src/backend/base/langflow/graph/vertex/base.py index 27110a510..0d3b957fa 100644 --- a/src/backend/base/langflow/graph/vertex/base.py +++ b/src/backend/base/langflow/graph/vertex/base.py @@ -10,7 +10,7 @@ from loguru import logger from langflow.graph.schema import INPUT_COMPONENTS, OUTPUT_COMPONENTS, InterfaceComponentTypes, ResultData from langflow.graph.utils import UnbuiltObject, UnbuiltResult -from langflow.graph.vertex.utils import generate_result +from langflow.graph.vertex.utils import generate_result, log_transaction from langflow.interface.initialize import loading from langflow.interface.listing import lazy_load_dict from langflow.schema.schema import INPUT_FIELD_NAME @@ -317,7 +317,11 @@ class Vertex: params[field_name] = full_path elif field.get("required"): field_display_name = field.get("display_name") - raise ValueError(f"File path not found for {field_display_name} in component {self.display_name}") + logger.warning( + f"File path not found for {field_display_name} in component {self.display_name}. Setting to None." + ) + params[field_name] = None + elif field.get("type") in DIRECT_TYPES and params.get(field_name) is None: val = field.get("value") if field.get("type") == "code": @@ -392,13 +396,17 @@ class Vertex: self.params = self._raw_params.copy() self.updated_raw_params = True - async def _build(self, user_id=None): + async def _build( + self, + fallback_to_env_vars, + user_id=None, + ): """ Initiate the build process. """ logger.debug(f"Building {self.display_name}") await self._build_each_vertex_in_params_dict(user_id) - await self._get_and_instantiate_class(user_id) + await self._get_and_instantiate_class(user_id, fallback_to_env_vars) self._validate_built_object() self._built = True @@ -434,7 +442,11 @@ class Vertex: # to the frontend self.set_artifacts() artifacts = self.artifacts - messages = self.extract_messages_from_artifacts(artifacts) + if isinstance(artifacts, dict): + messages = self.extract_messages_from_artifacts(artifacts) + else: + messages = [] + result_dict = ResultData( results=result_dict, artifacts=artifacts, @@ -502,7 +514,7 @@ class Vertex: if not self._is_vertex(value): self.params[key][sub_key] = value else: - result = await value.get_result() + result = await value.get_result(self) self.params[key][sub_key] = result def _is_vertex(self, value): @@ -517,9 +529,7 @@ class Vertex: """ return all(self._is_vertex(vertex) for vertex in value) - async def get_result( - self, - ) -> Any: + async def get_result(self, requester: "Vertex") -> Any: """ Retrieves the result of the vertex. @@ -529,9 +539,9 @@ class Vertex: The result of the vertex. """ async with self._lock: - return await self._get_result() + return await self._get_result(requester) - async def _get_result(self) -> Any: + async def _get_result(self, requester: "Vertex") -> Any: """ Retrieves the result of the built component. @@ -541,15 +551,19 @@ class Vertex: The built result if use_result is True, else the built object. """ if not self._built: + log_transaction(source=self, target=requester, flow_id=self.graph.flow_id, status="error") raise ValueError(f"Component {self.display_name} has not been built yet") - return self._built_result if self.use_result else self._built_object + + result = self._built_result if self.use_result else self._built_object + log_transaction(source=self, target=requester, flow_id=self.graph.flow_id, status="success") + return result async def _build_vertex_and_update_params(self, key, vertex: "Vertex"): """ Builds a given vertex and updates the params dictionary accordingly. """ - result = await vertex.get_result() + result = await vertex.get_result(self) self._handle_func(key, result) if isinstance(result, list): self._extend_params_list_with_result(key, result) @@ -565,7 +579,7 @@ class Vertex: """ self.params[key] = [] for vertex in vertices: - result = await vertex.get_result() + result = await vertex.get_result(self) # Weird check to see if the params[key] is a list # because sometimes it is a Record and breaks the code if not isinstance(self.params[key], list): @@ -608,7 +622,7 @@ class Vertex: if isinstance(self.params[key], list): self.params[key].extend(result) - async def _get_and_instantiate_class(self, user_id=None): + async def _get_and_instantiate_class(self, user_id=None, fallback_to_env_vars=False): """ Gets the class from a dictionary and instantiates it with the params. """ @@ -617,6 +631,7 @@ class Vertex: try: result = await loading.instantiate_class( user_id=user_id, + fallback_to_env_vars=fallback_to_env_vars, vertex=self, ) self._update_built_object_and_artifacts(result) diff --git a/src/backend/base/langflow/graph/vertex/types.py b/src/backend/base/langflow/graph/vertex/types.py index 5faeeaa8b..941f06036 100644 --- a/src/backend/base/langflow/graph/vertex/types.py +++ b/src/backend/base/langflow/graph/vertex/types.py @@ -6,14 +6,14 @@ import yaml from langchain_core.messages import AIMessage from loguru import logger -from langflow.graph.schema import InterfaceComponentTypes +from langflow.graph.schema import CHAT_COMPONENTS, RECORDS_COMPONENTS, InterfaceComponentTypes from langflow.graph.utils import UnbuiltObject, flatten_list, serialize_field from langflow.graph.vertex.base import Vertex from langflow.interface.utils import extract_input_variables_from_prompt from langflow.schema import Record from langflow.schema.schema import INPUT_FIELD_NAME from langflow.services.monitor.utils import log_vertex_build -from langflow.utils.schemas import ChatOutputResponse +from langflow.utils.schemas import ChatOutputResponse, RecordOutputResponse from langflow.utils.util import unescape_string @@ -309,7 +309,7 @@ class CustomComponentVertex(Vertex): return self.artifacts["repr"] or super()._built_object_repr() -class ChatVertex(Vertex): +class InterfaceVertex(Vertex): def __init__(self, data: Dict, graph): super().__init__(data, graph=graph, base_type="custom_components", is_task=True) self.steps = [self._build, self._run] @@ -325,56 +325,131 @@ class ChatVertex(Vertex): return f"Task {self.task_id} is not running" if self.artifacts: # dump as a yaml string - artifacts = {k.title().replace("_", " "): v for k, v in self.artifacts.items() if v is not None} + if isinstance(self.artifacts, dict): + _artifacts = [self.artifacts] + elif hasattr(self.artifacts, "records"): + _artifacts = self.artifacts.records + else: + _artifacts = self.artifacts + artifacts = [] + for artifact in _artifacts: + # artifacts = {k.title().replace("_", " "): v for k, v in self.artifacts.items() if v is not None} + artifact = {k.title().replace("_", " "): v for k, v in artifact.items() if v is not None} + artifacts.append(artifact) yaml_str = yaml.dump(artifacts, default_flow_style=False, allow_unicode=True) return yaml_str return super()._built_object_repr() + def _process_chat_component(self): + """ + Process the chat component and return the message. + + This method processes the chat component by extracting the necessary parameters + such as sender, sender_name, and message from the `params` dictionary. It then + performs additional operations based on the type of the `_built_object` attribute. + If `_built_object` is an instance of `AIMessage`, it creates a `ChatOutputResponse` + object using the `from_message` method. If `_built_object` is not an instance of + `UnbuiltObject`, it checks the type of `_built_object` and performs specific + operations accordingly. If `_built_object` is a dictionary, it converts it into a + code block. If `_built_object` is an instance of `Record`, it assigns the `text` + attribute to the `message` variable. If `message` is an instance of `AsyncIterator` + or `Iterator`, it builds a stream URL and sets `message` to an empty string. If + `_built_object` is not a string, it converts it to a string. If `message` is a + generator or iterator, it assigns it to the `message` variable. Finally, it creates + a `ChatOutputResponse` object using the extracted parameters and assigns it to the + `artifacts` attribute. If `artifacts` is not None, it calls the `model_dump` method + on it and assigns the result to the `artifacts` attribute. It then returns the + `message` variable. + + Returns: + str: The processed message. + """ + artifacts = None + sender = self.params.get("sender", None) + sender_name = self.params.get("sender_name", None) + message = self.params.get(INPUT_FIELD_NAME, None) + if isinstance(message, str): + message = unescape_string(message) + stream_url = None + if isinstance(self._built_object, AIMessage): + artifacts = ChatOutputResponse.from_message( + self._built_object, + sender=sender, + sender_name=sender_name, + ) + elif not isinstance(self._built_object, UnbuiltObject): + if isinstance(self._built_object, dict): + # Turn the dict into a pleasing to + # read JSON inside a code block + message = dict_to_codeblock(self._built_object) + elif isinstance(self._built_object, Record): + message = self._built_object.text + elif isinstance(message, (AsyncIterator, Iterator)): + stream_url = self.build_stream_url() + message = "" + elif not isinstance(self._built_object, str): + message = str(self._built_object) + # if the message is a generator or iterator + # it means that it is a stream of messages + else: + message = self._built_object + + artifacts = ChatOutputResponse( + message=message, + sender=sender, + sender_name=sender_name, + stream_url=stream_url, + ) + + self.will_stream = stream_url is not None + if artifacts: + self.artifacts = artifacts.model_dump(exclude_none=True) + + return message + + def _process_record_component(self): + """ + Process the record component of the vertex. + + If the built object is an instance of `Record`, it calls the `model_dump` method + and assigns the result to the `artifacts` attribute. + + If the built object is a list, it iterates over each element and checks if it is + an instance of `Record`. If it is, it calls the `model_dump` method and appends + the result to the `artifacts` list. If it is not, it raises a `ValueError` if the + `ignore_errors` parameter is set to `False`, or logs an error message if it is set + to `True`. + + Returns: + The built object. + + Raises: + ValueError: If an element in the list is not an instance of `Record` and + `ignore_errors` is set to `False`. + """ + if isinstance(self._built_object, Record): + artifacts = [self._built_object.data] + elif isinstance(self._built_object, list): + artifacts = [] + ignore_errors = self.params.get("ignore_errors", False) + for record in self._built_object: + if isinstance(record, Record): + artifacts.append(record.data) + elif ignore_errors: + logger.error(f"Record expected, but got {record} of type {type(record)}") + else: + raise ValueError(f"Record expected, but got {record} of type {type(record)}") + self.artifacts = RecordOutputResponse(records=artifacts) + return self._built_object + async def _run(self, *args, **kwargs): if self.is_interface_component: - if self.vertex_type in ["ChatOutput", "ChatInput"]: - artifacts = None - sender = self.params.get("sender", None) - sender_name = self.params.get("sender_name", None) - message = self.params.get(INPUT_FIELD_NAME, None) - if isinstance(message, str): - message = unescape_string(message) - stream_url = None - if isinstance(self._built_object, AIMessage): - artifacts = ChatOutputResponse.from_message( - self._built_object, - sender=sender, - sender_name=sender_name, - ) - elif not isinstance(self._built_object, UnbuiltObject): - if isinstance(self._built_object, dict): - # Turn the dict into a pleasing to - # read JSON inside a code block - message = dict_to_codeblock(self._built_object) - elif isinstance(self._built_object, Record): - message = self._built_object.text - elif isinstance(message, (AsyncIterator, Iterator)): - stream_url = self.build_stream_url() - message = "" - elif not isinstance(self._built_object, str): - message = str(self._built_object) - # if the message is a generator or iterator - # it means that it is a stream of messages - else: - message = self._built_object - - artifacts = ChatOutputResponse( - message=message, - sender=sender, - sender_name=sender_name, - stream_url=stream_url, - ) - - self.will_stream = stream_url is not None - if artifacts: - self.artifacts = artifacts.model_dump(exclude_none=True) + if self.vertex_type in CHAT_COMPONENTS: + message = self._process_chat_component() + elif self.vertex_type in RECORDS_COMPONENTS: + message = self._process_record_component() if isinstance(self._built_object, (AsyncIterator, Iterator)): - if self.params["return_record"]: + if self.params.get("return_record", False): self._built_object = Record(text=message, data=self.artifacts) else: self._built_object = message diff --git a/src/backend/base/langflow/graph/vertex/utils.py b/src/backend/base/langflow/graph/vertex/utils.py index ea2693e29..b978424f2 100644 --- a/src/backend/base/langflow/graph/vertex/utils.py +++ b/src/backend/base/langflow/graph/vertex/utils.py @@ -1,11 +1,15 @@ -from typing import Any, Optional, Union +from typing import Any, Optional, Union, TYPE_CHECKING from langchain_core.messages import BaseMessage from langchain_core.runnables import Runnable from loguru import logger +from langflow.services.deps import get_monitor_service from langflow.utils.constants import PYTHON_BASIC_TYPES +if TYPE_CHECKING: + from langflow.graph.vertex.base import Vertex + def is_basic_type(obj): return type(obj) in PYTHON_BASIC_TYPES @@ -63,3 +67,49 @@ async def generate_result(built_object: Any, inputs: dict, has_external_output: else: result = built_object return result + + +def build_clean_params(target: "Vertex") -> dict: + """ + Cleans the parameters of the target vertex. + """ + # Removes all keys that the values aren't python types like str, int, bool, etc. + params = { + key: value for key, value in target.params.items() if isinstance(value, (str, int, bool, float, list, dict)) + } + # if it is a list we need to check if the contents are python types + for key, value in params.items(): + if isinstance(value, list): + params[key] = [item for item in value if isinstance(item, (str, int, bool, float, list, dict))] + return params + + +def log_transaction(source: "Vertex", target: "Vertex", flow_id, status, error=None): + """ + Logs a transaction between two vertices. + + Args: + source (Vertex): The source vertex of the transaction. + target (Vertex): The target vertex of the transaction. + status: The status of the transaction. + error (Optional): Any error associated with the transaction. + + Raises: + Exception: If there is an error while logging the transaction. + + """ + try: + monitor_service = get_monitor_service() + clean_params = build_clean_params(target) + data = { + "source": source.vertex_type, + "target": target.vertex_type, + "target_args": clean_params, + "timestamp": monitor_service.get_timestamp(), + "status": status, + "error": error, + "flow_id": flow_id, + } + monitor_service.add_row(table_name="transactions", data=data) + except Exception as e: + logger.error(f"Error logging transaction: {e}") diff --git a/src/backend/base/langflow/initial_setup/setup.py b/src/backend/base/langflow/initial_setup/setup.py index ca2bc230a..3c976cb94 100644 --- a/src/backend/base/langflow/initial_setup/setup.py +++ b/src/backend/base/langflow/initial_setup/setup.py @@ -11,10 +11,11 @@ from sqlmodel import select from langflow.base.constants import FIELD_FORMAT_ATTRIBUTES, NODE_FORMAT_ATTRIBUTES from langflow.interface.types import get_all_components from langflow.services.database.models.flow.model import Flow, FlowCreate +from langflow.services.database.models.folder.model import Folder, FolderCreate from langflow.services.deps import get_settings_service, session_scope STARTER_FOLDER_NAME = "Starter Projects" - +STARTER_FOLDER_DESCRIPTION = "Starter projects to help you get started in Langflow." # In the folder ./starter_projects we have a few JSON files that represent # starter projects. We want to load these into the database so that users @@ -158,6 +159,7 @@ def create_new_project( project_data, project_icon, project_icon_bg_color, + new_folder_id ): logger.debug(f"Creating starter project {project_name}") new_project = FlowCreate( @@ -168,33 +170,41 @@ def create_new_project( data=project_data, is_component=project_is_component, updated_at=updated_at_datetime, - folder=STARTER_FOLDER_NAME, + folder_id=new_folder_id, ) db_flow = Flow.model_validate(new_project, from_attributes=True) session.add(db_flow) -def get_all_flows_similar_to_project(session, project_name): - flows = session.exec( - select(Flow).where( - Flow.name == project_name, - Flow.folder == STARTER_FOLDER_NAME, - ) - ).all() +def get_all_flows_similar_to_project(session, folder_id): + flows = session.exec(select(Folder).where(Folder.id == folder_id)).first().flows return flows -def delete_start_projects(session): - flows = session.exec( - select(Flow).where( - Flow.folder == STARTER_FOLDER_NAME, - ) - ).all() +def delete_start_projects(session, folder_id): + flows = session.exec(select(Folder).where(Folder.id == folder_id)).first().flows for flow in flows: session.delete(flow) session.commit() +def folder_exists(session, folder_name): + folder = session.exec(select(Folder).where(Folder.name == folder_name)).first() + return folder is not None + + +def create_starter_folder(session): + if not folder_exists(session, STARTER_FOLDER_NAME): + new_folder = FolderCreate(name=STARTER_FOLDER_NAME, description=STARTER_FOLDER_DESCRIPTION) + db_folder = Folder.model_validate(new_folder, from_attributes=True) + session.add(db_folder) + session.commit() + session.refresh(db_folder) + return db_folder + else: + return session.exec(select(Folder).where(Folder.name == STARTER_FOLDER_NAME)).first() + + def create_or_update_starter_projects(): components_paths = get_settings_service().settings.COMPONENTS_PATH try: @@ -203,8 +213,9 @@ def create_or_update_starter_projects(): logger.exception(f"Error loading components: {e}") raise e with session_scope() as session: + new_folder = create_starter_folder(session) starter_projects = load_starter_projects() - delete_start_projects(session) + delete_start_projects(session, new_folder.id) for project_path, project in starter_projects: ( project_name, @@ -224,7 +235,7 @@ def create_or_update_starter_projects(): update_project_file(project_path, project, updated_project_data) if project_name and project_data: - for existing_project in get_all_flows_similar_to_project(session, project_name): + for existing_project in get_all_flows_similar_to_project(session, new_folder.id): session.delete(existing_project) create_new_project( @@ -236,4 +247,5 @@ def create_or_update_starter_projects(): project_data, project_icon, project_icon_bg_color, + new_folder.id ) diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting (Hello, world!).json b/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting (Hello, world!).json index b8693e13f..e001f8e41 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting (Hello, world!).json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting (Hello, world!).json @@ -262,7 +262,7 @@ "load_from_db": true, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "OPENAI_API_KEY" }, "stream": { "type": "bool", @@ -716,9 +716,9 @@ "edges": [ { "source": "OpenAIModel-k39HS", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-k39HSœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-k39HS\u0153}", "target": "ChatOutput-njtka", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-njtkaœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-njtka\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -736,13 +736,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIModel-k39HS{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-k39HSœ}-ChatOutput-njtka{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-njtkaœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-OpenAIModel-k39HS{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-k39HS\u0153}-ChatOutput-njtka{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-njtka\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "Prompt-uxBqP", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-uxBqPœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-uxBqP\u0153}", "target": "OpenAIModel-k39HS", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-k39HSœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-k39HS\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -760,13 +760,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-Prompt-uxBqP{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-uxBqPœ}-OpenAIModel-k39HS{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-k39HSœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-Prompt-uxBqP{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-uxBqP\u0153}-OpenAIModel-k39HS{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-k39HS\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "ChatInput-P3fgL", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œRecordœ,œstrœ,œTextœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-P3fgLœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Record\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-P3fgL\u0153}", "target": "Prompt-uxBqP", - "targetHandle": "{œfieldNameœ:œuser_inputœ,œidœ:œPrompt-uxBqPœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153user_input\u0153,\u0153id\u0153:\u0153Prompt-uxBqP\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "user_input", @@ -784,7 +784,7 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-ChatInput-P3fgL{œbaseClassesœ:[œobjectœ,œRecordœ,œstrœ,œTextœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-P3fgLœ}-Prompt-uxBqP{œfieldNameœ:œuser_inputœ,œidœ:œPrompt-uxBqPœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-ChatInput-P3fgL{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Record\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-P3fgL\u0153}-Prompt-uxBqP{\u0153fieldName\u0153:\u0153user_input\u0153,\u0153id\u0153:\u0153Prompt-uxBqP\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" } ], "viewport": { diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Langflow Blog Writter.json b/src/backend/base/langflow/initial_setup/starter_projects/Langflow Blog Writter.json index d2e4986ab..e70285000 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Langflow Blog Writter.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Langflow Blog Writter.json @@ -566,7 +566,7 @@ "load_from_db": false, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "OPENAI_API_KEY" }, "stream": { "type": "bool", @@ -854,9 +854,9 @@ { "source": "URL-HYPkR", "target": "Prompt-Rse03", - "sourceHandle": "{œbaseClassesœ:[œRecordœ],œdataTypeœ:œURLœ,œidœ:œURL-HYPkRœ}", - "targetHandle": "{œfieldNameœ:œreference_2œ,œidœ:œPrompt-Rse03œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", - "id": "reactflow__edge-URL-HYPkR{œbaseClassesœ:[œRecordœ],œdataTypeœ:œURLœ,œidœ:œURL-HYPkRœ}-Prompt-Rse03{œfieldNameœ:œreference_2œ,œidœ:œPrompt-Rse03œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153URL\u0153,\u0153id\u0153:\u0153URL-HYPkR\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153reference_2\u0153,\u0153id\u0153:\u0153Prompt-Rse03\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "id": "reactflow__edge-URL-HYPkR{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153URL\u0153,\u0153id\u0153:\u0153URL-HYPkR\u0153}-Prompt-Rse03{\u0153fieldName\u0153:\u0153reference_2\u0153,\u0153id\u0153:\u0153Prompt-Rse03\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "reference_2", @@ -878,9 +878,9 @@ }, { "source": "OpenAIModel-gi29P", - "sourceHandle": "{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-gi29Pœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-gi29P\u0153}", "target": "ChatOutput-JPlxl", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-JPlxlœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-JPlxl\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -898,13 +898,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIModel-gi29P{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-gi29Pœ}-ChatOutput-JPlxl{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-JPlxlœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-OpenAIModel-gi29P{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-gi29P\u0153}-ChatOutput-JPlxl{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-JPlxl\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "URL-2cX90", - "sourceHandle": "{œbaseClassesœ:[œRecordœ],œdataTypeœ:œURLœ,œidœ:œURL-2cX90œ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153URL\u0153,\u0153id\u0153:\u0153URL-2cX90\u0153}", "target": "Prompt-Rse03", - "targetHandle": "{œfieldNameœ:œreference_1œ,œidœ:œPrompt-Rse03œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153reference_1\u0153,\u0153id\u0153:\u0153Prompt-Rse03\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "reference_1", @@ -922,13 +922,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-URL-2cX90{œbaseClassesœ:[œRecordœ],œdataTypeœ:œURLœ,œidœ:œURL-2cX90œ}-Prompt-Rse03{œfieldNameœ:œreference_1œ,œidœ:œPrompt-Rse03œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-URL-2cX90{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153URL\u0153,\u0153id\u0153:\u0153URL-2cX90\u0153}-Prompt-Rse03{\u0153fieldName\u0153:\u0153reference_1\u0153,\u0153id\u0153:\u0153Prompt-Rse03\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "TextInput-og8Or", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œTextInputœ,œidœ:œTextInput-og8Orœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153TextInput\u0153,\u0153id\u0153:\u0153TextInput-og8Or\u0153}", "target": "Prompt-Rse03", - "targetHandle": "{œfieldNameœ:œinstructionsœ,œidœ:œPrompt-Rse03œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153instructions\u0153,\u0153id\u0153:\u0153Prompt-Rse03\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "instructions", @@ -946,13 +946,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-TextInput-og8Or{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œTextInputœ,œidœ:œTextInput-og8Orœ}-Prompt-Rse03{œfieldNameœ:œinstructionsœ,œidœ:œPrompt-Rse03œ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-TextInput-og8Or{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153TextInput\u0153,\u0153id\u0153:\u0153TextInput-og8Or\u0153}-Prompt-Rse03{\u0153fieldName\u0153:\u0153instructions\u0153,\u0153id\u0153:\u0153Prompt-Rse03\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "Prompt-Rse03", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-Rse03œ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-Rse03\u0153}", "target": "OpenAIModel-gi29P", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-gi29Pœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-gi29P\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -970,7 +970,7 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-Prompt-Rse03{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-Rse03œ}-OpenAIModel-gi29P{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-gi29Pœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "id": "reactflow__edge-Prompt-Rse03{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-Rse03\u0153}-OpenAIModel-gi29P{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-gi29P\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "selected": false } ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Langflow Document QA.json b/src/backend/base/langflow/initial_setup/starter_projects/Langflow Document QA.json index cde05c847..5d3ab5a1b 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Langflow Document QA.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Langflow Document QA.json @@ -711,7 +711,7 @@ "load_from_db": false, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "OPENAI_API_KEY" }, "stream": { "type": "bool", @@ -825,9 +825,9 @@ "edges": [ { "source": "ChatInput-MsSJ9", - "sourceHandle": "{œbaseClassesœ:[œstrœ,œRecordœ,œTextœ,œobjectœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-MsSJ9œ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Record\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-MsSJ9\u0153}", "target": "Prompt-tHwPf", - "targetHandle": "{œfieldNameœ:œQuestionœ,œidœ:œPrompt-tHwPfœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153Question\u0153,\u0153id\u0153:\u0153Prompt-tHwPf\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "Question", @@ -845,13 +845,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-ChatInput-MsSJ9{œbaseClassesœ:[œstrœ,œRecordœ,œTextœ,œobjectœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-MsSJ9œ}-Prompt-tHwPf{œfieldNameœ:œQuestionœ,œidœ:œPrompt-tHwPfœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-ChatInput-MsSJ9{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Record\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-MsSJ9\u0153}-Prompt-tHwPf{\u0153fieldName\u0153:\u0153Question\u0153,\u0153id\u0153:\u0153Prompt-tHwPf\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "File-6TEsD", - "sourceHandle": "{œbaseClassesœ:[œRecordœ],œdataTypeœ:œFileœ,œidœ:œFile-6TEsDœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153File\u0153,\u0153id\u0153:\u0153File-6TEsD\u0153}", "target": "Prompt-tHwPf", - "targetHandle": "{œfieldNameœ:œDocumentœ,œidœ:œPrompt-tHwPfœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153Document\u0153,\u0153id\u0153:\u0153Prompt-tHwPf\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "Document", @@ -869,13 +869,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-File-6TEsD{œbaseClassesœ:[œRecordœ],œdataTypeœ:œFileœ,œidœ:œFile-6TEsDœ}-Prompt-tHwPf{œfieldNameœ:œDocumentœ,œidœ:œPrompt-tHwPfœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-File-6TEsD{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153File\u0153,\u0153id\u0153:\u0153File-6TEsD\u0153}-Prompt-tHwPf{\u0153fieldName\u0153:\u0153Document\u0153,\u0153id\u0153:\u0153Prompt-tHwPf\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "Prompt-tHwPf", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-tHwPfœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-tHwPf\u0153}", "target": "OpenAIModel-Bt067", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-Bt067œ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-Bt067\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -893,13 +893,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-Prompt-tHwPf{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-tHwPfœ}-OpenAIModel-Bt067{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-Bt067œ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-Prompt-tHwPf{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-tHwPf\u0153}-OpenAIModel-Bt067{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-Bt067\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "OpenAIModel-Bt067", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-Bt067œ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-Bt067\u0153}", "target": "ChatOutput-F5Awj", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-F5Awjœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-F5Awj\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -917,7 +917,7 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIModel-Bt067{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-Bt067œ}-ChatOutput-F5Awj{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-F5Awjœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-OpenAIModel-Bt067{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-Bt067\u0153}-ChatOutput-F5Awj{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-F5Awj\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" } ], "viewport": { diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Langflow Memory Conversation.json b/src/backend/base/langflow/initial_setup/starter_projects/Langflow Memory Conversation.json index a20f7bc19..ef45db37d 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Langflow Memory Conversation.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Langflow Memory Conversation.json @@ -1,6 +1,6 @@ { "id": "08d5cccf-d098-4367-b14b-1078429c9ed9", - "icon": "🤖", + "icon": "\ud83e\udd16", "icon_bg_color": "#FFD700", "data": { "nodes": [ @@ -792,7 +792,7 @@ "load_from_db": false, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "OPENAI_API_KEY" }, "stream": { "type": "bool", @@ -1003,9 +1003,9 @@ "edges": [ { "source": "MemoryComponent-cdA1J", - "sourceHandle": "{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œMemoryComponentœ,œidœ:œMemoryComponent-cdA1Jœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153MemoryComponent\u0153,\u0153id\u0153:\u0153MemoryComponent-cdA1J\u0153}", "target": "Prompt-ODkUx", - "targetHandle": "{œfieldNameœ:œcontextœ,œidœ:œPrompt-ODkUxœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153context\u0153,\u0153id\u0153:\u0153Prompt-ODkUx\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "context", @@ -1023,14 +1023,14 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-MemoryComponent-cdA1J{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œMemoryComponentœ,œidœ:œMemoryComponent-cdA1Jœ}-Prompt-ODkUx{œfieldNameœ:œcontextœ,œidœ:œPrompt-ODkUxœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "id": "reactflow__edge-MemoryComponent-cdA1J{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153MemoryComponent\u0153,\u0153id\u0153:\u0153MemoryComponent-cdA1J\u0153}-Prompt-ODkUx{\u0153fieldName\u0153:\u0153context\u0153,\u0153id\u0153:\u0153Prompt-ODkUx\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "selected": false }, { "source": "ChatInput-t7F8v", - "sourceHandle": "{œbaseClassesœ:[œTextœ,œobjectœ,œRecordœ,œstrœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-t7F8vœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153object\u0153,\u0153Record\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-t7F8v\u0153}", "target": "Prompt-ODkUx", - "targetHandle": "{œfieldNameœ:œuser_messageœ,œidœ:œPrompt-ODkUxœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153user_message\u0153,\u0153id\u0153:\u0153Prompt-ODkUx\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "user_message", @@ -1048,14 +1048,14 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-ChatInput-t7F8v{œbaseClassesœ:[œTextœ,œobjectœ,œRecordœ,œstrœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-t7F8vœ}-Prompt-ODkUx{œfieldNameœ:œuser_messageœ,œidœ:œPrompt-ODkUxœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "id": "reactflow__edge-ChatInput-t7F8v{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153object\u0153,\u0153Record\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-t7F8v\u0153}-Prompt-ODkUx{\u0153fieldName\u0153:\u0153user_message\u0153,\u0153id\u0153:\u0153Prompt-ODkUx\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "selected": false }, { "source": "Prompt-ODkUx", - "sourceHandle": "{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-ODkUxœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-ODkUx\u0153}", "target": "OpenAIModel-9RykF", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-9RykFœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-9RykF\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -1073,13 +1073,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-Prompt-ODkUx{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-ODkUxœ}-OpenAIModel-9RykF{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-9RykFœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-Prompt-ODkUx{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-ODkUx\u0153}-OpenAIModel-9RykF{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-9RykF\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "OpenAIModel-9RykF", - "sourceHandle": "{œbaseClassesœ:[œstrœ,œobjectœ,œTextœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-9RykFœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153object\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-9RykF\u0153}", "target": "ChatOutput-P1jEe", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-P1jEeœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-P1jEe\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -1097,13 +1097,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIModel-9RykF{œbaseClassesœ:[œstrœ,œobjectœ,œTextœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-9RykFœ}-ChatOutput-P1jEe{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-P1jEeœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-OpenAIModel-9RykF{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153object\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-9RykF\u0153}-ChatOutput-P1jEe{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-P1jEe\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "MemoryComponent-cdA1J", - "sourceHandle": "{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œMemoryComponentœ,œidœ:œMemoryComponent-cdA1Jœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153MemoryComponent\u0153,\u0153id\u0153:\u0153MemoryComponent-cdA1J\u0153}", "target": "TextOutput-vrs6T", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-vrs6Tœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-vrs6T\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -1121,7 +1121,7 @@ "stroke": "#555" }, "className": "stroke-foreground stroke-connection", - "id": "reactflow__edge-MemoryComponent-cdA1J{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œMemoryComponentœ,œidœ:œMemoryComponent-cdA1Jœ}-TextOutput-vrs6T{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-vrs6Tœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-MemoryComponent-cdA1J{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153MemoryComponent\u0153,\u0153id\u0153:\u0153MemoryComponent-cdA1J\u0153}-TextOutput-vrs6T{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-vrs6T\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" } ], "viewport": { diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Langflow Prompt Chaining.json b/src/backend/base/langflow/initial_setup/starter_projects/Langflow Prompt Chaining.json index 38dda79d5..8563a442a 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Langflow Prompt Chaining.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Langflow Prompt Chaining.json @@ -911,7 +911,7 @@ "load_from_db": false, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "OPENAI_API_KEY" }, "stream": { "type": "bool", @@ -1382,9 +1382,9 @@ "edges": [ { "source": "TextInput-sptaH", - "sourceHandle": "{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œTextInputœ,œidœ:œTextInput-sptaHœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153TextInput\u0153,\u0153id\u0153:\u0153TextInput-sptaH\u0153}", "target": "Prompt-amqBu", - "targetHandle": "{œfieldNameœ:œdocumentœ,œidœ:œPrompt-amqBuœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153document\u0153,\u0153id\u0153:\u0153Prompt-amqBu\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "document", @@ -1402,13 +1402,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-TextInput-sptaH{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œTextInputœ,œidœ:œTextInput-sptaHœ}-Prompt-amqBu{œfieldNameœ:œdocumentœ,œidœ:œPrompt-amqBuœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-TextInput-sptaH{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153TextInput\u0153,\u0153id\u0153:\u0153TextInput-sptaH\u0153}-Prompt-amqBu{\u0153fieldName\u0153:\u0153document\u0153,\u0153id\u0153:\u0153Prompt-amqBu\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "Prompt-amqBu", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-amqBuœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-amqBu\u0153}", "target": "TextOutput-2MS4a", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-2MS4aœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-2MS4a\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -1426,13 +1426,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-Prompt-amqBu{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-amqBuœ}-TextOutput-2MS4a{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-2MS4aœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-Prompt-amqBu{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-amqBu\u0153}-TextOutput-2MS4a{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-2MS4a\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "Prompt-amqBu", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-amqBuœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-amqBu\u0153}", "target": "OpenAIModel-uYXZJ", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-uYXZJœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-uYXZJ\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -1450,13 +1450,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-Prompt-amqBu{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-amqBuœ}-OpenAIModel-uYXZJ{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-uYXZJœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-Prompt-amqBu{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-amqBu\u0153}-OpenAIModel-uYXZJ{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-uYXZJ\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "OpenAIModel-uYXZJ", - "sourceHandle": "{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-uYXZJœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-uYXZJ\u0153}", "target": "Prompt-gTNiz", - "targetHandle": "{œfieldNameœ:œsummaryœ,œidœ:œPrompt-gTNizœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153summary\u0153,\u0153id\u0153:\u0153Prompt-gTNiz\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "summary", @@ -1474,13 +1474,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIModel-uYXZJ{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-uYXZJœ}-Prompt-gTNiz{œfieldNameœ:œsummaryœ,œidœ:œPrompt-gTNizœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-OpenAIModel-uYXZJ{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-uYXZJ\u0153}-Prompt-gTNiz{\u0153fieldName\u0153:\u0153summary\u0153,\u0153id\u0153:\u0153Prompt-gTNiz\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "OpenAIModel-uYXZJ", - "sourceHandle": "{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-uYXZJœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-uYXZJ\u0153}", "target": "ChatOutput-EJkG3", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-EJkG3œ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-EJkG3\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -1498,13 +1498,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIModel-uYXZJ{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-uYXZJœ}-ChatOutput-EJkG3{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-EJkG3œ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-OpenAIModel-uYXZJ{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-uYXZJ\u0153}-ChatOutput-EJkG3{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-EJkG3\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "Prompt-gTNiz", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-gTNizœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-gTNiz\u0153}", "target": "TextOutput-MUDOR", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-MUDORœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-MUDOR\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -1522,13 +1522,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-Prompt-gTNiz{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-gTNizœ}-TextOutput-MUDOR{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-MUDORœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-Prompt-gTNiz{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-gTNiz\u0153}-TextOutput-MUDOR{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-MUDOR\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "Prompt-gTNiz", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-gTNizœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-gTNiz\u0153}", "target": "OpenAIModel-XawYB", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-XawYBœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-XawYB\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -1546,13 +1546,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-Prompt-gTNiz{œbaseClassesœ:[œobjectœ,œstrœ,œTextœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-gTNizœ}-OpenAIModel-XawYB{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-XawYBœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-Prompt-gTNiz{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153str\u0153,\u0153Text\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-gTNiz\u0153}-OpenAIModel-XawYB{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-XawYB\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "OpenAIModel-XawYB", - "sourceHandle": "{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-XawYBœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-XawYB\u0153}", "target": "ChatOutput-DNmvg", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-DNmvgœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-DNmvg\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -1570,7 +1570,7 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIModel-XawYB{œbaseClassesœ:[œstrœ,œTextœ,œobjectœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-XawYBœ}-ChatOutput-DNmvg{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-DNmvgœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-OpenAIModel-XawYB{\u0153baseClasses\u0153:[\u0153str\u0153,\u0153Text\u0153,\u0153object\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-XawYB\u0153}-ChatOutput-DNmvg{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-DNmvg\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" } ], "viewport": { diff --git a/src/backend/base/langflow/initial_setup/starter_projects/VectorStore-RAG-Flows.json b/src/backend/base/langflow/initial_setup/starter_projects/VectorStore-RAG-Flows.json index e13a206c9..47412df7b 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/VectorStore-RAG-Flows.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/VectorStore-RAG-Flows.json @@ -535,7 +535,7 @@ "load_from_db": false, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "OPENAI_API_KEY" }, "openai_api_type": { "type": "str", @@ -906,7 +906,7 @@ "load_from_db": false, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "OPENAI_API_KEY" }, "stream": { "type": "bool", @@ -1520,7 +1520,7 @@ "list": false, "show": true, "multiline": true, - "value": "from typing import Optional\n\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\nfrom langchain_core.documents import Document\n\nfrom langflow.interface.custom.custom_component import CustomComponent\nfrom langflow.schema import Record\nfrom langflow.utils.util import build_loader_repr_from_records, unescape_string\n\n\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\n display_name: str = \"Recursive Character Text Splitter\"\n description: str = \"Split text into chunks of a specified length.\"\n documentation: str = \"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\"\n\n def build_config(self):\n return {\n \"inputs\": {\n \"display_name\": \"Input\",\n \"info\": \"The texts to split.\",\n \"input_types\": [\"Document\", \"Record\"],\n },\n \"separators\": {\n \"display_name\": \"Separators\",\n \"info\": 'The characters to split on.\\nIf left empty defaults to [\"\\\\n\\\\n\", \"\\\\n\", \" \", \"\"].',\n \"is_list\": True,\n },\n \"chunk_size\": {\n \"display_name\": \"Chunk Size\",\n \"info\": \"The maximum length of each chunk.\",\n \"field_type\": \"int\",\n \"value\": 1000,\n },\n \"chunk_overlap\": {\n \"display_name\": \"Chunk Overlap\",\n \"info\": \"The amount of overlap between chunks.\",\n \"field_type\": \"int\",\n \"value\": 200,\n },\n \"code\": {\"show\": False},\n }\n\n def build(\n self,\n inputs: list[Document],\n separators: Optional[list[str]] = None,\n chunk_size: Optional[int] = 1000,\n chunk_overlap: Optional[int] = 200,\n ) -> list[Record]:\n \"\"\"\n Split text into chunks of a specified length.\n\n Args:\n separators (list[str]): The characters to split on.\n chunk_size (int): The maximum length of each chunk.\n chunk_overlap (int): The amount of overlap between chunks.\n length_function (function): The function to use to calculate the length of the text.\n\n Returns:\n list[str]: The chunks of text.\n \"\"\"\n\n if separators == \"\":\n separators = None\n elif separators:\n # check if the separators list has escaped characters\n # if there are escaped characters, unescape them\n separators = [unescape_string(x) for x in separators]\n\n # Make sure chunk_size and chunk_overlap are ints\n if isinstance(chunk_size, str):\n chunk_size = int(chunk_size)\n if isinstance(chunk_overlap, str):\n chunk_overlap = int(chunk_overlap)\n splitter = RecursiveCharacterTextSplitter(\n separators=separators,\n chunk_size=chunk_size,\n chunk_overlap=chunk_overlap,\n )\n documents = []\n for _input in inputs:\n if isinstance(_input, Record):\n documents.append(_input.to_lc_document())\n else:\n documents.append(_input)\n docs = splitter.split_documents(documents)\n records = self.to_records(docs)\n self.repr_value = build_loader_repr_from_records(records)\n return records\n", + "value": "from typing import Optional\nfrom langchain_core.documents import Document\n\nfrom langflow.interface.custom.custom_component import CustomComponent\nfrom langflow.schema import Record\nfrom langflow.utils.util import build_loader_repr_from_records, unescape_string\nfrom langchain_text_splitters import RecursiveCharacterTextSplitter\n\n\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\n display_name: str = \"Recursive Character Text Splitter\"\n description: str = \"Split text into chunks of a specified length.\"\n documentation: str = \"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\"\n\n def build_config(self):\n return {\n \"inputs\": {\n \"display_name\": \"Input\",\n \"info\": \"The texts to split.\",\n \"input_types\": [\"Document\", \"Record\"],\n },\n \"separators\": {\n \"display_name\": \"Separators\",\n \"info\": 'The characters to split on.\\nIf left empty defaults to [\"\\\\n\\\\n\", \"\\\\n\", \" \", \"\"].',\n \"is_list\": True,\n },\n \"chunk_size\": {\n \"display_name\": \"Chunk Size\",\n \"info\": \"The maximum length of each chunk.\",\n \"field_type\": \"int\",\n \"value\": 1000,\n },\n \"chunk_overlap\": {\n \"display_name\": \"Chunk Overlap\",\n \"info\": \"The amount of overlap between chunks.\",\n \"field_type\": \"int\",\n \"value\": 200,\n },\n \"code\": {\"show\": False},\n }\n\n def build(\n self,\n inputs: list[Document],\n separators: Optional[list[str]] = None,\n chunk_size: Optional[int] = 1000,\n chunk_overlap: Optional[int] = 200,\n ) -> list[Record]:\n \"\"\"\n Split text into chunks of a specified length.\n\n Args:\n separators (list[str]): The characters to split on.\n chunk_size (int): The maximum length of each chunk.\n chunk_overlap (int): The amount of overlap between chunks.\n length_function (function): The function to use to calculate the length of the text.\n\n Returns:\n list[str]: The chunks of text.\n \"\"\"\n\n if separators == \"\":\n separators = None\n elif separators:\n # check if the separators list has escaped characters\n # if there are escaped characters, unescape them\n separators = [unescape_string(x) for x in separators]\n\n # Make sure chunk_size and chunk_overlap are ints\n if isinstance(chunk_size, str):\n chunk_size = int(chunk_size)\n if isinstance(chunk_overlap, str):\n chunk_overlap = int(chunk_overlap)\n splitter = RecursiveCharacterTextSplitter(\n separators=separators,\n chunk_size=chunk_size,\n chunk_overlap=chunk_overlap,\n )\n documents = []\n for _input in inputs:\n if isinstance(_input, Record):\n documents.append(_input.to_lc_document())\n else:\n documents.append(_input)\n docs = splitter.split_documents(documents)\n records = self.to_records(docs)\n self.repr_value = build_loader_repr_from_records(records)\n return records\n", "fileTypes": [], "file_path": "", "password": false, @@ -1643,10 +1643,10 @@ "advanced": false, "dynamic": false, "info": "API endpoint URL for the Astra DB service.", - "load_from_db": false, + "load_from_db": true, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "ASTRA_DB_API_ENDPOINT" }, "batch_size": { "type": "int", @@ -1727,7 +1727,7 @@ "list": false, "show": true, "multiline": true, - "value": "from typing import List, Optional\n\nfrom langflow.components.vectorstores.AstraDB import AstraDBVectorStoreComponent\nfrom langflow.components.vectorstores.base.model import LCVectorStoreComponent\nfrom langflow.field_typing import Embeddings, Text\nfrom langflow.schema import Record\n\n\nclass AstraDBSearchComponent(LCVectorStoreComponent):\n display_name = \"Astra DB Search\"\n description = \"Searches an existing Astra DB Vector Store.\"\n icon = \"AstraDB\"\n field_order = [\"token\", \"api_endpoint\", \"collection_name\", \"input_value\", \"embedding\"]\n\n def build_config(self):\n return {\n \"search_type\": {\n \"display_name\": \"Search Type\",\n \"options\": [\"Similarity\", \"MMR\"],\n },\n \"input_value\": {\n \"display_name\": \"Input Value\",\n \"info\": \"Input value to search\",\n },\n \"embedding\": {\"display_name\": \"Embedding\", \"info\": \"Embedding to use\"},\n \"collection_name\": {\n \"display_name\": \"Collection Name\",\n \"info\": \"The name of the collection within Astra DB where the vectors will be stored.\",\n },\n \"token\": {\n \"display_name\": \"Token\",\n \"info\": \"Authentication token for accessing Astra DB.\",\n \"password\": True,\n },\n \"api_endpoint\": {\n \"display_name\": \"API Endpoint\",\n \"info\": \"API endpoint URL for the Astra DB service.\",\n },\n \"namespace\": {\n \"display_name\": \"Namespace\",\n \"info\": \"Optional namespace within Astra DB to use for the collection.\",\n \"advanced\": True,\n },\n \"metric\": {\n \"display_name\": \"Metric\",\n \"info\": \"Optional distance metric for vector comparisons in the vector store.\",\n \"advanced\": True,\n },\n \"batch_size\": {\n \"display_name\": \"Batch Size\",\n \"info\": \"Optional number of records to process in a single batch.\",\n \"advanced\": True,\n },\n \"bulk_insert_batch_concurrency\": {\n \"display_name\": \"Bulk Insert Batch Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations.\",\n \"advanced\": True,\n },\n \"bulk_insert_overwrite_concurrency\": {\n \"display_name\": \"Bulk Insert Overwrite Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations that overwrite existing records.\",\n \"advanced\": True,\n },\n \"bulk_delete_concurrency\": {\n \"display_name\": \"Bulk Delete Concurrency\",\n \"info\": \"Optional concurrency level for bulk delete operations.\",\n \"advanced\": True,\n },\n \"setup_mode\": {\n \"display_name\": \"Setup Mode\",\n \"info\": \"Configuration mode for setting up the vector store, with options like “Sync”, “Async”, or “Off”.\",\n \"options\": [\"Sync\", \"Async\", \"Off\"],\n \"advanced\": True,\n },\n \"pre_delete_collection\": {\n \"display_name\": \"Pre Delete Collection\",\n \"info\": \"Boolean flag to determine whether to delete the collection before creating a new one.\",\n \"advanced\": True,\n },\n \"metadata_indexing_include\": {\n \"display_name\": \"Metadata Indexing Include\",\n \"info\": \"Optional list of metadata fields to include in the indexing.\",\n \"advanced\": True,\n },\n \"metadata_indexing_exclude\": {\n \"display_name\": \"Metadata Indexing Exclude\",\n \"info\": \"Optional list of metadata fields to exclude from the indexing.\",\n \"advanced\": True,\n },\n \"collection_indexing_policy\": {\n \"display_name\": \"Collection Indexing Policy\",\n \"info\": \"Optional dictionary defining the indexing policy for the collection.\",\n \"advanced\": True,\n },\n \"number_of_results\": {\n \"display_name\": \"Number of Results\",\n \"info\": \"Number of results to return.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n embedding: Embeddings,\n collection_name: str,\n input_value: Text,\n token: str,\n api_endpoint: str,\n search_type: str = \"Similarity\",\n number_of_results: int = 4,\n namespace: Optional[str] = None,\n metric: Optional[str] = None,\n batch_size: Optional[int] = None,\n bulk_insert_batch_concurrency: Optional[int] = None,\n bulk_insert_overwrite_concurrency: Optional[int] = None,\n bulk_delete_concurrency: Optional[int] = None,\n setup_mode: str = \"Sync\",\n pre_delete_collection: bool = False,\n metadata_indexing_include: Optional[List[str]] = None,\n metadata_indexing_exclude: Optional[List[str]] = None,\n collection_indexing_policy: Optional[dict] = None,\n ) -> List[Record]:\n vector_store = AstraDBVectorStoreComponent().build(\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n try:\n return self.search_with_vector_store(input_value, search_type, vector_store, k=number_of_results)\n except KeyError as e:\n if \"content\" in str(e):\n raise ValueError(\n \"You should ingest data through Langflow (or LangChain) to query it in Langflow. Your collection does not contain a field name 'content'.\"\n )\n else:\n raise e\n", + "value": "from typing import List, Optional\n\nfrom langflow.components.vectorstores.AstraDB import AstraDBVectorStoreComponent\nfrom langflow.components.vectorstores.base.model import LCVectorStoreComponent\nfrom langflow.field_typing import Embeddings, Text\nfrom langflow.schema import Record\n\n\nclass AstraDBSearchComponent(LCVectorStoreComponent):\n display_name = \"Astra DB Search\"\n description = \"Searches an existing Astra DB Vector Store.\"\n icon = \"AstraDB\"\n field_order = [\"token\", \"api_endpoint\", \"collection_name\", \"input_value\", \"embedding\"]\n\n def build_config(self):\n return {\n \"search_type\": {\n \"display_name\": \"Search Type\",\n \"options\": [\"Similarity\", \"MMR\"],\n },\n \"input_value\": {\n \"display_name\": \"Input Value\",\n \"info\": \"Input value to search\",\n },\n \"embedding\": {\"display_name\": \"Embedding\", \"info\": \"Embedding to use\"},\n \"collection_name\": {\n \"display_name\": \"Collection Name\",\n \"info\": \"The name of the collection within Astra DB where the vectors will be stored.\",\n },\n \"token\": {\n \"display_name\": \"Token\",\n \"info\": \"Authentication token for accessing Astra DB.\",\n \"password\": True,\n },\n \"api_endpoint\": {\n \"display_name\": \"API Endpoint\",\n \"info\": \"API endpoint URL for the Astra DB service.\",\n },\n \"namespace\": {\n \"display_name\": \"Namespace\",\n \"info\": \"Optional namespace within Astra DB to use for the collection.\",\n \"advanced\": True,\n },\n \"metric\": {\n \"display_name\": \"Metric\",\n \"info\": \"Optional distance metric for vector comparisons in the vector store.\",\n \"advanced\": True,\n },\n \"batch_size\": {\n \"display_name\": \"Batch Size\",\n \"info\": \"Optional number of records to process in a single batch.\",\n \"advanced\": True,\n },\n \"bulk_insert_batch_concurrency\": {\n \"display_name\": \"Bulk Insert Batch Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations.\",\n \"advanced\": True,\n },\n \"bulk_insert_overwrite_concurrency\": {\n \"display_name\": \"Bulk Insert Overwrite Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations that overwrite existing records.\",\n \"advanced\": True,\n },\n \"bulk_delete_concurrency\": {\n \"display_name\": \"Bulk Delete Concurrency\",\n \"info\": \"Optional concurrency level for bulk delete operations.\",\n \"advanced\": True,\n },\n \"setup_mode\": {\n \"display_name\": \"Setup Mode\",\n \"info\": \"Configuration mode for setting up the vector store, with options like \u201cSync\u201d, \u201cAsync\u201d, or \u201cOff\u201d.\",\n \"options\": [\"Sync\", \"Async\", \"Off\"],\n \"advanced\": True,\n },\n \"pre_delete_collection\": {\n \"display_name\": \"Pre Delete Collection\",\n \"info\": \"Boolean flag to determine whether to delete the collection before creating a new one.\",\n \"advanced\": True,\n },\n \"metadata_indexing_include\": {\n \"display_name\": \"Metadata Indexing Include\",\n \"info\": \"Optional list of metadata fields to include in the indexing.\",\n \"advanced\": True,\n },\n \"metadata_indexing_exclude\": {\n \"display_name\": \"Metadata Indexing Exclude\",\n \"info\": \"Optional list of metadata fields to exclude from the indexing.\",\n \"advanced\": True,\n },\n \"collection_indexing_policy\": {\n \"display_name\": \"Collection Indexing Policy\",\n \"info\": \"Optional dictionary defining the indexing policy for the collection.\",\n \"advanced\": True,\n },\n \"number_of_results\": {\n \"display_name\": \"Number of Results\",\n \"info\": \"Number of results to return.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n embedding: Embeddings,\n collection_name: str,\n input_value: Text,\n token: str,\n api_endpoint: str,\n search_type: str = \"Similarity\",\n number_of_results: int = 4,\n namespace: Optional[str] = None,\n metric: Optional[str] = None,\n batch_size: Optional[int] = None,\n bulk_insert_batch_concurrency: Optional[int] = None,\n bulk_insert_overwrite_concurrency: Optional[int] = None,\n bulk_delete_concurrency: Optional[int] = None,\n setup_mode: str = \"Sync\",\n pre_delete_collection: bool = False,\n metadata_indexing_include: Optional[List[str]] = None,\n metadata_indexing_exclude: Optional[List[str]] = None,\n collection_indexing_policy: Optional[dict] = None,\n ) -> List[Record]:\n vector_store = AstraDBVectorStoreComponent().build(\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n try:\n return self.search_with_vector_store(input_value, search_type, vector_store, k=number_of_results)\n except KeyError as e:\n if \"content\" in str(e):\n raise ValueError(\n \"You should ingest data through Langflow (or LangChain) to query it in Langflow. Your collection does not contain a field name 'content'.\"\n )\n else:\n raise e\n", "fileTypes": [], "file_path": "", "password": false, @@ -1927,7 +1927,7 @@ "display_name": "Setup Mode", "advanced": true, "dynamic": false, - "info": "Configuration mode for setting up the vector store, with options like “Sync”, “Async”, or “Off”.", + "info": "Configuration mode for setting up the vector store, with options like \u201cSync\u201d, \u201cAsync\u201d, or \u201cOff\u201d.", "load_from_db": false, "title_case": false, "input_types": ["Text"] @@ -1947,10 +1947,10 @@ "advanced": false, "dynamic": false, "info": "Authentication token for accessing Astra DB.", - "load_from_db": false, + "load_from_db": true, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "ASTRA_DB_APPLICATION_TOKEN" }, "_type": "CustomComponent" }, @@ -2064,10 +2064,10 @@ "advanced": false, "dynamic": false, "info": "API endpoint URL for the Astra DB service.", - "load_from_db": false, + "load_from_db": true, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "ASTRA_DB_API_ENDPOINT" }, "batch_size": { "type": "int", @@ -2148,7 +2148,7 @@ "list": false, "show": true, "multiline": true, - "value": "from typing import List, Optional, Union\n\nfrom langchain.schema import BaseRetriever\nfrom langchain_astradb import AstraDBVectorStore\nfrom langchain_astradb.utils.astradb import SetupMode\n\nfrom langflow.custom import CustomComponent\nfrom langflow.field_typing import Embeddings, VectorStore\nfrom langflow.schema import Record\n\n\nclass AstraDBVectorStoreComponent(CustomComponent):\n display_name = \"Astra DB\"\n description = \"Builds or loads an Astra DB Vector Store.\"\n icon = \"AstraDB\"\n field_order = [\"token\", \"api_endpoint\", \"collection_name\", \"inputs\", \"embedding\"]\n\n def build_config(self):\n return {\n \"inputs\": {\n \"display_name\": \"Inputs\",\n \"info\": \"Optional list of records to be processed and stored in the vector store.\",\n },\n \"embedding\": {\"display_name\": \"Embedding\", \"info\": \"Embedding to use\"},\n \"collection_name\": {\n \"display_name\": \"Collection Name\",\n \"info\": \"The name of the collection within Astra DB where the vectors will be stored.\",\n },\n \"token\": {\n \"display_name\": \"Token\",\n \"info\": \"Authentication token for accessing Astra DB.\",\n \"password\": True,\n },\n \"api_endpoint\": {\n \"display_name\": \"API Endpoint\",\n \"info\": \"API endpoint URL for the Astra DB service.\",\n },\n \"namespace\": {\n \"display_name\": \"Namespace\",\n \"info\": \"Optional namespace within Astra DB to use for the collection.\",\n \"advanced\": True,\n },\n \"metric\": {\n \"display_name\": \"Metric\",\n \"info\": \"Optional distance metric for vector comparisons in the vector store.\",\n \"advanced\": True,\n },\n \"batch_size\": {\n \"display_name\": \"Batch Size\",\n \"info\": \"Optional number of records to process in a single batch.\",\n \"advanced\": True,\n },\n \"bulk_insert_batch_concurrency\": {\n \"display_name\": \"Bulk Insert Batch Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations.\",\n \"advanced\": True,\n },\n \"bulk_insert_overwrite_concurrency\": {\n \"display_name\": \"Bulk Insert Overwrite Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations that overwrite existing records.\",\n \"advanced\": True,\n },\n \"bulk_delete_concurrency\": {\n \"display_name\": \"Bulk Delete Concurrency\",\n \"info\": \"Optional concurrency level for bulk delete operations.\",\n \"advanced\": True,\n },\n \"setup_mode\": {\n \"display_name\": \"Setup Mode\",\n \"info\": \"Configuration mode for setting up the vector store, with options like “Sync”, “Async”, or “Off”.\",\n \"options\": [\"Sync\", \"Async\", \"Off\"],\n \"advanced\": True,\n },\n \"pre_delete_collection\": {\n \"display_name\": \"Pre Delete Collection\",\n \"info\": \"Boolean flag to determine whether to delete the collection before creating a new one.\",\n \"advanced\": True,\n },\n \"metadata_indexing_include\": {\n \"display_name\": \"Metadata Indexing Include\",\n \"info\": \"Optional list of metadata fields to include in the indexing.\",\n \"advanced\": True,\n },\n \"metadata_indexing_exclude\": {\n \"display_name\": \"Metadata Indexing Exclude\",\n \"info\": \"Optional list of metadata fields to exclude from the indexing.\",\n \"advanced\": True,\n },\n \"collection_indexing_policy\": {\n \"display_name\": \"Collection Indexing Policy\",\n \"info\": \"Optional dictionary defining the indexing policy for the collection.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n embedding: Embeddings,\n token: str,\n api_endpoint: str,\n collection_name: str,\n inputs: Optional[List[Record]] = None,\n namespace: Optional[str] = None,\n metric: Optional[str] = None,\n batch_size: Optional[int] = None,\n bulk_insert_batch_concurrency: Optional[int] = None,\n bulk_insert_overwrite_concurrency: Optional[int] = None,\n bulk_delete_concurrency: Optional[int] = None,\n setup_mode: str = \"Sync\",\n pre_delete_collection: bool = False,\n metadata_indexing_include: Optional[List[str]] = None,\n metadata_indexing_exclude: Optional[List[str]] = None,\n collection_indexing_policy: Optional[dict] = None,\n ) -> Union[VectorStore, BaseRetriever]:\n try:\n setup_mode_value = SetupMode[setup_mode.upper()]\n except KeyError:\n raise ValueError(f\"Invalid setup mode: {setup_mode}\")\n if inputs:\n documents = [_input.to_lc_document() for _input in inputs]\n\n vector_store = AstraDBVectorStore.from_documents(\n documents=documents,\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode_value,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n else:\n vector_store = AstraDBVectorStore(\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode_value,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n\n return vector_store\n", + "value": "from typing import List, Optional, Union\nfrom langchain_astradb import AstraDBVectorStore\nfrom langchain_astradb.utils.astradb import SetupMode\n\nfrom langflow.custom import CustomComponent\nfrom langflow.field_typing import Embeddings, VectorStore\nfrom langflow.schema import Record\nfrom langchain_core.retrievers import BaseRetriever\n\n\nclass AstraDBVectorStoreComponent(CustomComponent):\n display_name = \"Astra DB\"\n description = \"Builds or loads an Astra DB Vector Store.\"\n icon = \"AstraDB\"\n field_order = [\"token\", \"api_endpoint\", \"collection_name\", \"inputs\", \"embedding\"]\n\n def build_config(self):\n return {\n \"inputs\": {\n \"display_name\": \"Inputs\",\n \"info\": \"Optional list of records to be processed and stored in the vector store.\",\n },\n \"embedding\": {\"display_name\": \"Embedding\", \"info\": \"Embedding to use\"},\n \"collection_name\": {\n \"display_name\": \"Collection Name\",\n \"info\": \"The name of the collection within Astra DB where the vectors will be stored.\",\n },\n \"token\": {\n \"display_name\": \"Token\",\n \"info\": \"Authentication token for accessing Astra DB.\",\n \"password\": True,\n },\n \"api_endpoint\": {\n \"display_name\": \"API Endpoint\",\n \"info\": \"API endpoint URL for the Astra DB service.\",\n },\n \"namespace\": {\n \"display_name\": \"Namespace\",\n \"info\": \"Optional namespace within Astra DB to use for the collection.\",\n \"advanced\": True,\n },\n \"metric\": {\n \"display_name\": \"Metric\",\n \"info\": \"Optional distance metric for vector comparisons in the vector store.\",\n \"advanced\": True,\n },\n \"batch_size\": {\n \"display_name\": \"Batch Size\",\n \"info\": \"Optional number of records to process in a single batch.\",\n \"advanced\": True,\n },\n \"bulk_insert_batch_concurrency\": {\n \"display_name\": \"Bulk Insert Batch Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations.\",\n \"advanced\": True,\n },\n \"bulk_insert_overwrite_concurrency\": {\n \"display_name\": \"Bulk Insert Overwrite Concurrency\",\n \"info\": \"Optional concurrency level for bulk insert operations that overwrite existing records.\",\n \"advanced\": True,\n },\n \"bulk_delete_concurrency\": {\n \"display_name\": \"Bulk Delete Concurrency\",\n \"info\": \"Optional concurrency level for bulk delete operations.\",\n \"advanced\": True,\n },\n \"setup_mode\": {\n \"display_name\": \"Setup Mode\",\n \"info\": \"Configuration mode for setting up the vector store, with options like \u201cSync\u201d, \u201cAsync\u201d, or \u201cOff\u201d.\",\n \"options\": [\"Sync\", \"Async\", \"Off\"],\n \"advanced\": True,\n },\n \"pre_delete_collection\": {\n \"display_name\": \"Pre Delete Collection\",\n \"info\": \"Boolean flag to determine whether to delete the collection before creating a new one.\",\n \"advanced\": True,\n },\n \"metadata_indexing_include\": {\n \"display_name\": \"Metadata Indexing Include\",\n \"info\": \"Optional list of metadata fields to include in the indexing.\",\n \"advanced\": True,\n },\n \"metadata_indexing_exclude\": {\n \"display_name\": \"Metadata Indexing Exclude\",\n \"info\": \"Optional list of metadata fields to exclude from the indexing.\",\n \"advanced\": True,\n },\n \"collection_indexing_policy\": {\n \"display_name\": \"Collection Indexing Policy\",\n \"info\": \"Optional dictionary defining the indexing policy for the collection.\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n embedding: Embeddings,\n token: str,\n api_endpoint: str,\n collection_name: str,\n inputs: Optional[List[Record]] = None,\n namespace: Optional[str] = None,\n metric: Optional[str] = None,\n batch_size: Optional[int] = None,\n bulk_insert_batch_concurrency: Optional[int] = None,\n bulk_insert_overwrite_concurrency: Optional[int] = None,\n bulk_delete_concurrency: Optional[int] = None,\n setup_mode: str = \"Sync\",\n pre_delete_collection: bool = False,\n metadata_indexing_include: Optional[List[str]] = None,\n metadata_indexing_exclude: Optional[List[str]] = None,\n collection_indexing_policy: Optional[dict] = None,\n ) -> Union[VectorStore, BaseRetriever]:\n try:\n setup_mode_value = SetupMode[setup_mode.upper()]\n except KeyError:\n raise ValueError(f\"Invalid setup mode: {setup_mode}\")\n if inputs:\n documents = [_input.to_lc_document() for _input in inputs]\n\n vector_store = AstraDBVectorStore.from_documents(\n documents=documents,\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode_value,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n else:\n vector_store = AstraDBVectorStore(\n embedding=embedding,\n collection_name=collection_name,\n token=token,\n api_endpoint=api_endpoint,\n namespace=namespace,\n metric=metric,\n batch_size=batch_size,\n bulk_insert_batch_concurrency=bulk_insert_batch_concurrency,\n bulk_insert_overwrite_concurrency=bulk_insert_overwrite_concurrency,\n bulk_delete_concurrency=bulk_delete_concurrency,\n setup_mode=setup_mode_value,\n pre_delete_collection=pre_delete_collection,\n metadata_indexing_include=metadata_indexing_include,\n metadata_indexing_exclude=metadata_indexing_exclude,\n collection_indexing_policy=collection_indexing_policy,\n )\n\n return vector_store\n", "fileTypes": [], "file_path": "", "password": false, @@ -2308,7 +2308,7 @@ "display_name": "Setup Mode", "advanced": true, "dynamic": false, - "info": "Configuration mode for setting up the vector store, with options like “Sync”, “Async”, or “Off”.", + "info": "Configuration mode for setting up the vector store, with options like \u201cSync\u201d, \u201cAsync\u201d, or \u201cOff\u201d.", "load_from_db": false, "title_case": false, "input_types": ["Text"] @@ -2328,10 +2328,10 @@ "advanced": false, "dynamic": false, "info": "Authentication token for accessing Astra DB.", - "load_from_db": false, + "load_from_db": true, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "ASTRA_DB_APPLICATION_TOKEN" }, "_type": "CustomComponent" }, @@ -2663,7 +2663,7 @@ "load_from_db": false, "title_case": false, "input_types": ["Text"], - "value": "" + "value": "OPENAI_API_KEY" }, "openai_api_type": { "type": "str", @@ -2893,9 +2893,9 @@ { "source": "TextOutput-BDknO", "target": "Prompt-xeI6K", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œTextOutputœ,œidœ:œTextOutput-BDknOœ}", - "targetHandle": "{œfieldNameœ:œcontextœ,œidœ:œPrompt-xeI6Kœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", - "id": "reactflow__edge-TextOutput-BDknO{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œTextOutputœ,œidœ:œTextOutput-BDknOœ}-Prompt-xeI6K{œfieldNameœ:œcontextœ,œidœ:œPrompt-xeI6Kœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153TextOutput\u0153,\u0153id\u0153:\u0153TextOutput-BDknO\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153context\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "id": "reactflow__edge-TextOutput-BDknO{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153TextOutput\u0153,\u0153id\u0153:\u0153TextOutput-BDknO\u0153}-Prompt-xeI6K{\u0153fieldName\u0153:\u0153context\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "context", @@ -2918,9 +2918,9 @@ { "source": "ChatInput-yxMKE", "target": "Prompt-xeI6K", - "sourceHandle": "{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ,œRecordœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-yxMKEœ}", - "targetHandle": "{œfieldNameœ:œquestionœ,œidœ:œPrompt-xeI6Kœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", - "id": "reactflow__edge-ChatInput-yxMKE{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ,œRecordœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-yxMKEœ}-Prompt-xeI6K{œfieldNameœ:œquestionœ,œidœ:œPrompt-xeI6Kœ,œinputTypesœ:[œDocumentœ,œBaseOutputParserœ,œRecordœ,œTextœ],œtypeœ:œstrœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153,\u0153Record\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-yxMKE\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153question\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "id": "reactflow__edge-ChatInput-yxMKE{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153,\u0153Record\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-yxMKE\u0153}-Prompt-xeI6K{\u0153fieldName\u0153:\u0153question\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153BaseOutputParser\u0153,\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "question", @@ -2943,9 +2943,9 @@ { "source": "Prompt-xeI6K", "target": "OpenAIModel-EjXlN", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-xeI6Kœ}", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-EjXlNœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", - "id": "reactflow__edge-Prompt-xeI6K{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œPromptœ,œidœ:œPrompt-xeI6Kœ}-OpenAIModel-EjXlN{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-EjXlNœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-EjXlN\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "id": "reactflow__edge-Prompt-xeI6K{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-xeI6K\u0153}-OpenAIModel-EjXlN{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153OpenAIModel-EjXlN\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -2968,9 +2968,9 @@ { "source": "OpenAIModel-EjXlN", "target": "ChatOutput-Q39I8", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-EjXlNœ}", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-Q39I8œ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", - "id": "reactflow__edge-OpenAIModel-EjXlN{œbaseClassesœ:[œobjectœ,œTextœ,œstrœ],œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-EjXlNœ}-ChatOutput-Q39I8{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-Q39I8œ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-EjXlN\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-Q39I8\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", + "id": "reactflow__edge-OpenAIModel-EjXlN{\u0153baseClasses\u0153:[\u0153object\u0153,\u0153Text\u0153,\u0153str\u0153],\u0153dataType\u0153:\u0153OpenAIModel\u0153,\u0153id\u0153:\u0153OpenAIModel-EjXlN\u0153}-ChatOutput-Q39I8{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-Q39I8\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -2993,9 +2993,9 @@ { "source": "File-t0a6a", "target": "RecursiveCharacterTextSplitter-tR9QM", - "sourceHandle": "{œbaseClassesœ:[œRecordœ],œdataTypeœ:œFileœ,œidœ:œFile-t0a6aœ}", - "targetHandle": "{œfieldNameœ:œinputsœ,œidœ:œRecursiveCharacterTextSplitter-tR9QMœ,œinputTypesœ:[œDocumentœ,œRecordœ],œtypeœ:œDocumentœ}", - "id": "reactflow__edge-File-t0a6a{œbaseClassesœ:[œRecordœ],œdataTypeœ:œFileœ,œidœ:œFile-t0a6aœ}-RecursiveCharacterTextSplitter-tR9QM{œfieldNameœ:œinputsœ,œidœ:œRecursiveCharacterTextSplitter-tR9QMœ,œinputTypesœ:[œDocumentœ,œRecordœ],œtypeœ:œDocumentœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153File\u0153,\u0153id\u0153:\u0153File-t0a6a\u0153}", + "targetHandle": "{\u0153fieldName\u0153:\u0153inputs\u0153,\u0153id\u0153:\u0153RecursiveCharacterTextSplitter-tR9QM\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153Record\u0153],\u0153type\u0153:\u0153Document\u0153}", + "id": "reactflow__edge-File-t0a6a{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153File\u0153,\u0153id\u0153:\u0153File-t0a6a\u0153}-RecursiveCharacterTextSplitter-tR9QM{\u0153fieldName\u0153:\u0153inputs\u0153,\u0153id\u0153:\u0153RecursiveCharacterTextSplitter-tR9QM\u0153,\u0153inputTypes\u0153:[\u0153Document\u0153,\u0153Record\u0153],\u0153type\u0153:\u0153Document\u0153}", "data": { "targetHandle": { "fieldName": "inputs", @@ -3017,9 +3017,9 @@ }, { "source": "OpenAIEmbeddings-ZlOk1", - "sourceHandle": "{œbaseClassesœ:[œEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-ZlOk1œ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Embeddings\u0153],\u0153dataType\u0153:\u0153OpenAIEmbeddings\u0153,\u0153id\u0153:\u0153OpenAIEmbeddings-ZlOk1\u0153}", "target": "AstraDBSearch-41nRz", - "targetHandle": "{œfieldNameœ:œembeddingœ,œidœ:œAstraDBSearch-41nRzœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153embedding\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Embeddings\u0153}", "data": { "targetHandle": { "fieldName": "embedding", @@ -3037,13 +3037,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIEmbeddings-ZlOk1{œbaseClassesœ:[œEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-ZlOk1œ}-AstraDBSearch-41nRz{œfieldNameœ:œembeddingœ,œidœ:œAstraDBSearch-41nRzœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}" + "id": "reactflow__edge-OpenAIEmbeddings-ZlOk1{\u0153baseClasses\u0153:[\u0153Embeddings\u0153],\u0153dataType\u0153:\u0153OpenAIEmbeddings\u0153,\u0153id\u0153:\u0153OpenAIEmbeddings-ZlOk1\u0153}-AstraDBSearch-41nRz{\u0153fieldName\u0153:\u0153embedding\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Embeddings\u0153}" }, { "source": "ChatInput-yxMKE", - "sourceHandle": "{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ,œRecordœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-yxMKEœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153,\u0153Record\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-yxMKE\u0153}", "target": "AstraDBSearch-41nRz", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œAstraDBSearch-41nRzœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -3061,13 +3061,13 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-ChatInput-yxMKE{œbaseClassesœ:[œTextœ,œstrœ,œobjectœ,œRecordœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-yxMKEœ}-AstraDBSearch-41nRz{œfieldNameœ:œinput_valueœ,œidœ:œAstraDBSearch-41nRzœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-ChatInput-yxMKE{\u0153baseClasses\u0153:[\u0153Text\u0153,\u0153str\u0153,\u0153object\u0153,\u0153Record\u0153],\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-yxMKE\u0153}-AstraDBSearch-41nRz{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153,\u0153inputTypes\u0153:[\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" }, { "source": "RecursiveCharacterTextSplitter-tR9QM", - "sourceHandle": "{œbaseClassesœ:[œRecordœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-tR9QMœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153RecursiveCharacterTextSplitter\u0153,\u0153id\u0153:\u0153RecursiveCharacterTextSplitter-tR9QM\u0153}", "target": "AstraDB-eUCSS", - "targetHandle": "{œfieldNameœ:œinputsœ,œidœ:œAstraDB-eUCSSœ,œinputTypesœ:null,œtypeœ:œRecordœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153inputs\u0153,\u0153id\u0153:\u0153AstraDB-eUCSS\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Record\u0153}", "data": { "targetHandle": { "fieldName": "inputs", @@ -3085,14 +3085,14 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-RecursiveCharacterTextSplitter-tR9QM{œbaseClassesœ:[œRecordœ],œdataTypeœ:œRecursiveCharacterTextSplitterœ,œidœ:œRecursiveCharacterTextSplitter-tR9QMœ}-AstraDB-eUCSS{œfieldNameœ:œinputsœ,œidœ:œAstraDB-eUCSSœ,œinputTypesœ:null,œtypeœ:œRecordœ}", + "id": "reactflow__edge-RecursiveCharacterTextSplitter-tR9QM{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153RecursiveCharacterTextSplitter\u0153,\u0153id\u0153:\u0153RecursiveCharacterTextSplitter-tR9QM\u0153}-AstraDB-eUCSS{\u0153fieldName\u0153:\u0153inputs\u0153,\u0153id\u0153:\u0153AstraDB-eUCSS\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Record\u0153}", "selected": false }, { "source": "OpenAIEmbeddings-9TPjc", - "sourceHandle": "{œbaseClassesœ:[œEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-9TPjcœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Embeddings\u0153],\u0153dataType\u0153:\u0153OpenAIEmbeddings\u0153,\u0153id\u0153:\u0153OpenAIEmbeddings-9TPjc\u0153}", "target": "AstraDB-eUCSS", - "targetHandle": "{œfieldNameœ:œembeddingœ,œidœ:œAstraDB-eUCSSœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153embedding\u0153,\u0153id\u0153:\u0153AstraDB-eUCSS\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Embeddings\u0153}", "data": { "targetHandle": { "fieldName": "embedding", @@ -3110,14 +3110,14 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-OpenAIEmbeddings-9TPjc{œbaseClassesœ:[œEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-9TPjcœ}-AstraDB-eUCSS{œfieldNameœ:œembeddingœ,œidœ:œAstraDB-eUCSSœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}", + "id": "reactflow__edge-OpenAIEmbeddings-9TPjc{\u0153baseClasses\u0153:[\u0153Embeddings\u0153],\u0153dataType\u0153:\u0153OpenAIEmbeddings\u0153,\u0153id\u0153:\u0153OpenAIEmbeddings-9TPjc\u0153}-AstraDB-eUCSS{\u0153fieldName\u0153:\u0153embedding\u0153,\u0153id\u0153:\u0153AstraDB-eUCSS\u0153,\u0153inputTypes\u0153:null,\u0153type\u0153:\u0153Embeddings\u0153}", "selected": false }, { "source": "AstraDBSearch-41nRz", - "sourceHandle": "{œbaseClassesœ:[œRecordœ],œdataTypeœ:œAstraDBSearchœ,œidœ:œAstraDBSearch-41nRzœ}", + "sourceHandle": "{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153AstraDBSearch\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153}", "target": "TextOutput-BDknO", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-BDknOœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}", + "targetHandle": "{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-BDknO\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}", "data": { "targetHandle": { "fieldName": "input_value", @@ -3135,7 +3135,7 @@ "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", - "id": "reactflow__edge-AstraDBSearch-41nRz{œbaseClassesœ:[œRecordœ],œdataTypeœ:œAstraDBSearchœ,œidœ:œAstraDBSearch-41nRzœ}-TextOutput-BDknO{œfieldNameœ:œinput_valueœ,œidœ:œTextOutput-BDknOœ,œinputTypesœ:[œRecordœ,œTextœ],œtypeœ:œstrœ}" + "id": "reactflow__edge-AstraDBSearch-41nRz{\u0153baseClasses\u0153:[\u0153Record\u0153],\u0153dataType\u0153:\u0153AstraDBSearch\u0153,\u0153id\u0153:\u0153AstraDBSearch-41nRz\u0153}-TextOutput-BDknO{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153TextOutput-BDknO\u0153,\u0153inputTypes\u0153:[\u0153Record\u0153,\u0153Text\u0153],\u0153type\u0153:\u0153str\u0153}" } ], "viewport": { diff --git a/src/backend/base/langflow/interface/agents/custom.py b/src/backend/base/langflow/interface/agents/custom.py index 680bc9bf8..36d9bd653 100644 --- a/src/backend/base/langflow/interface/agents/custom.py +++ b/src/backend/base/langflow/interface/agents/custom.py @@ -5,7 +5,6 @@ from langchain.agents.agent_toolkits import VectorStoreInfo, VectorStoreRouterTo from langchain.agents.agent_toolkits.vectorstore.prompt import PREFIX as VECTORSTORE_PREFIX from langchain.agents.agent_toolkits.vectorstore.prompt import ROUTER_PREFIX as VECTORSTORE_ROUTER_PREFIX from langchain.agents.mrkl.prompt import FORMAT_INSTRUCTIONS -from langchain.base_language import BaseLanguageModel from langchain.chains.llm import LLMChain from langchain_community.utilities import SQLDatabase from langchain.tools.sql_database.prompt import QUERY_CHECKER @@ -18,6 +17,14 @@ from langchain_experimental.agents.agent_toolkits.pandas.prompt import SUFFIX_WI from langchain_experimental.tools.python.tool import PythonAstREPLTool from langflow.interface.base import CustomAgentExecutor +from langchain_community.tools import ( + InfoSQLDatabaseTool, + ListSQLDatabaseTool, + QuerySQLCheckerTool, + QuerySQLDataBaseTool, +) +from langchain_core.language_models import BaseLanguageModel +from langchain_core.prompts import PromptTemplate class JsonAgent(CustomAgentExecutor): @@ -165,17 +172,6 @@ class SQLAgent(CustomAgentExecutor): db = SQLDatabase.from_uri(database_uri) toolkit = SQLDatabaseToolkit(db=db, llm=llm) - # The right code should be this, but there is a problem with tools = toolkit.get_tools() - # related to `OPENAI_API_KEY` - # return create_sql_agent(llm=llm, toolkit=toolkit, verbose=True) - from langchain.prompts import PromptTemplate - from langchain.tools.sql_database.tool import ( - InfoSQLDatabaseTool, - ListSQLDatabaseTool, - QuerySQLCheckerTool, - QuerySQLDataBaseTool, - ) - llmchain = LLMChain( llm=llm, prompt=PromptTemplate(template=QUERY_CHECKER, input_variables=["query", "dialect"]), diff --git a/src/backend/base/langflow/interface/agents/prebuilt.py b/src/backend/base/langflow/interface/agents/prebuilt.py index ec4799a81..9e59a76e1 100644 --- a/src/backend/base/langflow/interface/agents/prebuilt.py +++ b/src/backend/base/langflow/interface/agents/prebuilt.py @@ -1,9 +1,9 @@ from langchain.chains.llm import LLMChain from langchain.agents import AgentExecutor, ZeroShotAgent from langchain.agents.agent_toolkits.json.prompt import JSON_PREFIX, JSON_SUFFIX -from langchain.agents.agent_toolkits.json.toolkit import JsonToolkit from langchain.agents.mrkl.prompt import FORMAT_INSTRUCTIONS -from langchain.base_language import BaseLanguageModel +from langchain_community.agent_toolkits import JsonToolkit +from langchain_core.language_models import BaseLanguageModel class MalfoyAgent(AgentExecutor): diff --git a/src/backend/base/langflow/interface/chains/custom.py b/src/backend/base/langflow/interface/chains/custom.py index 2a72f3471..af5a84c54 100644 --- a/src/backend/base/langflow/interface/chains/custom.py +++ b/src/backend/base/langflow/interface/chains/custom.py @@ -1,14 +1,13 @@ from typing import Dict, Optional, Type, Union - -from langchain.base_language import BaseLanguageModel from langchain.chains import ConversationChain from langchain.chains.question_answering import load_qa_chain from langchain.memory.buffer import ConversationBufferMemory -from langchain.schema import BaseMemory from pydantic.v1 import Field, root_validator from langflow.interface.base import CustomChain from langflow.interface.utils import extract_input_variables_from_prompt +from langchain_core.language_models import BaseLanguageModel +from langchain_core.memory import BaseMemory DEFAULT_SUFFIX = """" Current conversation: diff --git a/src/backend/base/langflow/interface/custom_lists.py b/src/backend/base/langflow/interface/custom_lists.py index 9b494e450..27429e605 100644 --- a/src/backend/base/langflow/interface/custom_lists.py +++ b/src/backend/base/langflow/interface/custom_lists.py @@ -3,11 +3,13 @@ from typing import Any from langchain import llms, memory, text_splitter from langchain_community import agent_toolkits, document_loaders, embeddings -from langchain_community.chat_models import AzureChatOpenAI, ChatAnthropic, ChatOpenAI, ChatVertexAI +from langchain_community.chat_models import ChatVertexAI from langflow.interface.agents.custom import CUSTOM_AGENTS from langflow.interface.chains.custom import CUSTOM_CHAINS from langflow.interface.importing.utils import import_class +from langchain_anthropic import ChatAnthropic +from langchain_openai import AzureChatOpenAI, ChatOpenAI # LLMs llm_type_to_cls_dict = {} diff --git a/src/backend/base/langflow/interface/importing/utils.py b/src/backend/base/langflow/interface/importing/utils.py index 1b921d87b..a4f4904ac 100644 --- a/src/backend/base/langflow/interface/importing/utils.py +++ b/src/backend/base/langflow/interface/importing/utils.py @@ -4,13 +4,13 @@ import importlib from typing import Any, Type from langchain.agents import Agent -from langchain.base_language import BaseLanguageModel from langchain.chains.base import Chain -from langchain.prompts import PromptTemplate -from langchain.tools import BaseTool from langchain_core.language_models.chat_models import BaseChatModel from langflow.interface.wrappers.base import wrapper_creator +from langchain_core.language_models import BaseLanguageModel +from langchain_core.prompts import PromptTemplate +from langchain_core.tools import BaseTool def import_module(module_path: str) -> Any: diff --git a/src/backend/base/langflow/interface/initialize/loading.py b/src/backend/base/langflow/interface/initialize/loading.py index 96fe8832f..d5ebf7260 100644 --- a/src/backend/base/langflow/interface/initialize/loading.py +++ b/src/backend/base/langflow/interface/initialize/loading.py @@ -1,15 +1,12 @@ import inspect import json +import os from typing import TYPE_CHECKING, Any, Callable, Dict, Sequence, Type import orjson from langchain.agents import agent as agent_module from langchain.agents.agent import AgentExecutor -from langchain.agents.agent_toolkits.base import BaseToolkit -from langchain.agents.tools import BaseTool from langchain.chains.base import Chain -from langchain.document_loaders.base import BaseLoader -from langchain_community.vectorstores import VectorStore from langchain_core.documents import Document from loguru import logger from pydantic import ValidationError @@ -26,6 +23,11 @@ from langflow.interface.wrappers.base import wrapper_creator from langflow.schema.schema import Record from langflow.utils import validate from langflow.utils.util import unescape_string +from langchain_community.agent_toolkits.base import BaseToolkit +from langchain_core.document_loaders import BaseLoader +from langchain_core.tools import BaseTool +from langchain_core.vectorstores import VectorStore +from langchain_text_splitters import Language if TYPE_CHECKING: from langflow.custom import CustomComponent @@ -34,6 +36,7 @@ if TYPE_CHECKING: async def instantiate_class( vertex: "Vertex", + fallback_to_env_vars, user_id=None, ) -> Any: """Instantiate class from module type and key, and params""" @@ -56,7 +59,7 @@ async def instantiate_class( if not base_type: raise ValueError("No base type provided for vertex") if base_type == "custom_components": - return await instantiate_custom_component(params, user_id, vertex) + return await instantiate_custom_component(params, user_id, vertex, fallback_to_env_vars=fallback_to_env_vars) class_object = import_by_type(_type=base_type, name=vertex_type) return await instantiate_based_on_type( class_object=class_object, @@ -65,6 +68,7 @@ async def instantiate_class( params=params, user_id=user_id, vertex=vertex, + fallback_to_env_vars=fallback_to_env_vars, ) @@ -92,14 +96,7 @@ def convert_kwargs(params): return params -async def instantiate_based_on_type( - class_object, - base_type, - node_type, - params, - user_id, - vertex, -): +async def instantiate_based_on_type(class_object, base_type, node_type, params, user_id, vertex, fallback_to_env_vars): if base_type == "agents": return instantiate_agent(node_type, class_object, params) elif base_type == "prompts": @@ -131,33 +128,49 @@ async def instantiate_based_on_type( elif base_type == "memory": return instantiate_memory(node_type, class_object, params) elif base_type == "custom_components": - return await instantiate_custom_component( - params, - user_id, - vertex, - ) + return await instantiate_custom_component(params, user_id, vertex, fallback_to_env_vars=fallback_to_env_vars) elif base_type == "wrappers": return instantiate_wrapper(node_type, class_object, params) else: return class_object(**params) -def update_params_with_load_from_db_fields(custom_component: "CustomComponent", params, load_from_db_fields): +def update_params_with_load_from_db_fields( + custom_component: "CustomComponent", params, load_from_db_fields, fallback_to_env_vars=False +): # For each field in load_from_db_fields, we will check if it's in the params # and if it is, we will get the value from the custom_component.keys(name) # and update the params with the value for field in load_from_db_fields: if field in params: try: - key = custom_component.variables(params[field]) - params[field] = key if key else params[field] + key = None + try: + key = custom_component.variables(params[field]) + except ValueError as e: + # check if "User id is not set" is in the error message + if "User id is not set" in str(e) and not fallback_to_env_vars: + raise e + logger.debug(str(e)) + if fallback_to_env_vars and key is None: + var = os.getenv(params[field]) + if var is None: + raise ValueError(f"Environment variable {params[field]} is not set.") + key = var + logger.info(f"Using environment variable {params[field]} for {field}") + if key is None: + logger.warning(f"Could not get value for {field}. Setting it to None.") + params[field] = key + except Exception as exc: - logger.error(f"Failed to get value for {field} from custom component. Error: {exc}") - pass + logger.error(f"Failed to get value for {field} from custom component. Setting it to None. Error: {exc}") + + params[field] = None + return params -async def instantiate_custom_component(params, user_id, vertex): +async def instantiate_custom_component(params, user_id, vertex, fallback_to_env_vars: bool = False): params_copy = params.copy() class_object: Type["CustomComponent"] = eval_custom_component_code(params_copy.pop("code")) custom_component: "CustomComponent" = class_object( @@ -166,7 +179,9 @@ async def instantiate_custom_component(params, user_id, vertex): vertex=vertex, selected_output_type=vertex.selected_output_type, ) - params_copy = update_params_with_load_from_db_fields(custom_component, params_copy, vertex.load_from_db_fields) + params_copy = update_params_with_load_from_db_fields( + custom_component, params_copy, vertex.load_from_db_fields, fallback_to_env_vars + ) if "retriever" in params_copy and hasattr(params_copy["retriever"], "as_retriever"): params_copy["retriever"] = params_copy["retriever"].as_retriever() @@ -416,8 +431,6 @@ def instantiate_textsplitter( params["separators"] = [unescape_string(separator) for separator in params["separators"]] text_splitter = class_object(**params) else: - from langchain.text_splitter import Language - language = params.pop("separator_type", None) params["language"] = Language(language) params.pop("separators", None) diff --git a/src/backend/base/langflow/interface/initialize/utils.py b/src/backend/base/langflow/interface/initialize/utils.py index 0ef76836b..c09525a6c 100644 --- a/src/backend/base/langflow/interface/initialize/utils.py +++ b/src/backend/base/langflow/interface/initialize/utils.py @@ -4,9 +4,10 @@ from typing import Any, Dict, List import orjson from langchain.agents import ZeroShotAgent -from langchain.schema import BaseOutputParser, Document from langflow.services.database.models.base import orjson_dumps +from langchain_core.documents import Document +from langchain_core.output_parsers import BaseOutputParser def handle_node_type(node_type, class_object, params: Dict): diff --git a/src/backend/base/langflow/interface/initialize/vector_store.py b/src/backend/base/langflow/interface/initialize/vector_store.py index 619baa3f0..8b9034e65 100644 --- a/src/backend/base/langflow/interface/initialize/vector_store.py +++ b/src/backend/base/langflow/interface/initialize/vector_store.py @@ -5,14 +5,13 @@ import orjson from langchain_community.vectorstores import ( FAISS, Chroma, - ElasticsearchStore, MongoDBAtlasVectorSearch, - Pinecone, Qdrant, SupabaseVectorStore, Weaviate, ) from langchain_core.documents import Document +from langchain_pinecone import Pinecone def docs_in_params(params: dict) -> bool: diff --git a/src/backend/base/langflow/interface/prompts/custom.py b/src/backend/base/langflow/interface/prompts/custom.py index 202fbe409..e90ce8812 100644 --- a/src/backend/base/langflow/interface/prompts/custom.py +++ b/src/backend/base/langflow/interface/prompts/custom.py @@ -1,9 +1,8 @@ from typing import Dict, List, Optional, Type - -from langchain.prompts import PromptTemplate from pydantic.v1 import root_validator from langflow.interface.utils import extract_input_variables_from_prompt +from langchain_core.prompts import PromptTemplate # Steps to create a BaseCustomPrompt: # 1. Create a prompt template that endes with: diff --git a/src/backend/base/langflow/interface/tools/constants.py b/src/backend/base/langflow/interface/tools/constants.py index 27b42b327..39e3b7465 100644 --- a/src/backend/base/langflow/interface/tools/constants.py +++ b/src/backend/base/langflow/interface/tools/constants.py @@ -1,10 +1,10 @@ from langchain import tools -from langchain.agents import Tool from langchain.agents.load_tools import _BASE_TOOLS, _EXTRA_LLM_TOOLS, _EXTRA_OPTIONAL_TOOLS, _LLM_TOOLS from langchain_community.tools.json.tool import JsonSpec from langflow.interface.importing.utils import import_class from langflow.interface.tools.custom import PythonFunctionTool +from langchain_core.tools import Tool FILE_TOOLS = {"JsonSpec": JsonSpec} CUSTOM_TOOLS = { diff --git a/src/backend/base/langflow/interface/tools/custom.py b/src/backend/base/langflow/interface/tools/custom.py index 6ba8cac13..8afaa10da 100644 --- a/src/backend/base/langflow/interface/tools/custom.py +++ b/src/backend/base/langflow/interface/tools/custom.py @@ -1,10 +1,9 @@ from typing import Callable, Optional - -from langchain.agents.tools import Tool from pydantic.v1 import BaseModel, validator from langflow.interface.custom.utils import get_function from langflow.utils import validate +from langchain_core.tools import Tool class Function(BaseModel): diff --git a/src/backend/base/langflow/interface/tools/util.py b/src/backend/base/langflow/interface/tools/util.py index 7c8020aa9..f572efe5e 100644 --- a/src/backend/base/langflow/interface/tools/util.py +++ b/src/backend/base/langflow/interface/tools/util.py @@ -2,8 +2,7 @@ import ast import inspect import textwrap from typing import Dict, Union - -from langchain.agents.tools import Tool +from langchain_core.tools import Tool def get_func_tool_params(func, **kwargs) -> Union[Dict, None]: diff --git a/src/backend/base/langflow/interface/utils.py b/src/backend/base/langflow/interface/utils.py index d4271eabf..252d5f411 100644 --- a/src/backend/base/langflow/interface/utils.py +++ b/src/backend/base/langflow/interface/utils.py @@ -7,12 +7,12 @@ from typing import Dict import yaml from docstring_parser import parse -from langchain.base_language import BaseLanguageModel from langflow.services.chat.config import ChatConfig from langflow.services.deps import get_settings_service from langflow.utils.util import format_dict, get_base_classes, get_default_factory from loguru import logger from PIL.Image import Image +from langchain_core.language_models import BaseLanguageModel def load_file_into_dict(file_path: str) -> dict: diff --git a/src/backend/base/langflow/memory.py b/src/backend/base/langflow/memory.py index 15cf6d6d8..f44958fdd 100644 --- a/src/backend/base/langflow/memory.py +++ b/src/backend/base/langflow/memory.py @@ -1,5 +1,5 @@ import warnings -from typing import Optional, Union +from typing import List, Optional, Union from loguru import logger @@ -60,7 +60,7 @@ def get_messages( return records -def add_messages(records: Union[list[Record], Record]): +def add_messages(records: Union[list[Record], Record], flow_id: Optional[str] = None): """ Add a message to the monitor service. """ @@ -76,7 +76,8 @@ def add_messages(records: Union[list[Record], Record]): messages: list[MessageModel] = [] for record in records: - messages.append(MessageModel.from_record(record)) + record.timestamp = monitor_service.get_timestamp() + messages.append(MessageModel.from_record(record, flow_id=flow_id)) for message in messages: try: @@ -107,8 +108,24 @@ def store_message( session_id: Optional[str] = None, sender: Optional[str] = None, sender_name: Optional[str] = None, -) -> list[Record]: + flow_id: Optional[str] = None, +) -> List[Record]: + """ + Stores a message in the memory. + Args: + message (Union[str, Record]): The message to be stored. It can be either a string or a Record object. + session_id (Optional[str]): The session ID associated with the message. + sender (Optional[str]): The sender ID associated with the message. + sender_name (Optional[str]): The name of the sender associated with the message. + flow_id (Optional[str]): The flow ID associated with the message. When running from the CustomComponent you can access this using `self.graph.flow_id`. + + Returns: + List[Record]: A list of records containing the stored message. + + Raises: + ValueError: If any of the required parameters (session_id, sender, sender_name) is not provided. + """ if not message: warnings.warn("No message provided.") return [] @@ -135,4 +152,4 @@ def store_message( }, ) - return add_messages([record]) + return add_messages([record], flow_id=flow_id) diff --git a/src/backend/base/langflow/processing/base.py b/src/backend/base/langflow/processing/base.py index e11af0a44..35e46a3b2 100644 --- a/src/backend/base/langflow/processing/base.py +++ b/src/backend/base/langflow/processing/base.py @@ -1,11 +1,11 @@ from typing import TYPE_CHECKING, List, Union from langchain.agents.agent import AgentExecutor -from langchain.callbacks.base import BaseCallbackHandler from loguru import logger from langflow.processing.process import fix_memory_inputs, format_actions from langflow.services.deps import get_plugins_service +from langchain_core.callbacks import BaseCallbackHandler if TYPE_CHECKING: from langfuse.callback import CallbackHandler # type: ignore diff --git a/src/backend/base/langflow/processing/load.py b/src/backend/base/langflow/processing/load.py index cf354c3b3..b56f22c81 100644 --- a/src/backend/base/langflow/processing/load.py +++ b/src/backend/base/langflow/processing/load.py @@ -82,6 +82,7 @@ def run_flow_from_json( env_file: Optional[str] = None, cache: Optional[str] = None, disable_logs: Optional[bool] = True, + fallback_to_env_vars: bool = False, ) -> List[RunOutputs]: """ Run a flow from a JSON file or dictionary. @@ -98,6 +99,7 @@ def run_flow_from_json( env_file (Optional[str], optional): The environment file to load. Defaults to None. cache (Optional[str], optional): The cache directory to use. Defaults to None. disable_logs (Optional[bool], optional): Whether to disable logs. Defaults to True. + fallback_to_env_vars (bool, optional): Whether Global Variables should fallback to environment variables if not found. Defaults to False. Returns: List[RunOutputs]: A list of RunOutputs objects representing the results of running the flow. @@ -127,5 +129,6 @@ def run_flow_from_json( input_type=input_type, output_type=output_type, output_component=output_component, + fallback_to_env_vars=fallback_to_env_vars, ) return result diff --git a/src/backend/base/langflow/processing/process.py b/src/backend/base/langflow/processing/process.py index 2d8356159..326e8ca3d 100644 --- a/src/backend/base/langflow/processing/process.py +++ b/src/backend/base/langflow/processing/process.py @@ -2,7 +2,6 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union from langchain.agents import AgentExecutor -from langchain.schema import AgentAction from loguru import logger from pydantic import BaseModel @@ -13,6 +12,7 @@ from langflow.interface.run import get_memory_key, update_memory_keys from langflow.schema.graph import InputValue, Tweaks from langflow.schema.schema import INPUT_FIELD_NAME from langflow.services.session.service import SessionService +from langchain_core.agents import AgentAction if TYPE_CHECKING: @@ -175,6 +175,7 @@ def run_graph( input_value: str, input_type: str, output_type: str, + fallback_to_env_vars: bool = False, output_component: Optional[str] = None, ) -> List[RunOutputs]: """ @@ -218,6 +219,7 @@ def run_graph( outputs or [], stream=False, session_id="", + fallback_to_env_vars=fallback_to_env_vars, ) return run_outputs diff --git a/src/backend/base/langflow/schema/schema.py b/src/backend/base/langflow/schema/schema.py index 29ab15ede..921bd65b2 100644 --- a/src/backend/base/langflow/schema/schema.py +++ b/src/backend/base/langflow/schema/schema.py @@ -1,10 +1,10 @@ import copy +import json from typing import Literal, Optional, cast from langchain_core.documents import Document from langchain_core.messages import AIMessage, BaseMessage, HumanMessage from pydantic import BaseModel, model_validator -from langchain_core.messages import HumanMessage, AIMessage class Record(BaseModel): @@ -163,23 +163,15 @@ class Record(BaseModel): # Create a new Record object with a deep copy of the data dictionary return Record(data=copy.deepcopy(self.data, memo), text_key=self.text_key, default_value=self.default_value) - def __str__(self) -> str: - """ - Returns a string representation of the Record, including text and data. - """ - # Assuming a method to dump model data as JSON string exists. - # If it doesn't, you might need to implement it or use json.dumps() directly. - # build the string considering all keys in the data dictionary - prefix = "Record(" - suffix = ")" - text = f"text_key={self.text_key}, " - text += ", ".join([f"{k}={v}" for k, v in self.data.items()]) - return prefix + text + suffix - # check which attributes the Record has by checking the keys in the data dictionary def __dir__(self): return super().__dir__() + list(self.data.keys()) + def __str__(self) -> str: + # return a JSON string representation of the Record atributes + + return json.dumps(self.data) + INPUT_FIELD_NAME = "input_value" diff --git a/src/backend/base/langflow/services/database/models/__init__.py b/src/backend/base/langflow/services/database/models/__init__.py index 1f19435bd..ce12a6fce 100644 --- a/src/backend/base/langflow/services/database/models/__init__.py +++ b/src/backend/base/langflow/services/database/models/__init__.py @@ -1,6 +1,7 @@ from .api_key import ApiKey from .flow import Flow +from .folder import Folder from .user import User from .variable import Variable -__all__ = ["Flow", "User", "ApiKey", "Variable"] +__all__ = ["Flow", "User", "ApiKey", "Variable", "Folder"] diff --git a/src/backend/base/langflow/services/database/models/flow/model.py b/src/backend/base/langflow/services/database/models/flow/model.py index 42cd9277d..17b5e8931 100644 --- a/src/backend/base/langflow/services/database/models/flow/model.py +++ b/src/backend/base/langflow/services/database/models/flow/model.py @@ -13,6 +13,7 @@ from sqlmodel import JSON, Column, Field, Relationship, SQLModel from langflow.schema.schema import Record if TYPE_CHECKING: + from langflow.services.database.models.folder import Folder from langflow.services.database.models.user import User @@ -24,7 +25,7 @@ class FlowBase(SQLModel): data: Optional[Dict] = Field(default=None, nullable=True) is_component: Optional[bool] = Field(default=False, nullable=True) updated_at: Optional[datetime] = Field(default_factory=lambda: datetime.now(timezone.utc), nullable=True) - folder: Optional[str] = Field(default=None, nullable=True) + folder_id: Optional[UUID] = Field(default=None, nullable=True) @field_validator("icon_bg_color") def validate_icon_bg_color(cls, v): @@ -112,6 +113,8 @@ class Flow(FlowBase, table=True): data: Optional[Dict] = Field(default=None, sa_column=Column(JSON)) user_id: Optional[UUID] = Field(index=True, foreign_key="user.id", nullable=True) user: "User" = Relationship(back_populates="flows") + folder_id: Optional[UUID] = Field(default=None, foreign_key="folder.id", nullable=True, index=True) + folder: Optional["Folder"] = Relationship(back_populates="flows") def to_record(self): serialized = self.model_dump() @@ -128,14 +131,17 @@ class Flow(FlowBase, table=True): class FlowCreate(FlowBase): user_id: Optional[UUID] = None + folder_id: Optional[UUID] = None class FlowRead(FlowBase): id: UUID user_id: Optional[UUID] = Field() + folder_id: Optional[UUID] = Field() class FlowUpdate(SQLModel): name: Optional[str] = None description: Optional[str] = None data: Optional[Dict] = None + folder_id: Optional[UUID] = None diff --git a/src/backend/base/langflow/services/database/models/folder/__init__.py b/src/backend/base/langflow/services/database/models/folder/__init__.py new file mode 100644 index 000000000..e1d7e97b7 --- /dev/null +++ b/src/backend/base/langflow/services/database/models/folder/__init__.py @@ -0,0 +1,3 @@ +from .model import Folder, FolderCreate, FolderRead, FolderUpdate + +__all__ = ["Folder", "FolderCreate", "FolderRead", "FolderUpdate"] diff --git a/src/backend/base/langflow/services/database/models/folder/constants.py b/src/backend/base/langflow/services/database/models/folder/constants.py new file mode 100644 index 000000000..df71e9edf --- /dev/null +++ b/src/backend/base/langflow/services/database/models/folder/constants.py @@ -0,0 +1,2 @@ +DEFAULT_FOLDER_DESCRIPTION = "Manage your personal projects. Download and upload entire collections." +DEFAULT_FOLDER_NAME = "My Projects" diff --git a/src/backend/base/langflow/services/database/models/folder/model.py b/src/backend/base/langflow/services/database/models/folder/model.py new file mode 100644 index 000000000..6ce038c63 --- /dev/null +++ b/src/backend/base/langflow/services/database/models/folder/model.py @@ -0,0 +1,55 @@ +from typing import TYPE_CHECKING, List, Optional +from uuid import UUID, uuid4 + +from sqlmodel import Field, Relationship, SQLModel + +from langflow.services.database.models.flow.model import FlowRead + +if TYPE_CHECKING: + from langflow.services.database.models.flow.model import Flow + from langflow.services.database.models.user.model import User + + +class FolderBase(SQLModel): + name: str = Field(index=True) + description: Optional[str] = Field(default=None) + + +class Folder(FolderBase, table=True): + id: Optional[UUID] = Field(default_factory=uuid4, primary_key=True) + parent_id: Optional[UUID] = Field(default=None, foreign_key="folder.id") + + parent: Optional["Folder"] = Relationship( + back_populates="children", + sa_relationship_kwargs=dict(remote_side="Folder.id"), + ) + children: List["Folder"] = Relationship(back_populates="parent") + user_id: Optional[UUID] = Field(default=None, foreign_key="user.id") + user: "User" = Relationship(back_populates="folders") + flows: List["Flow"] = Relationship( + back_populates="folder", sa_relationship_kwargs={"cascade": "all, delete, delete-orphan"} + ) + + +class FolderCreate(FolderBase): + components_list: Optional[List[UUID]] = None + flows_list: Optional[List[UUID]] = None + + +class FolderRead(FolderBase): + id: UUID + parent_id: Optional[UUID] = Field() + + +class FolderReadWithFlows(FolderBase): + id: UUID + parent_id: Optional[UUID] = Field() + flows: List["FlowRead"] = Field(default=[]) + + +class FolderUpdate(SQLModel): + name: Optional[str] = None + description: Optional[str] = None + parent_id: Optional[UUID] = None + components: List[UUID] = Field(default_factory=list) + flows: List[UUID] = Field(default_factory=list) diff --git a/src/backend/base/langflow/services/database/models/folder/utils.py b/src/backend/base/langflow/services/database/models/folder/utils.py new file mode 100644 index 000000000..446efb029 --- /dev/null +++ b/src/backend/base/langflow/services/database/models/folder/utils.py @@ -0,0 +1,33 @@ +from typing import TYPE_CHECKING +from uuid import UUID + +from sqlmodel import Session, and_, select, update + +from langflow.services.database.models.flow.model import Flow + +from .constants import DEFAULT_FOLDER_DESCRIPTION, DEFAULT_FOLDER_NAME +from .model import Folder + +if TYPE_CHECKING: + pass + + +def create_default_folder_if_it_doesnt_exist(session: Session, user_id: UUID): + folder = session.exec(select(Folder).where(Folder.user_id == user_id)).first() + if not folder: + folder = Folder(name=DEFAULT_FOLDER_NAME, user_id=user_id, description=DEFAULT_FOLDER_DESCRIPTION) + session.add(folder) + session.commit() + session.refresh(folder) + session.exec( + update(Flow) # type: ignore + .where( + and_( + Flow.folder_id == None, # type: ignore # noqa + Flow.user_id == user_id, + ) + ) + .values(folder_id=folder.id) + ) + session.commit() + return folder diff --git a/src/backend/base/langflow/services/database/models/user/model.py b/src/backend/base/langflow/services/database/models/user/model.py index 491ae4efc..dfc978c27 100644 --- a/src/backend/base/langflow/services/database/models/user/model.py +++ b/src/backend/base/langflow/services/database/models/user/model.py @@ -8,6 +8,7 @@ if TYPE_CHECKING: from langflow.services.database.models.api_key import ApiKey from langflow.services.database.models.variable import Variable from langflow.services.database.models.flow import Flow + from langflow.services.database.models.folder import Folder class User(SQLModel, table=True): @@ -30,6 +31,10 @@ class User(SQLModel, table=True): back_populates="user", sa_relationship_kwargs={"cascade": "delete"}, ) + folders: list["Folder"] = Relationship( + back_populates="user", + sa_relationship_kwargs={"cascade": "delete"}, + ) class UserCreate(SQLModel): diff --git a/src/backend/base/langflow/services/monitor/schema.py b/src/backend/base/langflow/services/monitor/schema.py index 80636a554..e7bc7a963 100644 --- a/src/backend/base/langflow/services/monitor/schema.py +++ b/src/backend/base/langflow/services/monitor/schema.py @@ -2,15 +2,16 @@ import json from datetime import datetime from typing import TYPE_CHECKING, Any, Optional -from pydantic import BaseModel, Field, field_serializer, validator +from pydantic import BaseModel, Field, field_serializer, field_validator if TYPE_CHECKING: from langflow.schema import Record class TransactionModel(BaseModel): - id: Optional[int] = Field(default=None, alias="id") + index: Optional[int] = Field(default=None) timestamp: Optional[datetime] = Field(default_factory=datetime.now, alias="timestamp") + flow_id: str source: str target: str target_args: dict @@ -22,15 +23,53 @@ class TransactionModel(BaseModel): populate_by_name = True # validate target_args in case it is a JSON - @validator("target_args", pre=True) + @field_validator("target_args", mode="before") def validate_target_args(cls, v): if isinstance(v, str): return json.loads(v) return v + @field_serializer("target_args") + def serialize_target_args(v): + if isinstance(v, dict): + return json.dumps(v) + return v + + +class TransactionModelResponse(BaseModel): + index: Optional[int] = Field(default=None) + timestamp: Optional[datetime] = Field(default_factory=datetime.now, alias="timestamp") + flow_id: str + source: str + target: str + target_args: dict + status: str + error: Optional[str] = None + + class Config: + from_attributes = True + populate_by_name = True + + # validate target_args in case it is a JSON + @field_validator("target_args", mode="before") + def validate_target_args(cls, v): + if isinstance(v, str): + return json.loads(v) + return v + + @field_validator("index", mode="before") + def validate_id(cls, v): + if isinstance(v, float): + try: + return int(v) + except ValueError: + return None + return v + class MessageModel(BaseModel): - id: Optional[int] = Field(default=None, alias="id") + index: Optional[int] = Field(default=None) + flow_id: Optional[str] = Field(default=None, alias="flow_id") timestamp: datetime = Field(default_factory=datetime.now) sender: str sender_name: str @@ -42,14 +81,14 @@ class MessageModel(BaseModel): from_attributes = True populate_by_name = True - @validator("artifacts", pre=True) + @field_validator("artifacts", mode="before") def validate_target_args(cls, v): if isinstance(v, str): return json.loads(v) return v @classmethod - def from_record(cls, record: "Record"): + def from_record(cls, record: "Record", flow_id: Optional[str] = None): # first check if the record has all the required fields if not record.data or ("sender" not in record.data and "sender_name" not in record.data): raise ValueError("The record does not have the required fields 'sender' and 'sender_name' in the data.") @@ -59,9 +98,30 @@ class MessageModel(BaseModel): message=record.text, session_id=record.session_id, artifacts=record.artifacts or {}, + timestamp=record.timestamp, + flow_id=flow_id, ) +class MessageModelResponse(MessageModel): + index: Optional[int] = Field(default=None) + + @field_validator("artifacts", mode="before") + def serialize_artifacts(v): + if isinstance(v, str): + return json.loads(v) + return v + + @field_validator("index", mode="before") + def validate_id(cls, v): + if isinstance(v, float): + try: + return int(v) + except ValueError: + return None + return v + + class VertexBuildModel(BaseModel): index: Optional[int] = Field(default=None, alias="index", exclude=True) id: Optional[str] = Field(default=None, alias="id") @@ -86,9 +146,11 @@ class VertexBuildModel(BaseModel): elif isinstance(value, list) and all(isinstance(i, BaseModel) for i in value): v[key] = [i.model_dump() for i in value] return json.dumps(v) + elif isinstance(v, BaseModel): + return v.model_dump_json() return v - @validator("params", pre=True) + @field_validator("params", mode="before") def validate_params(cls, v): if isinstance(v, str): try: @@ -103,16 +165,18 @@ class VertexBuildModel(BaseModel): return json.dumps([i.model_dump() for i in v]) return v - @validator("data", pre=True) + @field_validator("data", mode="before") def validate_data(cls, v): if isinstance(v, str): return json.loads(v) return v - @validator("artifacts", pre=True) + @field_validator("artifacts", mode="before") def validate_artifacts(cls, v): if isinstance(v, str): return json.loads(v) + elif isinstance(v, BaseModel): + return v.model_dump() return v diff --git a/src/backend/base/langflow/services/monitor/service.py b/src/backend/base/langflow/services/monitor/service.py index e3d56db52..9fce7dd59 100644 --- a/src/backend/base/langflow/services/monitor/service.py +++ b/src/backend/base/langflow/services/monitor/service.py @@ -21,7 +21,7 @@ class MonitorService(Service): self.settings_service = settings_service self.base_cache_dir = Path(user_cache_dir("langflow")) self.db_path = self.base_cache_dir / "monitor.duckdb" - self.table_map = { + self.table_map: dict[str, type[TransactionModel | MessageModel | VertexBuildModel]] = { "transactions": TransactionModel, "messages": MessageModel, "vertex_builds": VertexBuildModel, @@ -69,7 +69,7 @@ class MonitorService(Service): valid: Optional[bool] = None, order_by: Optional[str] = "timestamp", ): - query = "SELECT id, flow_id, valid, params, data, artifacts, timestamp FROM vertex_builds" + query = "SELECT index,flow_id, valid, params, data, artifacts, timestamp FROM vertex_builds" conditions = [] if flow_id: conditions.append(f"flow_id = '{flow_id}'") @@ -109,6 +109,7 @@ class MonitorService(Service): def get_messages( self, + flow_id: Optional[str] = None, sender: Optional[str] = None, sender_name: Optional[str] = None, session_id: Optional[str] = None, @@ -116,7 +117,7 @@ class MonitorService(Service): order: Optional[str] = "DESC", limit: Optional[int] = None, ): - query = "SELECT sender_name, sender, session_id, message, artifacts, timestamp FROM messages" + query = "SELECT index, flow_id, sender_name, sender, session_id, message, artifacts, timestamp FROM messages" conditions = [] if sender: conditions.append(f"sender = '{sender}'") @@ -124,6 +125,8 @@ class MonitorService(Service): conditions.append(f"sender_name = '{sender_name}'") if session_id: conditions.append(f"session_id = '{session_id}'") + if flow_id: + conditions.append(f"flow_id = '{flow_id}'") if conditions: query += " WHERE " + " AND ".join(conditions) @@ -146,8 +149,9 @@ class MonitorService(Service): target: Optional[str] = None, status: Optional[str] = None, order_by: Optional[str] = "timestamp", + flow_id: Optional[str] = None, ): - query = "SELECT source, target, target_args, status, error, timestamp FROM transactions" + query = "SELECT index,flow_id, source, target, target_args, status, error, timestamp FROM transactions" conditions = [] if source: conditions.append(f"source = '{source}'") @@ -155,6 +159,8 @@ class MonitorService(Service): conditions.append(f"target = '{target}'") if status: conditions.append(f"status = '{status}'") + if flow_id: + conditions.append(f"flow_id = '{flow_id}'") if conditions: query += " WHERE " + " AND ".join(conditions) diff --git a/src/backend/base/langflow/services/monitor/utils.py b/src/backend/base/langflow/services/monitor/utils.py index 7b6948c1a..aec5ae0c6 100644 --- a/src/backend/base/langflow/services/monitor/utils.py +++ b/src/backend/base/langflow/services/monitor/utils.py @@ -61,7 +61,7 @@ def drop_and_create_table_if_schema_mismatch(db_path: str, table_name: str, mode if current_schema != desired_schema: # If they don't match, drop the existing table and create a new one conn.execute(f"DROP TABLE IF EXISTS {table_name}") - if "id" in desired_schema.keys(): + if INDEX_KEY in desired_schema.keys(): # Create a sequence for the id column try: conn.execute(f"CREATE SEQUENCE seq_{table_name} START 1;") @@ -91,7 +91,7 @@ def add_row_to_table( columns = ", ".join(keys) values_placeholders = ", ".join(["?" for _ in keys]) - values = list(validated_dict.values()) + values = [validated_dict[key] for key in keys] # Create the insert statement insert_sql = f"INSERT INTO {table_name} ({columns}) VALUES ({values_placeholders})" @@ -104,7 +104,7 @@ def add_row_to_table( column_error_message = "" for key, value in validated_dict.items(): logger.error(f"{key}: {type(value)}") - if value in str(e): + if str(value) in str(e): column_error_message = f"Column: {key} Value: {value} Error: {e}" if column_error_message: @@ -119,6 +119,7 @@ async def log_message( message: str, session_id: str, artifacts: Optional[dict] = None, + flow_id: Optional[str] = None, ): try: from langflow.graph.vertex.base import Vertex @@ -134,6 +135,7 @@ async def log_message( "artifacts": artifacts or {}, "session_id": session_id, "timestamp": monitor_service.get_timestamp(), + "flow_id": flow_id, } monitor_service.add_row(table_name="messages", data=row) except Exception as e: diff --git a/src/backend/base/langflow/services/settings/base.py b/src/backend/base/langflow/services/settings/base.py index 300bafd1d..97abf2d2b 100644 --- a/src/backend/base/langflow/services/settings/base.py +++ b/src/backend/base/langflow/services/settings/base.py @@ -7,13 +7,12 @@ from typing import Any, List, Optional, Tuple, Type import orjson import yaml +from langflow.services.settings.constants import VARIABLES_TO_GET_FROM_ENVIRONMENT from loguru import logger -from pydantic import field_validator, validator +from pydantic import field_validator from pydantic.fields import FieldInfo from pydantic_settings import BaseSettings, EnvSettingsSource, PydanticBaseSettingsSource, SettingsConfigDict -from langflow.services.settings.constants import VARIABLES_TO_GET_FROM_ENVIRONMENT - # BASE_COMPONENTS_PATH = str(Path(__file__).parent / "components") BASE_COMPONENTS_PATH = str(Path(__file__).parent.parent.parent / "components") @@ -76,6 +75,10 @@ class Settings(BaseSettings): # Define the default LANGFLOW_DIR CONFIG_DIR: Optional[str] = None + # Define if langflow db should be saved in config dir or + # in the langflow directory + SAVE_DB_IN_CONFIG_DIR: bool = False + """Define if langflow database should be saved in LANGFLOW_CONFIG_DIR or in the langflow directory (i.e. in the package directory).""" DEV: bool = False DATABASE_URL: Optional[str] = None @@ -108,12 +111,16 @@ class Settings(BaseSettings): CELERY_ENABLED: bool = False + fallback_to_env_var: bool = True + """If set to True, Global Variables set in the UI will fallback to a environment variable + with the same name in case Langflow fails to retrieve the variable value.""" + store_environment_variables: bool = True """Whether to store environment variables as Global Variables in the database.""" variables_to_get_from_environment: list[str] = VARIABLES_TO_GET_FROM_ENVIRONMENT """List of environment variables to get from the environment and store in the database.""" - @validator("CONFIG_DIR", pre=True, allow_reuse=True) + @field_validator("CONFIG_DIR", mode="before") def set_langflow_dir(cls, value): if not value: from platformdirs import user_cache_dir @@ -136,8 +143,8 @@ class Settings(BaseSettings): return str(value) - @validator("DATABASE_URL", pre=True) - def set_database_url(cls, value, values): + @field_validator("DATABASE_URL", mode="before") + def set_database_url(cls, value, info): if not value: logger.debug("No database_url provided, trying LANGFLOW_DATABASE_URL env variable") if langflow_database_url := os.getenv("LANGFLOW_DATABASE_URL"): @@ -148,29 +155,36 @@ class Settings(BaseSettings): # Originally, we used sqlite:///./langflow.db # so we need to migrate to the new format # if there is a database in that location - if not values["CONFIG_DIR"]: + if not info.data["CONFIG_DIR"]: raise ValueError("CONFIG_DIR not set, please set it or provide a DATABASE_URL") from langflow.version import is_pre_release # type: ignore + if info.data["SAVE_DB_IN_CONFIG_DIR"]: + database_dir = info.data["CONFIG_DIR"] + logger.debug(f"Saving database to CONFIG_DIR: {database_dir}") + else: + database_dir = Path(__file__).parent.parent.parent.resolve() + logger.debug(f"Saving database to langflow directory: {database_dir}") + pre_db_file_name = "langflow-pre.db" db_file_name = "langflow.db" - new_pre_path = f"{values['CONFIG_DIR']}/{pre_db_file_name}" - new_path = f"{values['CONFIG_DIR']}/{db_file_name}" + new_pre_path = f"{database_dir}/{pre_db_file_name}" + new_path = f"{database_dir}/{db_file_name}" final_path = None if is_pre_release: if Path(new_pre_path).exists(): final_path = new_pre_path - elif Path(new_path).exists(): + elif Path(new_path).exists() and info.data["SAVE_DB_IN_CONFIG_DIR"]: # We need to copy the current db to the new location logger.debug("Copying existing database to new location") copy2(new_path, new_pre_path) logger.debug(f"Copied existing database to {new_pre_path}") - elif Path(f"./{db_file_name}").exists(): + elif Path(f"./{db_file_name}").exists() and info.data["SAVE_DB_IN_CONFIG_DIR"]: logger.debug("Copying existing database to new location") copy2(f"./{db_file_name}", new_pre_path) logger.debug(f"Copied existing database to {new_pre_path}") else: - logger.debug(f"Database already exists at {new_pre_path}, using it") + logger.debug(f"Creating new database at {new_pre_path}") final_path = new_pre_path else: if Path(new_path).exists(): @@ -311,3 +325,6 @@ def load_settings_from_yaml(file_path: str) -> Settings: logger.debug(f"Loading {len(settings_dict[key])} {key} from {file_path}") return Settings(**settings_dict) + return Settings(**settings_dict) + return Settings(**settings_dict) + return Settings(**settings_dict) diff --git a/src/backend/base/langflow/services/settings/service.py b/src/backend/base/langflow/services/settings/service.py index a66888924..160c266ec 100644 --- a/src/backend/base/langflow/services/settings/service.py +++ b/src/backend/base/langflow/services/settings/service.py @@ -1,11 +1,10 @@ import os import yaml -from loguru import logger - from langflow.services.base import Service from langflow.services.settings.auth import AuthSettings from langflow.services.settings.base import Settings +from loguru import logger class SettingsService(Service): @@ -31,7 +30,7 @@ class SettingsService(Service): for key in settings_dict: if key not in Settings.model_fields.keys(): - raise KeyError(f"Key {key} not found in settings") + logger.warning(f"Key {key} not found in settings") logger.debug(f"Loading {len(settings_dict[key])} {key} from {file_path}") settings = Settings(**settings_dict) diff --git a/src/backend/base/langflow/template/frontend_node/textsplitters.py b/src/backend/base/langflow/template/frontend_node/textsplitters.py index eb302e996..8fc5620d2 100644 --- a/src/backend/base/langflow/template/frontend_node/textsplitters.py +++ b/src/backend/base/langflow/template/frontend_node/textsplitters.py @@ -1,7 +1,6 @@ -from langchain.text_splitter import Language - from langflow.template.field.base import TemplateField from langflow.template.frontend_node.base import FrontendNode +from langchain_text_splitters import Language class TextSplittersFrontendNode(FrontendNode): diff --git a/src/backend/base/langflow/utils/schemas.py b/src/backend/base/langflow/utils/schemas.py index 3e6f17a5a..fbbec2429 100644 --- a/src/backend/base/langflow/utils/schemas.py +++ b/src/backend/base/langflow/utils/schemas.py @@ -45,6 +45,12 @@ class ChatOutputResponse(BaseModel): return self +class RecordOutputResponse(BaseModel): + """Record output response schema.""" + + records: List[Optional[Dict]] + + class ContainsEnumMeta(enum.EnumMeta): def __contains__(cls, item): try: diff --git a/src/backend/base/poetry.lock b/src/backend/base/poetry.lock index 54b3145e0..b1607cf7e 100644 --- a/src/backend/base/poetry.lock +++ b/src/backend/base/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohttp" @@ -131,13 +131,13 @@ tz = ["backports.zoneinfo"] [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] @@ -545,6 +545,26 @@ files = [ graph = ["objgraph (>=1.7.2)"] profile = ["gprof2dot (>=2022.7.29)"] +[[package]] +name = "dnspython" +version = "2.6.1" +description = "DNS toolkit" +optional = false +python-versions = ">=3.8" +files = [ + {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, + {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, +] + +[package.extras] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] +dnssec = ["cryptography (>=41)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] +doq = ["aioquic (>=0.9.25)"] +idna = ["idna (>=3.6)"] +trio = ["trio (>=0.23)"] +wmi = ["wmi (>=1.5.1)"] + [[package]] name = "docstring-parser" version = "0.15" @@ -558,58 +578,58 @@ files = [ [[package]] name = "duckdb" -version = "0.10.2" +version = "0.10.3" description = "DuckDB in-process database" optional = false python-versions = ">=3.7.0" files = [ - {file = "duckdb-0.10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3891d3ac03e12a3e5c43afa3020fe701f64060f52d25f429a1ed7b5d914368d3"}, - {file = "duckdb-0.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4f63877651f1fb940e049dc53038eb763856616319acf4f892b1c3ed074f5ab0"}, - {file = "duckdb-0.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:06e3a36f04f4d98d2c0bbdd63e517cfbe114a795306e26ec855e62e076af5043"}, - {file = "duckdb-0.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf5f95ad5b75c8e65c6508b4df02043dd0b9d97712b9a33236ad77c388ce7861"}, - {file = "duckdb-0.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ff62bc98278c98fecbd6eecec5d698ad41ebd654110feaadbf8ac8bb59b1ecf"}, - {file = "duckdb-0.10.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cceede13fde095c23cf9a53adf7c414c7bfb21b9a7aa6a4836014fdbecbfca70"}, - {file = "duckdb-0.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:acdfff60b7efccd7f731213a9795851256249dfacf80367074b2b2e144f716dd"}, - {file = "duckdb-0.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:4a5d5655cf0bdaf664a6f332afe465e02b08cef715548a0983bb7aef48da06a6"}, - {file = "duckdb-0.10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a9d15842876d18763e085648656cccc7660a215d16254906db5c4471be2c7732"}, - {file = "duckdb-0.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c88cdcdc8452c910e4298223e7d9fca291534ff5aa36090aa49c9e6557550b13"}, - {file = "duckdb-0.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:364cd6f5dc8a1010d144d08c410ba9a74c521336ee5bda84fabc6616216a6d6a"}, - {file = "duckdb-0.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c57c11d1060296f5e9ebfb5bb7e5521e0d77912e8f9ff43c90240c3311e9de9"}, - {file = "duckdb-0.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:186d86b8dda8e1076170eb770bb2bb73ea88ca907d92885c9695d6515207b205"}, - {file = "duckdb-0.10.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f65b62f31c6bff21afc0261cfe28d238b8f34ec78f339546b12f4740c39552a"}, - {file = "duckdb-0.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a860d7466a5c93714cdd94559ce9e1db2ab91914f0941c25e5e93d4ebe36a5fa"}, - {file = "duckdb-0.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:33308190e9c7f05a3a0a2d46008a043effd4eae77011869d7c18fb37acdd9215"}, - {file = "duckdb-0.10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3a8b2f1229b4aecb79cd28ffdb99032b1497f0a805d0da1136a9b6115e1afc70"}, - {file = "duckdb-0.10.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d23a6dea61963733a0f45a0d0bbb1361fb2a47410ed5ff308b4a1f869d4eeb6f"}, - {file = "duckdb-0.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:20ee0aa27e688aa52a40b434ec41a50431d0b06edeab88edc2feaca18d82c62c"}, - {file = "duckdb-0.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80a6d43d9044f0997a15a92e0c0ff3afd21151a1e572a92f439cc4f56b7090e1"}, - {file = "duckdb-0.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6934758cacd06029a5c9f54556a43bd277a86757e22bf8d0dd11ca15c1813d1c"}, - {file = "duckdb-0.10.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a11e2d68bd79044eea5486b1cddb5b915115f537e5c74eeb94c768ce30f9f4b"}, - {file = "duckdb-0.10.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0bf58385c43b8e448a2fea7e8729054934bf73ea616d1d7ef8184eda07f975e2"}, - {file = "duckdb-0.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:eae75c7014597ded6e7f6dc51e32d48362a31608acd73e9f795748ee94335a54"}, - {file = "duckdb-0.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62e89deff778a7a86f651802b947a3466425f6cce41e9d7d412d39e492932943"}, - {file = "duckdb-0.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f87e555fd36ec6da316b727a39fb24c53124a797dfa9b451bdea87b2f20a351f"}, - {file = "duckdb-0.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41e8b34b1a944590ebcf82f8cc59d67b084fe99479f048892d60da6c1402c386"}, - {file = "duckdb-0.10.2-cp37-cp37m-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c68c6dde2773774cf2371522a3959ea2716fc2b3a4891d4066f0e426455fe19"}, - {file = "duckdb-0.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ff6a8a0980d0f9398fa461deffa59465dac190d707468478011ea8a5fe1f2c81"}, - {file = "duckdb-0.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:728dd4ff0efda387a424754e5508d4f8c72a272c2d3ccb036a83286f60b46002"}, - {file = "duckdb-0.10.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c461d6b4619e80170044a9eb999bbf4097e330d3a4974ced0a7eaeb79c7c39f6"}, - {file = "duckdb-0.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:909351ff72eb3b50b89761251148d8a186594d8a438e12dcf5494794caff6693"}, - {file = "duckdb-0.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d9eeb8393d69abafd355b869669957eb85b89e4df677e420b9ef0693b7aa6cb4"}, - {file = "duckdb-0.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3102bcf5011e8f82ea3c2bde43108774fe5a283a410d292c0843610ea13e2237"}, - {file = "duckdb-0.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d64d443613e5f16caf7d67102733538c90f7715867c1a98597efd3babca068e3"}, - {file = "duckdb-0.10.2-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cb31398826d1b7473344e5ee8e0f826370c9752549469ba1327042ace9041f80"}, - {file = "duckdb-0.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d09dcec467cd6127d5cc1fb0ce4efbd77e761882d9d772b0f64fc2f79a2a1cde"}, - {file = "duckdb-0.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:82fab1a24faf7c33d8a7afed08b57ee36e8821a3a68a2f1574cd238ea440bba0"}, - {file = "duckdb-0.10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38607e6e6618e8ea28c8d9b67aa9e22cfd6d6d673f2e8ab328bd6e867b697f69"}, - {file = "duckdb-0.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fb0c23bc8c09615bff38aebcf8e92e6ae74959c67b3c9e5b00edddc730bf22be"}, - {file = "duckdb-0.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:00576c11c78c83830ab483bad968e07cd9b5f730e7ffaf5aa5fadee5ac4f71e9"}, - {file = "duckdb-0.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:077db692cdda50c4684ef87dc2a68507665804caa90e539dbe819116bda722ad"}, - {file = "duckdb-0.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca25984ad9f9a04e46e8359f852668c11569534e3bb8424b80be711303ad2314"}, - {file = "duckdb-0.10.2-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a72cc40982c7b92cf555e574618fc711033b013bf258b611ba18d7654c89d8c"}, - {file = "duckdb-0.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27b9efd6e788eb561535fdc0cbc7c74aca1ff39f748b7cfc27aa49b00e22da1"}, - {file = "duckdb-0.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:4800469489bc262dda61a7f1d40acedf67cf2454874e9d8bbf07920dc2b147e6"}, - {file = "duckdb-0.10.2.tar.gz", hash = "sha256:0f609c9d5f941f1ecde810f010dd9321cd406a552c1df20318a13fa64247f67f"}, + {file = "duckdb-0.10.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd25cc8d001c09a19340739ba59d33e12a81ab285b7a6bed37169655e1cefb31"}, + {file = "duckdb-0.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f9259c637b917ca0f4c63887e8d9b35ec248f5d987c886dfc4229d66a791009"}, + {file = "duckdb-0.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b48f5f1542f1e4b184e6b4fc188f497be8b9c48127867e7d9a5f4a3e334f88b0"}, + {file = "duckdb-0.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e327f7a3951ea154bb56e3fef7da889e790bd9a67ca3c36afc1beb17d3feb6d6"}, + {file = "duckdb-0.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d8b20ed67da004b4481973f4254fd79a0e5af957d2382eac8624b5c527ec48c"}, + {file = "duckdb-0.10.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d37680b8d7be04e4709db3a66c8b3eb7ceba2a5276574903528632f2b2cc2e60"}, + {file = "duckdb-0.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d34b86d6a2a6dfe8bb757f90bfe7101a3bd9e3022bf19dbddfa4b32680d26a9"}, + {file = "duckdb-0.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:73b1cb283ca0f6576dc18183fd315b4e487a545667ffebbf50b08eb4e8cdc143"}, + {file = "duckdb-0.10.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d917dde19fcec8cadcbef1f23946e85dee626ddc133e1e3f6551f15a61a03c61"}, + {file = "duckdb-0.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46757e0cf5f44b4cb820c48a34f339a9ccf83b43d525d44947273a585a4ed822"}, + {file = "duckdb-0.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:338c14d8ac53ac4aa9ec03b6f1325ecfe609ceeb72565124d489cb07f8a1e4eb"}, + {file = "duckdb-0.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:651fcb429602b79a3cf76b662a39e93e9c3e6650f7018258f4af344c816dab72"}, + {file = "duckdb-0.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3ae3c73b98b6215dab93cc9bc936b94aed55b53c34ba01dec863c5cab9f8e25"}, + {file = "duckdb-0.10.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56429b2cfe70e367fb818c2be19f59ce2f6b080c8382c4d10b4f90ba81f774e9"}, + {file = "duckdb-0.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b46c02c2e39e3676b1bb0dc7720b8aa953734de4fd1b762e6d7375fbeb1b63af"}, + {file = "duckdb-0.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:bcd460feef56575af2c2443d7394d405a164c409e9794a4d94cb5fdaa24a0ba4"}, + {file = "duckdb-0.10.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e229a7c6361afbb0d0ab29b1b398c10921263c52957aefe3ace99b0426fdb91e"}, + {file = "duckdb-0.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:732b1d3b6b17bf2f32ea696b9afc9e033493c5a3b783c292ca4b0ee7cc7b0e66"}, + {file = "duckdb-0.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f5380d4db11fec5021389fb85d614680dc12757ef7c5881262742250e0b58c75"}, + {file = "duckdb-0.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:468a4e0c0b13c55f84972b1110060d1b0f854ffeb5900a178a775259ec1562db"}, + {file = "duckdb-0.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fa1e7ff8d18d71defa84e79f5c86aa25d3be80d7cb7bc259a322de6d7cc72da"}, + {file = "duckdb-0.10.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ed1063ed97c02e9cf2e7fd1d280de2d1e243d72268330f45344c69c7ce438a01"}, + {file = "duckdb-0.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:22f2aad5bb49c007f3bfcd3e81fdedbc16a2ae41f2915fc278724ca494128b0c"}, + {file = "duckdb-0.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:8f9e2bb00a048eb70b73a494bdc868ce7549b342f7ffec88192a78e5a4e164bd"}, + {file = "duckdb-0.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6c2fc49875b4b54e882d68703083ca6f84b27536d57d623fc872e2f502b1078"}, + {file = "duckdb-0.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a66c125d0c30af210f7ee599e7821c3d1a7e09208196dafbf997d4e0cfcb81ab"}, + {file = "duckdb-0.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d99dd7a1d901149c7a276440d6e737b2777e17d2046f5efb0c06ad3b8cb066a6"}, + {file = "duckdb-0.10.3-cp37-cp37m-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5ec3bbdb209e6095d202202893763e26c17c88293b88ef986b619e6c8b6715bd"}, + {file = "duckdb-0.10.3-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:2b3dec4ef8ed355d7b7230b40950b30d0def2c387a2e8cd7efc80b9d14134ecf"}, + {file = "duckdb-0.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:04129f94fb49bba5eea22f941f0fb30337f069a04993048b59e2811f52d564bc"}, + {file = "duckdb-0.10.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d75d67024fc22c8edfd47747c8550fb3c34fb1cbcbfd567e94939ffd9c9e3ca7"}, + {file = "duckdb-0.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f3796e9507c02d0ddbba2e84c994fae131da567ce3d9cbb4cbcd32fadc5fbb26"}, + {file = "duckdb-0.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:78e539d85ebd84e3e87ec44d28ad912ca4ca444fe705794e0de9be3dd5550c11"}, + {file = "duckdb-0.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a99b67ac674b4de32073e9bc604b9c2273d399325181ff50b436c6da17bf00a"}, + {file = "duckdb-0.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1209a354a763758c4017a1f6a9f9b154a83bed4458287af9f71d84664ddb86b6"}, + {file = "duckdb-0.10.3-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3b735cea64aab39b67c136ab3a571dbf834067f8472ba2f8bf0341bc91bea820"}, + {file = "duckdb-0.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:816ffb9f758ed98eb02199d9321d592d7a32a6cb6aa31930f4337eb22cfc64e2"}, + {file = "duckdb-0.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:1631184b94c3dc38b13bce4045bf3ae7e1b0ecbfbb8771eb8d751d8ffe1b59b3"}, + {file = "duckdb-0.10.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fb98c35fc8dd65043bc08a2414dd9f59c680d7e8656295b8969f3f2061f26c52"}, + {file = "duckdb-0.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e75c9f5b6a92b2a6816605c001d30790f6d67ce627a2b848d4d6040686efdf9"}, + {file = "duckdb-0.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ae786eddf1c2fd003466e13393b9348a44b6061af6fe7bcb380a64cac24e7df7"}, + {file = "duckdb-0.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9387da7b7973707b0dea2588749660dd5dd724273222680e985a2dd36787668"}, + {file = "duckdb-0.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:538f943bf9fa8a3a7c4fafa05f21a69539d2c8a68e557233cbe9d989ae232899"}, + {file = "duckdb-0.10.3-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6930608f35025a73eb94252964f9f19dd68cf2aaa471da3982cf6694866cfa63"}, + {file = "duckdb-0.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:03bc54a9cde5490918aad82d7d2a34290e3dfb78d5b889c6626625c0f141272a"}, + {file = "duckdb-0.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:372b6e3901d85108cafe5df03c872dfb6f0dbff66165a0cf46c47246c1957aa0"}, + {file = "duckdb-0.10.3.tar.gz", hash = "sha256:c5bd84a92bc708d3a6adffe1f554b94c6e76c795826daaaf482afc3d9c636971"}, ] [[package]] @@ -631,18 +651,36 @@ gmpy = ["gmpy"] gmpy2 = ["gmpy2"] [[package]] -name = "emoji" -version = "2.11.1" -description = "Emoji for Python" +name = "email-validator" +version = "2.1.1" +description = "A robust email address syntax and deliverability validation library." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "emoji-2.11.1-py2.py3-none-any.whl", hash = "sha256:b7ba25299bbf520cc8727848ae66b986da32aee27dc2887eaea2bff07226ce49"}, - {file = "emoji-2.11.1.tar.gz", hash = "sha256:062ff0b3154b6219143f8b9f4b3e5c64c35bc2b146e6e2349ab5f29e218ce1ee"}, + {file = "email_validator-2.1.1-py3-none-any.whl", hash = "sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05"}, + {file = "email_validator-2.1.1.tar.gz", hash = "sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84"}, ] +[package.dependencies] +dnspython = ">=2.0.0" +idna = ">=2.0.0" + +[[package]] +name = "emoji" +version = "2.12.1" +description = "Emoji for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "emoji-2.12.1-py3-none-any.whl", hash = "sha256:a00d62173bdadc2510967a381810101624a2f0986145b8da0cffa42e29430235"}, + {file = "emoji-2.12.1.tar.gz", hash = "sha256:4aa0488817691aa58d83764b6c209f8a27c0b3ab3f89d1b8dceca1a62e4973eb"}, +] + +[package.dependencies] +typing-extensions = ">=4.7.0" + [package.extras] -dev = ["coverage", "coveralls", "pytest"] +dev = ["coverage", "pytest (>=7.4.4)"] [[package]] name = "exceptiongroup" @@ -660,23 +698,48 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.110.3" +version = "0.111.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.110.3-py3-none-any.whl", hash = "sha256:fd7600612f755e4050beb74001310b5a7e1796d149c2ee363124abdfa0289d32"}, - {file = "fastapi-0.110.3.tar.gz", hash = "sha256:555700b0159379e94fdbfc6bb66a0f1c43f4cf7060f25239af3d84b63a656626"}, + {file = "fastapi-0.111.0-py3-none-any.whl", hash = "sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0"}, + {file = "fastapi-0.111.0.tar.gz", hash = "sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7"}, ] [package.dependencies] +email_validator = ">=2.0.0" +fastapi-cli = ">=0.0.2" +httpx = ">=0.23.0" +jinja2 = ">=2.11.2" +orjson = ">=3.2.1" pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +python-multipart = ">=0.0.7" starlette = ">=0.37.2,<0.38.0" typing-extensions = ">=4.8.0" +ujson = ">=4.0.1,<4.0.2 || >4.0.2,<4.1.0 || >4.1.0,<4.2.0 || >4.2.0,<4.3.0 || >4.3.0,<5.0.0 || >5.0.0,<5.1.0 || >5.1.0" +uvicorn = {version = ">=0.12.0", extras = ["standard"]} [package.extras] all = ["email_validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +[[package]] +name = "fastapi-cli" +version = "0.0.4" +description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi_cli-0.0.4-py3-none-any.whl", hash = "sha256:a2552f3a7ae64058cdbb530be6fa6dbfc975dc165e4fa66d224c3d396e25e809"}, + {file = "fastapi_cli-0.0.4.tar.gz", hash = "sha256:e2e9ffaffc1f7767f488d6da34b6f5a377751c996f397902eb6abb99a67bde32"}, +] + +[package.dependencies] +typer = ">=0.12.3" + +[package.extras] +standard = ["fastapi", "uvicorn[standard] (>=0.15.0)"] + [[package]] name = "frozenlist" version = "1.4.1" @@ -887,6 +950,54 @@ http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] trio = ["trio (>=0.22.0,<0.26.0)"] +[[package]] +name = "httptools" +version = "0.6.1" +description = "A collection of framework independent HTTP protocol utils." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f"}, + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658"}, + {file = "httptools-0.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d"}, + {file = "httptools-0.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb"}, + {file = "httptools-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf"}, + {file = "httptools-0.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a"}, + {file = "httptools-0.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e"}, + {file = "httptools-0.6.1.tar.gz", hash = "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"}, +] + +[package.extras] +test = ["Cython (>=0.29.24,<0.30.0)"] + [[package]] name = "httpx" version = "0.27.0" @@ -922,6 +1033,23 @@ files = [ {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + [[package]] name = "jq" version = "1.7.0" @@ -1031,22 +1159,20 @@ files = [ [[package]] name = "langchain" -version = "0.1.20" +version = "0.2.1" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain-0.1.20-py3-none-any.whl", hash = "sha256:09991999fbd6c3421a12db3c7d1f52d55601fc41d9b2a3ef51aab2e0e9c38da9"}, - {file = "langchain-0.1.20.tar.gz", hash = "sha256:f35c95eed8c8375e02dce95a34f2fd4856a4c98269d6dc34547a23dba5beab7e"}, + {file = "langchain-0.2.1-py3-none-any.whl", hash = "sha256:3e13bf97c5717bce2c281f5117e8778823e8ccf62d949e73d3869448962b1c97"}, + {file = "langchain-0.2.1.tar.gz", hash = "sha256:5758a315e1ac92eb26dafec5ad0fafa03cafa686aba197d5bb0b1dd28cc03ebe"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" async-timeout = {version = ">=4.0.0,<5.0.0", markers = "python_version < \"3.11\""} -dataclasses-json = ">=0.5.7,<0.7" -langchain-community = ">=0.0.38,<0.1" -langchain-core = ">=0.1.52,<0.2.0" -langchain-text-splitters = ">=0.0.1,<0.1" +langchain-core = ">=0.2.0,<0.3.0" +langchain-text-splitters = ">=0.2.0,<0.3.0" langsmith = ">=0.1.17,<0.2.0" numpy = ">=1,<2" pydantic = ">=1,<3" @@ -1062,28 +1188,29 @@ cli = ["typer (>=0.9.0,<0.10.0)"] cohere = ["cohere (>=4,<6)"] docarray = ["docarray[hnswlib] (>=0.32.0,<0.33.0)"] embeddings = ["sentence-transformers (>=2,<3)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<6)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "langchain-openai (>=0.0.2,<0.1)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<6)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "langchain-openai (>=0.1,<0.2)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] javascript = ["esprima (>=4.0.1,<5.0.0)"] llms = ["clarifai (>=9.1.0)", "cohere (>=4,<6)", "huggingface_hub (>=0,<1)", "manifest-ml (>=0.0.1,<0.0.2)", "nlpcloud (>=1,<2)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "torch (>=1,<3)", "transformers (>=4,<5)"] -openai = ["openai (<2)", "tiktoken (>=0.3.2,<0.6.0)"] +openai = ["openai (<2)", "tiktoken (>=0.7,<1.0)"] qdrant = ["qdrant-client (>=1.3.1,<2.0.0)"] text-helpers = ["chardet (>=5.1.0,<6.0.0)"] [[package]] name = "langchain-community" -version = "0.0.38" +version = "0.2.1" description = "Community contributed LangChain integrations." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_community-0.0.38-py3-none-any.whl", hash = "sha256:ecb48660a70a08c90229be46b0cc5f6bc9f38f2833ee44c57dfab9bf3a2c121a"}, - {file = "langchain_community-0.0.38.tar.gz", hash = "sha256:127fc4b75bc67b62fe827c66c02e715a730fef8fe69bd2023d466bab06b5810d"}, + {file = "langchain_community-0.2.1-py3-none-any.whl", hash = "sha256:b834e2c5ded6903b839fcaf566eee90a0ffae53405a0f7748202725e701d39cd"}, + {file = "langchain_community-0.2.1.tar.gz", hash = "sha256:079942e8f15da975769ccaae19042b7bba5481c42020bbbd7d8cad73a9393261"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" -langchain-core = ">=0.1.52,<0.2.0" +langchain = ">=0.2.0,<0.3.0" +langchain-core = ">=0.2.0,<0.3.0" langsmith = ">=0.1.0,<0.2.0" numpy = ">=1,<2" PyYAML = ">=5.3" @@ -1093,17 +1220,17 @@ tenacity = ">=8.1.0,<9.0.0" [package.extras] cli = ["typer (>=0.9.0,<0.10.0)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "azure-identity (>=1.15.0,<2.0.0)", "azure-search-documents (==11.4.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.6,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cloudpickle (>=2.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "friendli-client (>=1.2.4,<2.0.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "httpx-sse (>=0.4.0,<0.5.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "oracledb (>=2.2.0,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "premai (>=0.3.25,<0.4.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pyjwt (>=2.8.0,<3.0.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "tidb-vector (>=0.0.3,<1.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "vdms (>=0.0.20,<0.0.21)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "azure-identity (>=1.15.0,<2.0.0)", "azure-search-documents (==11.4.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.6,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cloudpathlib (>=0.18,<0.19)", "cloudpickle (>=2.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "friendli-client (>=1.2.4,<2.0.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "httpx-sse (>=0.4.0,<0.5.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "oracledb (>=2.2.0,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "premai (>=0.3.25,<0.4.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pyjwt (>=2.8.0,<3.0.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "tidb-vector (>=0.0.3,<1.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "vdms (>=0.0.20,<0.0.21)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] [[package]] name = "langchain-core" -version = "0.1.52" +version = "0.2.1" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_core-0.1.52-py3-none-any.whl", hash = "sha256:62566749c92e8a1181c255c788548dc16dbc319d896cd6b9c95dc17af9b2a6db"}, - {file = "langchain_core-0.1.52.tar.gz", hash = "sha256:084c3fc452f5a6966c28ab3ec5dbc8b8d26fc3f63378073928f4e29d90b6393f"}, + {file = "langchain_core-0.2.1-py3-none-any.whl", hash = "sha256:3521e1e573988c47399fca9739270c5d34f8ecec147253ad829eb9ff288f76d5"}, + {file = "langchain_core-0.2.1.tar.gz", hash = "sha256:49383126168d934559a543ce812c485048d9e6ac9b6798fbf3d4a72b6bba5b0c"}, ] [package.dependencies] @@ -1119,38 +1246,38 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langchain-experimental" -version = "0.0.58" +version = "0.0.59" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_experimental-0.0.58-py3-none-any.whl", hash = "sha256:106d3bc7df3dd20687378db7534c2fc21e2589201d43de42f832a1e3913dd55b"}, - {file = "langchain_experimental-0.0.58.tar.gz", hash = "sha256:8ef10ff6b39f44ef468f8f21beb3749957d2262ec64d05db2719934936ca0285"}, + {file = "langchain_experimental-0.0.59-py3-none-any.whl", hash = "sha256:d6ceb586c15ad35fc619542e86d01f0984a94985324a78a9ed8cd87615ff265d"}, + {file = "langchain_experimental-0.0.59.tar.gz", hash = "sha256:3a93f5c328f6ee1cd4f9dd8792c535df2d5638cff0d778ee25546804b5282fda"}, ] [package.dependencies] -langchain = ">=0.1.17,<0.2.0" -langchain-core = ">=0.1.52,<0.2.0" +langchain-community = ">=0.2,<0.3" +langchain-core = ">=0.2,<0.3" [package.extras] extended-testing = ["faker (>=19.3.1,<20.0.0)", "jinja2 (>=3,<4)", "pandas (>=2.0.1,<3.0.0)", "presidio-analyzer (>=2.2.352,<3.0.0)", "presidio-anonymizer (>=2.2.352,<3.0.0)", "sentence-transformers (>=2,<3)", "tabulate (>=0.9.0,<0.10.0)", "vowpal-wabbit-next (==0.6.0)"] [[package]] name = "langchain-text-splitters" -version = "0.0.1" +version = "0.2.0" description = "LangChain text splitting utilities" optional = false -python-versions = ">=3.8.1,<4.0" +python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_text_splitters-0.0.1-py3-none-any.whl", hash = "sha256:f5b802f873f5ff6a8b9259ff34d53ed989666ef4e1582e6d1adb3b5520e3839a"}, - {file = "langchain_text_splitters-0.0.1.tar.gz", hash = "sha256:ac459fa98799f5117ad5425a9330b21961321e30bc19a2a2f9f761ddadd62aa1"}, + {file = "langchain_text_splitters-0.2.0-py3-none-any.whl", hash = "sha256:7b4c6a45f8471630a882b321e138329b6897102a5bc62f4c12be1c0b05bb9199"}, + {file = "langchain_text_splitters-0.2.0.tar.gz", hash = "sha256:b32ab4f7397f7d42c1fa3283fefc2547ba356bd63a68ee9092865e5ad83c82f9"}, ] [package.dependencies] -langchain-core = ">=0.1.28,<0.2.0" +langchain-core = ">=0.2.0,<0.3.0" [package.extras] -extended-testing = ["lxml (>=5.1.0,<6.0.0)"] +extended-testing = ["beautifulsoup4 (>=4.12.3,<5.0.0)", "lxml (>=4.9.3,<6.0)"] [[package]] name = "langchainhub" @@ -1169,13 +1296,13 @@ types-requests = ">=2.31.0.2,<3.0.0.0" [[package]] name = "langsmith" -version = "0.1.57" +version = "0.1.63" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.57-py3-none-any.whl", hash = "sha256:dbd83b0944a2fbea4151f0aa053530d93fcf6784a580621bc60633cb890b57dc"}, - {file = "langsmith-0.1.57.tar.gz", hash = "sha256:4682204de19f0218029c2b8445ce2cc3485c8d0df9796b31e2ce4c9051fce365"}, + {file = "langsmith-0.1.63-py3-none-any.whl", hash = "sha256:7810afdf5e3f3b472fc581a29371fb96cd843dde2149e048d1b9610325159d1e"}, + {file = "langsmith-0.1.63.tar.gz", hash = "sha256:a609405b52f6f54df442a142cbf19ab38662d54e532f96028b4c546434d4afdf"}, ] [package.dependencies] @@ -1282,9 +1409,13 @@ files = [ {file = "lxml-5.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:edcfa83e03370032a489430215c1e7783128808fd3e2e0a3225deee278585196"}, {file = "lxml-5.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28bf95177400066596cdbcfc933312493799382879da504633d16cf60bba735b"}, {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a745cc98d504d5bd2c19b10c79c61c7c3df9222629f1b6210c0368177589fb8"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b590b39ef90c6b22ec0be925b211298e810b4856909c8ca60d27ffbca6c12e6"}, {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b336b0416828022bfd5a2e3083e7f5ba54b96242159f83c7e3eebaec752f1716"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:c2faf60c583af0d135e853c86ac2735ce178f0e338a3c7f9ae8f622fd2eb788c"}, {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:4bc6cb140a7a0ad1f7bc37e018d0ed690b7b6520ade518285dc3171f7a117905"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7ff762670cada8e05b32bf1e4dc50b140790909caa8303cfddc4d702b71ea184"}, {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:57f0a0bbc9868e10ebe874e9f129d2917750adf008fe7b9c1598c0fbbfdde6a6"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:a6d2092797b388342c1bc932077ad232f914351932353e2e8706851c870bca1f"}, {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:60499fe961b21264e17a471ec296dcbf4365fbea611bf9e303ab69db7159ce61"}, {file = "lxml-5.2.2-cp37-cp37m-win32.whl", hash = "sha256:d9b342c76003c6b9336a80efcc766748a333573abf9350f4094ee46b006ec18f"}, {file = "lxml-5.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b16db2770517b8799c79aa80f4053cd6f8b716f21f8aca962725a9565ce3ee40"}, @@ -1935,13 +2066,13 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.1" +version = "4.2.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, - {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [package.extras] @@ -2180,13 +2311,13 @@ cli = ["click (>=5.0)"] [[package]] name = "python-engineio" -version = "4.9.0" +version = "4.9.1" description = "Engine.IO server and client for Python" optional = false python-versions = ">=3.6" files = [ - {file = "python-engineio-4.9.0.tar.gz", hash = "sha256:e87459c15638e567711fd156e6f9c4a402668871bed79523f0ecfec744729ec7"}, - {file = "python_engineio-4.9.0-py3-none-any.whl", hash = "sha256:979859bff770725b75e60353d7ae53b397e8b517d05ba76733b404a3dcca3e4c"}, + {file = "python_engineio-4.9.1-py3-none-any.whl", hash = "sha256:f995e702b21f6b9ebde4e2000cd2ad0112ba0e5116ec8d22fe3515e76ba9dddd"}, + {file = "python_engineio-4.9.1.tar.gz", hash = "sha256:7631cf5563086076611e494c643b3fa93dd3a854634b5488be0bba0ef9b99709"}, ] [package.dependencies] @@ -2325,13 +2456,13 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.2" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"}, + {file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"}, ] [package.dependencies] @@ -2515,13 +2646,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "sqlmodel" -version = "0.0.16" +version = "0.0.18" description = "SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness." optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.7" files = [ - {file = "sqlmodel-0.0.16-py3-none-any.whl", hash = "sha256:b972f5d319580d6c37ecc417881f6ec4d1ad3ed3583d0ac0ed43234a28bf605a"}, - {file = "sqlmodel-0.0.16.tar.gz", hash = "sha256:966656f18a8e9a2d159eb215b07fb0cf5222acfae3362707ca611848a8a06bd1"}, + {file = "sqlmodel-0.0.18-py3-none-any.whl", hash = "sha256:d70fdf8fe595e30a918660cf4537b9c5fc2fffdbfcba851a0135de73c3ebcbb7"}, + {file = "sqlmodel-0.0.18.tar.gz", hash = "sha256:2e520efe03810ef2c268a1004cfc5ef8f8a936312232f38d6c8e62c11af2cac3"}, ] [package.dependencies] @@ -2579,13 +2710,13 @@ typing-extensions = ">=3.7.4.3" [[package]] name = "types-requests" -version = "2.31.0.20240406" +version = "2.32.0.20240523" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, - {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, + {file = "types-requests-2.32.0.20240523.tar.gz", hash = "sha256:26b8a6de32d9f561192b9942b41c0ab2d8010df5677ca8aa146289d11d505f57"}, + {file = "types_requests-2.32.0.20240523-py3-none-any.whl", hash = "sha256:f19ed0e2daa74302069bbbbf9e82902854ffa780bc790742a810a9aaa52f65ec"}, ] [package.dependencies] @@ -2593,13 +2724,13 @@ urllib3 = ">=2" [[package]] name = "typing-extensions" -version = "4.11.0" +version = "4.12.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, + {file = "typing_extensions-4.12.0-py3-none-any.whl", hash = "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594"}, + {file = "typing_extensions-4.12.0.tar.gz", hash = "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8"}, ] [[package]] @@ -2628,6 +2759,93 @@ files = [ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] +[[package]] +name = "ujson" +version = "5.10.0" +description = "Ultra fast JSON encoder and decoder for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, + {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51"}, + {file = "ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518"}, + {file = "ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1"}, + {file = "ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f"}, + {file = "ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e"}, + {file = "ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e"}, + {file = "ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f"}, + {file = "ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165"}, + {file = "ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4"}, + {file = "ujson-5.10.0-cp38-cp38-win32.whl", hash = "sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8"}, + {file = "ujson-5.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996"}, + {file = "ujson-5.10.0-cp39-cp39-win32.whl", hash = "sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9"}, + {file = "ujson-5.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7"}, + {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, +] + [[package]] name = "urllib3" version = "2.2.1" @@ -2658,12 +2876,150 @@ files = [ [package.dependencies] click = ">=7.0" +colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} h11 = ">=0.8" +httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} +python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} [package.extras] standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] +[[package]] +name = "uvloop" +version = "0.19.0" +description = "Fast implementation of asyncio event loop on top of libuv" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e"}, + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428"}, + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8"}, + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849"}, + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957"}, + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd"}, + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef"}, + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2"}, + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1"}, + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24"}, + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533"}, + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12"}, + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"}, + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec"}, + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc"}, + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6"}, + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593"}, + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3"}, + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd"}, + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd"}, + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be"}, + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797"}, + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d"}, + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7"}, + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b"}, + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67"}, + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7"}, + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256"}, + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17"}, + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5"}, + {file = "uvloop-0.19.0.tar.gz", hash = "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd"}, +] + +[package.extras] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] + +[[package]] +name = "watchfiles" +version = "0.21.0" +description = "Simple, modern and high performance file watching and code reload in python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "watchfiles-0.21.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa"}, + {file = "watchfiles-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d"}, + {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c"}, + {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9"}, + {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9"}, + {file = "watchfiles-0.21.0-cp310-none-win32.whl", hash = "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293"}, + {file = "watchfiles-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235"}, + {file = "watchfiles-0.21.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7"}, + {file = "watchfiles-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d"}, + {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7"}, + {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0"}, + {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365"}, + {file = "watchfiles-0.21.0-cp311-none-win32.whl", hash = "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400"}, + {file = "watchfiles-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe"}, + {file = "watchfiles-0.21.0-cp311-none-win_arm64.whl", hash = "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078"}, + {file = "watchfiles-0.21.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a"}, + {file = "watchfiles-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7"}, + {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c"}, + {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235"}, + {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7"}, + {file = "watchfiles-0.21.0-cp312-none-win32.whl", hash = "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3"}, + {file = "watchfiles-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094"}, + {file = "watchfiles-0.21.0-cp312-none-win_arm64.whl", hash = "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6"}, + {file = "watchfiles-0.21.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99"}, + {file = "watchfiles-0.21.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765"}, + {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562"}, + {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19"}, + {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0"}, + {file = "watchfiles-0.21.0-cp38-none-win32.whl", hash = "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214"}, + {file = "watchfiles-0.21.0-cp38-none-win_amd64.whl", hash = "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca"}, + {file = "watchfiles-0.21.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e"}, + {file = "watchfiles-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c"}, + {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28"}, + {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6"}, + {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49"}, + {file = "watchfiles-0.21.0-cp39-none-win32.whl", hash = "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94"}, + {file = "watchfiles-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c"}, + {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895"}, + {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85"}, + {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097"}, + {file = "watchfiles-0.21.0.tar.gz", hash = "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + [[package]] name = "websockets" version = "12.0" @@ -2884,4 +3240,4 @@ local = [] [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.13" -content-hash = "200c17e119f7ba7fdb64de320bdf464c65daf06f62bcc41258b32247a99e3dc1" +content-hash = "33e71f349d108a5bc98b0f8cd0f5c14736202f3db30b0ea1acf588163ef5fbe3" diff --git a/src/backend/base/pyproject.toml b/src/backend/base/pyproject.toml index de4935508..c4e11d068 100644 --- a/src/backend/base/pyproject.toml +++ b/src/backend/base/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langflow-base" -version = "0.0.44" +version = "0.0.48" description = "A Python package with a built-in web application" authors = ["Langflow "] maintainers = [ @@ -26,18 +26,18 @@ langflow-base = "langflow.__main__:main" [tool.poetry.dependencies] python = ">=3.10,<3.13" -fastapi = "^0.110.1" +fastapi = "^0.111.0" httpx = "*" uvicorn = "^0.29.0" gunicorn = "^22.0.0" -langchain = "~0.1.16" +langchain = "~0.2.0" langchainhub = "~0.1.15" -sqlmodel = "^0.0.16" +sqlmodel = "^0.0.18" loguru = "^0.7.1" rich = "^13.7.0" langchain-experimental = "*" -pydantic = "^2.5.0" -pydantic-settings = "^2.1.0" +pydantic = "^2.7.0" +pydantic-settings = "^2.2.0" websockets = "*" typer = "^0.12.0" cachetools = "^5.3.1" @@ -56,9 +56,9 @@ duckdb = "^0.10.2" python-socketio = "^5.11.0" python-docx = "^1.1.0" jq = { version = "^1.7.0", markers = "sys_platform != 'win32'" } -pypdf = "^4.1.0" +pypdf = "^4.2.0" nest-asyncio = "^1.6.0" -emoji = "^2.11.0" +emoji = "^2.12.0" cryptography = "^42.0.5" asyncer = "^0.0.5" diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index bfa0919ba..363415ccf 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.2", "dependencies": { "@headlessui/react": "^1.7.17", + "@hookform/resolvers": "^3.3.4", "@million/lint": "^0.0.73", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-checkbox": "^1.0.4", @@ -55,6 +56,7 @@ "react-cookie": "^4.1.1", "react-dom": "^18.2.21", "react-error-boundary": "^4.0.11", + "react-hook-form": "^7.51.4", "react-icons": "^5.0.1", "react-laag": "^2.0.5", "react-markdown": "^8.0.7", @@ -73,10 +75,11 @@ "uuid": "^9.0.0", "vite-plugin-svgr": "^3.2.0", "web-vitals": "^2.1.4", + "zod": "^3.23.7", "zustand": "^4.4.7" }, "devDependencies": { - "@playwright/test": "^1.43.1", + "@playwright/test": "^1.44.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.80", "@tailwindcss/typography": "^0.5.9", @@ -150,6 +153,26 @@ "nun": "bin/nun.mjs" } }, + "node_modules/@axiomhq/js": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@axiomhq/js/-/js-1.0.0-rc.3.tgz", + "integrity": "sha512-Zm10TczcMLounWqC42nMkXQ7XKLqjzLrd5ia022oBKDUZqAFVg2y9d1quQVNV4FlXyg9MKDdfMjpKQRmzEGaog==", + "dependencies": { + "fetch-retry": "^6.0.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@axiomhq/js/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@babel/code-frame": { "version": "7.24.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", @@ -429,6 +452,40 @@ "node": ">=6.9.0" } }, + "node_modules/@clack/core": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.4.tgz", + "integrity": "sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==", + "dependencies": { + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.7.0.tgz", + "integrity": "sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==", + "bundleDependencies": [ + "is-unicode-supported" + ], + "dependencies": { + "@clack/core": "^0.3.3", + "is-unicode-supported": "*", + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts/node_modules/is-unicode-supported": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", @@ -868,9 +925,9 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.1.tgz", - "integrity": "sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", + "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", "dependencies": { "@floating-ui/utils": "^0.2.0" } @@ -885,9 +942,9 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.9.tgz", - "integrity": "sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz", + "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==", "dependencies": { "@floating-ui/dom": "^1.0.0" }, @@ -917,6 +974,14 @@ "react-dom": "^16 || ^17 || ^18" } }, + "node_modules/@hookform/resolvers": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.4.2.tgz", + "integrity": "sha512-1m9uAVIO8wVf7VCDAGsuGA0t6Z3m6jVGAN50HkV9vYLl0yixKK/Z1lr01vaRvYCkIKGoy1noVRxMzQYb4y/j1Q==", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -999,6 +1064,17 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -1034,6 +1110,22 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -1109,6 +1201,25 @@ "node": ">=10" } }, + "node_modules/@million/install": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@million/install/-/install-0.0.3.tgz", + "integrity": "sha512-yK8NgP+73+Tby/bmQ12B96bJ7RjsLazLtFgBed1Fg1WfTCCpHTILq79yQMSD/OWgm1tt1NYV4ELaTRM6wZOeAg==", + "dependencies": { + "@antfu/ni": "^0.21.12", + "@axiomhq/js": "1.0.0-rc.3", + "@babel/core": "^7.24.5", + "@babel/types": "^7.23.6", + "@clack/prompts": "^0.7.0", + "cli-high": "^0.4.1", + "diff": "^5.1.0", + "posthog-node": "^3.6.3", + "xycolors": "^0.1.1" + }, + "bin": { + "install": "bin/index.js" + } + }, "node_modules/@million/lint": { "version": "0.0.73", "resolved": "https://registry.npmjs.org/@million/lint/-/lint-0.0.73.tgz", @@ -3232,14 +3343,14 @@ } }, "node_modules/@swc/core": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.5.6.tgz", - "integrity": "sha512-0UC0NkgWoqd9fkHPn1NTkTsQucW8iaA1fujK2OLGp40Zg5Vr7nrwBlqruX9expVMggS4rv/3vZSAGzRm80VQ/g==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.5.7.tgz", + "integrity": "sha512-U4qJRBefIJNJDRCCiVtkfa/hpiZ7w0R6kASea+/KLp+vkus3zcLSB8Ub8SvKgTIxjWpwsKcZlPf5nrv4ls46SQ==", "dev": true, "hasInstallScript": true, "dependencies": { "@swc/counter": "^0.1.2", - "@swc/types": "^0.1.5" + "@swc/types": "0.1.7" }, "engines": { "node": ">=10" @@ -3249,16 +3360,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.5.6", - "@swc/core-darwin-x64": "1.5.6", - "@swc/core-linux-arm-gnueabihf": "1.5.6", - "@swc/core-linux-arm64-gnu": "1.5.6", - "@swc/core-linux-arm64-musl": "1.5.6", - "@swc/core-linux-x64-gnu": "1.5.6", - "@swc/core-linux-x64-musl": "1.5.6", - "@swc/core-win32-arm64-msvc": "1.5.6", - "@swc/core-win32-ia32-msvc": "1.5.6", - "@swc/core-win32-x64-msvc": "1.5.6" + "@swc/core-darwin-arm64": "1.5.7", + "@swc/core-darwin-x64": "1.5.7", + "@swc/core-linux-arm-gnueabihf": "1.5.7", + "@swc/core-linux-arm64-gnu": "1.5.7", + "@swc/core-linux-arm64-musl": "1.5.7", + "@swc/core-linux-x64-gnu": "1.5.7", + "@swc/core-linux-x64-musl": "1.5.7", + "@swc/core-win32-arm64-msvc": "1.5.7", + "@swc/core-win32-ia32-msvc": "1.5.7", + "@swc/core-win32-x64-msvc": "1.5.7" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -3270,9 +3381,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.6.tgz", - "integrity": "sha512-U4szqU03cvZOTXug5o+HQbbg16ZGwANtr7LELjw4hmWBqSTcbBVXgocyBMm1L4ngFIsqJc33D+urnnaae/NfMg==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.7.tgz", + "integrity": "sha512-bZLVHPTpH3h6yhwVl395k0Mtx8v6CGhq5r4KQdAoPbADU974Mauz1b6ViHAJ74O0IVE5vyy7tD3OpkQxL/vMDQ==", "cpu": [ "arm64" ], @@ -3286,9 +3397,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.5.6.tgz", - "integrity": "sha512-k4jymBHYkbfGw8DT4bLtVsAckpp2dblyImQHRPScpvDyS4jUo4174mgy/dEnFmZVLTbuZAY876zBQyH+eJ3p4A==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.5.7.tgz", + "integrity": "sha512-RpUyu2GsviwTc2qVajPL0l8nf2vKj5wzO3WkLSHAHEJbiUZk83NJrZd1RVbEknIMO7+Uyjh54hEh8R26jSByaw==", "cpu": [ "x64" ], @@ -3302,9 +3413,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.6.tgz", - "integrity": "sha512-ijwGEdP18vS8YmvHUIfKYDFQ5mQ1GtCxhJp+IcJlrBJE+/eSJVvEVF5WwXFQ+Hzj6tr/OOub8UcRNUaQokjh3A==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.7.tgz", + "integrity": "sha512-cTZWTnCXLABOuvWiv6nQQM0hP6ZWEkzdgDvztgHI/+u/MvtzJBN5lBQ2lue/9sSFYLMqzqff5EHKlFtrJCA9dQ==", "cpu": [ "arm" ], @@ -3318,9 +3429,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.6.tgz", - "integrity": "sha512-6YD942jsDm64wgGNew4Q1Yh8CRI4QKWTqjzCkvlZCGV6aOw5B663WDSnUEKIoN4egeLcvSiqYYGlKMfbkkfNMw==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.7.tgz", + "integrity": "sha512-hoeTJFBiE/IJP30Be7djWF8Q5KVgkbDtjySmvYLg9P94bHg9TJPSQoC72tXx/oXOgXvElDe/GMybru0UxhKx4g==", "cpu": [ "arm64" ], @@ -3334,9 +3445,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.6.tgz", - "integrity": "sha512-Jntdd/HQAgRSQFUpmXjiU00BG08Yl5G1pgYDBXG2mPfkndGGgapRT8JPsnzfQujh9nOdWMIQDnCGU+mB4NY2Dg==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.7.tgz", + "integrity": "sha512-+NDhK+IFTiVK1/o7EXdCeF2hEzCiaRSrb9zD7X2Z7inwWlxAntcSuzZW7Y6BRqGQH89KA91qYgwbnjgTQ22PiQ==", "cpu": [ "arm64" ], @@ -3350,9 +3461,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.6.tgz", - "integrity": "sha512-cdaAyAZJvYCx0u9uadUVe4VVJOEC6GeVO5uTGo/vybCsKFn2Z8WVjGVTeHbxdp7pH2II9MRTySIv1eCCq70SOQ==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.7.tgz", + "integrity": "sha512-25GXpJmeFxKB+7pbY7YQLhWWjkYlR+kHz5I3j9WRl3Lp4v4UD67OGXwPe+DIcHqcouA1fhLhsgHJWtsaNOMBNg==", "cpu": [ "x64" ], @@ -3366,9 +3477,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.6.tgz", - "integrity": "sha512-mGIs4d6/Hv/5EbP2d+2YNmIj9U5U/6CiPZsTyahQcEl+vJjNsmwDJoLex36LhxoGIUmVbbgk6cHj5DoHWNl0bQ==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.7.tgz", + "integrity": "sha512-0VN9Y5EAPBESmSPPsCJzplZHV26akC0sIgd3Hc/7S/1GkSMoeuVL+V9vt+F/cCuzr4VidzSkqftdP3qEIsXSpg==", "cpu": [ "x64" ], @@ -3382,9 +3493,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.6.tgz", - "integrity": "sha512-ViiS2pUXy/J9RZWJXQJMuDKid0lqH9fu2piFi3IHnMWyyWPla5qHYijkeODwrdBsjc30NAHjV6jfka5SZduqiw==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.7.tgz", + "integrity": "sha512-RtoNnstBwy5VloNCvmvYNApkTmuCe4sNcoYWpmY7C1+bPR+6SOo8im1G6/FpNem8AR5fcZCmXHWQ+EUmRWJyuA==", "cpu": [ "arm64" ], @@ -3398,9 +3509,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.6.tgz", - "integrity": "sha512-Ju5z65Nda8oYjt2Z4CGbuBLxM+98TcewLogutI69rBo5S70xunadp4ANIHcr9fZlTu/IX9mxZmUpOaHtb+/TfA==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.7.tgz", + "integrity": "sha512-Xm0TfvcmmspvQg1s4+USL3x8D+YPAfX2JHygvxAnCJ0EHun8cm2zvfNBcsTlnwYb0ybFWXXY129aq1wgFC9TpQ==", "cpu": [ "ia32" ], @@ -3414,9 +3525,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.6.tgz", - "integrity": "sha512-pkqJsdrgxyFYJA+g9a3zbl+AoxYoBtv+Rji1Fw4+Sq7CsSMWboayWNN5fKRiyi3u3nG8kxqyGi51PsKy2G4Vpg==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.7.tgz", + "integrity": "sha512-tp43WfJLCsKLQKBmjmY/0vv1slVywR5Q4qKjF5OIY8QijaEW7/8VwPyUyVoJZEnDgv9jKtUTG5PzqtIYPZGnyg==", "cpu": [ "x64" ], @@ -3436,9 +3547,9 @@ "dev": true }, "node_modules/@swc/types": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.6.tgz", - "integrity": "sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.7.tgz", + "integrity": "sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ==", "dev": true, "dependencies": { "@swc/counter": "^0.1.3" @@ -4230,9 +4341,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.1.tgz", - "integrity": "sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q==", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", "dev": true }, "node_modules/@types/mathjax": { @@ -4318,12 +4429,12 @@ "dev": true }, "node_modules/@vitejs/plugin-react-swc": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", - "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.0.tgz", + "integrity": "sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==", "dev": true, "dependencies": { - "@swc/core": "^1.3.107" + "@swc/core": "^1.5.7" }, "peerDependencies": { "vite": "^4 || ^5" @@ -4342,9 +4453,9 @@ "optional": true }, "node_modules/ace-builds": { - "version": "1.33.2", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.33.2.tgz", - "integrity": "sha512-uDqCe+XDIdnADaDrA8o+x+qAfbM6uqyDQ43QcE6qC7zBPTvQSMOSPcXW+HvjZhEc2YbVYSaxXJX1qQKPgYqi5w==" + "version": "1.34.0", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.34.0.tgz", + "integrity": "sha512-ZQqoV76wl4guDE5zvEnxCDrvy9gzLAwu7eD4ikYj/Gdlb4+qRLbb+aOFVnweZZRsHh089V0WVaw2NMNuiiEdTw==" }, "node_modules/acorn": { "version": "8.11.3", @@ -4384,16 +4495,16 @@ } }, "node_modules/ag-grid-community": { - "version": "31.3.1", - "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-31.3.1.tgz", - "integrity": "sha512-kKnNxY8UaVoF0aUSdtzK7oGr48Wj+VrdDY5l2p9+HdF0cAo/jBEasuUYR85QbkumNyilI6UbFpO6IyCrjNQ6Iw==" + "version": "31.3.2", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-31.3.2.tgz", + "integrity": "sha512-GxqFRD0OcjaVRE1gwLgoP0oERNPH8Lk8wKJ1txulsxysEQ5dZWHhiIoXXSiHjvOCVMkK/F5qzY6HNrn6VeDMTQ==" }, "node_modules/ag-grid-react": { - "version": "31.3.1", - "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-31.3.1.tgz", - "integrity": "sha512-MP5PhFeRhe1gWNx866Sr1C+IrJcrJ0yj8pM/ls+Be/GNmSyIcmGb0Gwbl19bOSdfL5btTkNmGY/RbwnIO4GoMQ==", + "version": "31.3.2", + "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-31.3.2.tgz", + "integrity": "sha512-SFHN05bsXp901rIT00Fa6iQLCtyavoJiKaXEDUtAU5LMu+GTkjs/FPQBQ8754omgdDFr4NsS3Ri6QbqBne3rug==", "dependencies": { - "ag-grid-community": "31.3.1", + "ag-grid-community": "31.3.2", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -4508,6 +4619,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", "optional": true, "dependencies": { "delegates": "^1.0.0", @@ -4621,9 +4733,9 @@ } }, "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -4810,11 +4922,11 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -4963,9 +5075,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001618", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001618.tgz", - "integrity": "sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==", + "version": "1.0.30001621", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", + "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", "funding": [ { "type": "opencollective", @@ -5118,6 +5230,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-high": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cli-high/-/cli-high-0.4.1.tgz", + "integrity": "sha512-fPbkILfCVG6mfxbsJbJZQsKE5JmfgJNlfBxap52XHXjLwPDhs/OMFVFrNR7bqiavZt2r5A80+wiRHzJyzWqwEQ==", + "hasInstallScript": true, + "dependencies": { + "@clack/prompts": "^0.7.0", + "sugar-high": "^0.6.1", + "xycolors": "^0.1.1", + "yargs": "^17.7.2" + }, + "bin": { + "cli-high": "bin/index.js" + }, + "funding": { + "url": "https://github.com/sponsors/xinyao27" + } + }, "node_modules/cli-spinners": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", @@ -5134,6 +5264,19 @@ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -5787,9 +5930,9 @@ } }, "node_modules/dompurify": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.3.tgz", - "integrity": "sha512-5sOWYSNPaxz6o2MUPvtyxTTqR4D3L77pr5rUQoWgD5ROQtVIZQgJkXbo1DLlK3vj11YGw5+LnF4SYti4gZmwng==" + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.4.tgz", + "integrity": "sha512-2gnshi6OshmuKil8rMZuQCGiUF3cUxHY3NGDzUAdUx/NPEe5DVnO8BDoAQouvgwnx0R/+a6jUn36Z0FSdq8vww==" }, "node_modules/dot-case": { "version": "3.0.4", @@ -5817,9 +5960,9 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/electron-to-chromium": { - "version": "1.4.767", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.767.tgz", - "integrity": "sha512-nzzHfmQqBss7CE3apQHkHjXW77+8w3ubGCIoEijKCJebPufREaFETgGXWTkh32t259F3Kcq+R8MZdFdOJROgYw==" + "version": "1.4.778", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.778.tgz", + "integrity": "sha512-C6q/xcUJf/2yODRxAVCfIk4j3y3LMsD0ehiE2RQNV2cxc8XU62gR6vvYh3+etSUzlgTfil+qDHI1vubpdf0TOA==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -6554,6 +6697,11 @@ "node": "^12.20 || >= 14.13" } }, + "node_modules/fetch-retry": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-6.0.0.tgz", + "integrity": "sha512-BUFj1aMubgib37I3v4q78fYo63Po7t4HUPTpQ6/QE6yK6cIQrP+W43FYToeTEyg5m2Y7eFUtijUuAv/PDlWuag==" + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -6618,9 +6766,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6779,9 +6927,9 @@ } }, "node_modules/framer-motion": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.0.tgz", - "integrity": "sha512-LRfLVPEwtO9IXJCAsWvtj3XZxrdZDcTxNNkZEq30aQ8p7/wimfUkDy67TDWdtzPiyKDkqOHDhaQC6XVrQ4Fh7A==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.6.tgz", + "integrity": "sha512-XUrjjBt57e5YoHQtjwc3eNchFBuHvIgN/cS8SC4oIaAn2J/0+bLanUxXizidJKZVeHJam/JrmMnPRjYMglVn5g==", "dependencies": { "tslib": "^2.4.0" }, @@ -6885,6 +7033,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", "optional": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", @@ -6909,6 +7058,14 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -7885,9 +8042,9 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", + "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -9309,11 +9466,11 @@ ] }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -9321,12 +9478,13 @@ } }, "node_modules/million": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/million/-/million-3.0.6.tgz", - "integrity": "sha512-OLjRVASGOZdyZw2ctBSSOu5kb9PaxafqkueqVvw0iQtUUnTLVRk1EmtqcNAtJWCIm8wn+WGRpDbnp+5Hi8//Kg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/million/-/million-3.1.1.tgz", + "integrity": "sha512-vmI3lyA3IN4QKiB0/M3uDef3lZZvgVUokWtLkc5NvxEnykY+TdSR6xatMMNDJmzMHTneayIOpc/eQu4d9Z/r2w==", "dependencies": { "@babel/core": "^7.23.7", "@babel/types": "^7.23.6", + "@million/install": "^0.0.3", "@rollup/pluginutils": "^5.1.0", "kleur": "^4.1.5", "undici": "^6.3.0", @@ -9650,6 +9808,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", "optional": true, "dependencies": { "are-we-there-yet": "^2.0.0", @@ -10268,9 +10427,9 @@ } }, "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -10810,6 +10969,21 @@ "react": ">=16.13.1" } }, + "node_modules/react-hook-form": { + "version": "7.51.5", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.5.tgz", + "integrity": "sha512-J2ILT5gWx1XUIJRETiA7M19iXHlG74+6O3KApzvqB/w8S5NQR7AbU8HVZrMALdmDgWpRPYiZJl0zx8Z4L2mP6Q==", + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" + } + }, "node_modules/react-icons": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz", @@ -11256,6 +11430,14 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -12130,12 +12312,12 @@ } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.3.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", - "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "version": "10.3.16", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", + "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", + "jackspeak": "^3.1.2", "minimatch": "^9.0.1", "minipass": "^7.0.4", "path-scurry": "^1.11.0" @@ -12158,6 +12340,11 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/sugar-high": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/sugar-high/-/sugar-high-0.6.1.tgz", + "integrity": "sha512-kg1qMW7WwJcueXIlHkChL/p2EWY3gf8rQmP6n5nUq2TWVqatqDTMLvViS9WgAjgyTKH5/3/b8sRwWPOOAo1zMA==" + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -12253,9 +12440,9 @@ } }, "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -12520,9 +12707,9 @@ } }, "node_modules/undici": { - "version": "6.16.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.16.1.tgz", - "integrity": "sha512-NeNiTT7ixpeiL1qOIU/xTVpHpVP0svmI6PwoCKaMGaI5AsHOaRdwqU/f7Fi9eyU4u03nd5U/BC8wmRMnS9nqoA==", + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.1.tgz", + "integrity": "sha512-/0BWqR8rJNRysS5lqVmfc7eeOErcOP4tZpATVjJOojjHZ71gSYVAtFhEmadcIjwMIUehh5NFyKGsXCnXIajtbA==", "engines": { "node": ">=18.17" } @@ -13462,16 +13649,16 @@ } }, "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -13524,62 +13711,35 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", @@ -13636,6 +13796,23 @@ "node": ">=0.4" } }, + "node_modules/xycolors": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/xycolors/-/xycolors-0.1.1.tgz", + "integrity": "sha512-BbRKWpz/87nNH4lXp6TbBFUT0QipzmJI7ksQpSpBb3ny8mGJgkiKk36bIr8VqfyTEhasEBsfbp/Cum37fIHnjA==", + "hasInstallScript": true, + "funding": { + "url": "https://github.com/sponsors/xinyao27" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -13652,6 +13829,31 @@ "node": ">= 14" } }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/src/frontend/package.json b/src/frontend/package.json index d755b70b9..053a246ee 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -1,134 +1,137 @@ { - "name": "langflow", - "version": "0.1.2", - "private": true, - "dependencies": { - "@headlessui/react": "^1.7.17", - "@million/lint": "^0.0.73", - "@radix-ui/react-accordion": "^1.1.2", - "@radix-ui/react-checkbox": "^1.0.4", - "@radix-ui/react-dialog": "^1.0.4", - "@radix-ui/react-dropdown-menu": "^2.0.5", - "@radix-ui/react-form": "^0.0.3", - "@radix-ui/react-icons": "^1.3.0", - "@radix-ui/react-label": "^2.0.2", - "@radix-ui/react-menubar": "^1.0.3", - "@radix-ui/react-popover": "^1.0.6", - "@radix-ui/react-progress": "^1.0.3", - "@radix-ui/react-select": "^2.0.0", - "@radix-ui/react-separator": "^1.0.3", - "@radix-ui/react-slot": "^1.0.2", - "@radix-ui/react-switch": "^1.0.3", - "@radix-ui/react-tabs": "^1.0.4", - "@radix-ui/react-tooltip": "^1.0.6", - "@tabler/icons-react": "^2.32.0", - "@tailwindcss/forms": "^0.5.6", - "@tailwindcss/line-clamp": "^0.4.4", - "@types/axios": "^0.14.0", - "ace-builds": "^1.24.1", - "ag-grid-community": "^31.2.1", - "ag-grid-react": "^31.2.1", - "ansi-to-html": "^0.7.2", - "axios": "^1.5.0", - "base64-js": "^1.5.1", - "class-variance-authority": "^0.6.1", - "clsx": "^1.2.1", - "cmdk": "^1.0.0", - "dompurify": "^3.0.5", - "dotenv": "^16.4.5", - "esbuild": "^0.17.19", - "file-saver": "^2.0.5", - "framer-motion": "^11.0.6", - "lodash": "^4.17.21", - "lucide-react": "^0.331.0", - "million": "^3.0.6", - "moment": "^2.29.4", - "openseadragon": "^4.1.1", - "playwright": "^1.42.0", - "react": "^18.2.21", - "react-ace": "^10.1.0", - "react-cookie": "^4.1.1", - "react-dom": "^18.2.21", - "react-error-boundary": "^4.0.11", - "react-icons": "^5.0.1", - "react-laag": "^2.0.5", - "react-markdown": "^8.0.7", - "react-pdf": "^7.7.1", - "react-router-dom": "^6.15.0", - "react-syntax-highlighter": "^15.5.0", - "react18-json-view": "^0.2.3", - "reactflow": "^11.9.2", - "rehype-mathjax": "^4.0.3", - "remark-gfm": "^3.0.1", - "remark-math": "^5.1.1", - "shadcn-ui": "^0.2.3", - "short-unique-id": "^4.4.4", - "tailwind-merge": "^1.14.0", - "tailwindcss-animate": "^1.0.7", - "uuid": "^9.0.0", - "vite-plugin-svgr": "^3.2.0", - "web-vitals": "^2.1.4", - "zustand": "^4.4.7" - }, - "scripts": { - "dev:docker": "vite --host 0.0.0.0", - "start": "vite", - "build": "vite build", - "serve": "vite preview", - "format": "npx prettier --write \"{docs,src}/**/*.{js,jsx,ts,tsx,json,md}\" --ignore-path .prettierignore", - "type-check": "tsc --noEmit --pretty --project tsconfig.json && vite" - }, - "simple-git-hooks": { - "pre-commit": "npx pretty-quick --staged" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "proxy": "http://127.0.0.1:7860", - "devDependencies": { - "@playwright/test": "^1.43.1", - "@swc/cli": "^0.1.62", - "@swc/core": "^1.3.80", - "@tailwindcss/typography": "^0.5.9", - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/lodash": "^4.14.197", - "@types/node": "^16.18.46", - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", - "@types/uuid": "^9.0.2", - "@vitejs/plugin-react-swc": "^3.3.2", - "autoprefixer": "^10.4.15", - "daisyui": "^4.0.4", - "eslint": "^8.57.0", - "eslint-plugin-node": "^11.1.0", - "postcss": "^8.4.29", - "prettier": "^2.8.8", - "prettier-plugin-organize-imports": "^3.2.3", - "prettier-plugin-tailwindcss": "^0.3.0", - "pretty-quick": "^3.1.3", - "simple-git-hooks": "^2.11.1", - "tailwindcss": "^3.3.3", - "tailwindcss-dotted-background": "^1.1.0", - "typescript": "^5.2.2", - "ua-parser-js": "^1.0.37", - "vite": "^4.5.2" - } + "name": "langflow", + "version": "0.1.2", + "private": true, + "dependencies": { + "@headlessui/react": "^1.7.17", + "@hookform/resolvers": "^3.3.4", + "@million/lint": "^0.0.73", + "@radix-ui/react-accordion": "^1.1.2", + "@radix-ui/react-checkbox": "^1.0.4", + "@radix-ui/react-dialog": "^1.0.4", + "@radix-ui/react-dropdown-menu": "^2.0.5", + "@radix-ui/react-form": "^0.0.3", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-menubar": "^1.0.3", + "@radix-ui/react-popover": "^1.0.6", + "@radix-ui/react-progress": "^1.0.3", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-separator": "^1.0.3", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", + "@radix-ui/react-tabs": "^1.0.4", + "@radix-ui/react-tooltip": "^1.0.6", + "@tabler/icons-react": "^2.32.0", + "@tailwindcss/forms": "^0.5.6", + "@tailwindcss/line-clamp": "^0.4.4", + "@types/axios": "^0.14.0", + "ace-builds": "^1.24.1", + "ag-grid-community": "^31.2.1", + "ag-grid-react": "^31.2.1", + "ansi-to-html": "^0.7.2", + "axios": "^1.5.0", + "base64-js": "^1.5.1", + "class-variance-authority": "^0.6.1", + "clsx": "^1.2.1", + "cmdk": "^1.0.0", + "dompurify": "^3.0.5", + "dotenv": "^16.4.5", + "esbuild": "^0.17.19", + "file-saver": "^2.0.5", + "framer-motion": "^11.0.6", + "lodash": "^4.17.21", + "lucide-react": "^0.331.0", + "million": "^3.0.6", + "moment": "^2.29.4", + "openseadragon": "^4.1.1", + "playwright": "^1.42.0", + "react": "^18.2.21", + "react-ace": "^10.1.0", + "react-cookie": "^4.1.1", + "react-dom": "^18.2.21", + "react-error-boundary": "^4.0.11", + "react-hook-form": "^7.51.4", + "react-icons": "^5.0.1", + "react-laag": "^2.0.5", + "react-markdown": "^8.0.7", + "react-pdf": "^7.7.1", + "react-router-dom": "^6.15.0", + "react-syntax-highlighter": "^15.5.0", + "react18-json-view": "^0.2.3", + "reactflow": "^11.9.2", + "rehype-mathjax": "^4.0.3", + "remark-gfm": "^3.0.1", + "remark-math": "^5.1.1", + "shadcn-ui": "^0.2.3", + "short-unique-id": "^4.4.4", + "tailwind-merge": "^1.14.0", + "tailwindcss-animate": "^1.0.7", + "uuid": "^9.0.0", + "vite-plugin-svgr": "^3.2.0", + "web-vitals": "^2.1.4", + "zod": "^3.23.7", + "zustand": "^4.4.7" + }, + "scripts": { + "dev:docker": "vite --host 0.0.0.0", + "start": "vite", + "build": "vite build", + "serve": "vite preview", + "format": "npx prettier --write \"{docs,src}/**/*.{js,jsx,ts,tsx,json,md}\" --ignore-path .prettierignore", + "type-check": "tsc --noEmit --pretty --project tsconfig.json && vite" + }, + "simple-git-hooks": { + "pre-commit": "npx pretty-quick --staged" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "proxy": "http://127.0.0.1:7860", + "devDependencies": { + "@playwright/test": "^1.44.0", + "@swc/cli": "^0.1.62", + "@swc/core": "^1.3.80", + "@tailwindcss/typography": "^0.5.9", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.2", + "@types/lodash": "^4.14.197", + "@types/node": "^16.18.46", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "@types/uuid": "^9.0.2", + "@vitejs/plugin-react-swc": "^3.3.2", + "autoprefixer": "^10.4.15", + "daisyui": "^4.0.4", + "eslint": "^8.57.0", + "eslint-plugin-node": "^11.1.0", + "postcss": "^8.4.29", + "prettier": "^2.8.8", + "prettier-plugin-organize-imports": "^3.2.3", + "prettier-plugin-tailwindcss": "^0.3.0", + "pretty-quick": "^3.1.3", + "simple-git-hooks": "^2.11.1", + "tailwindcss": "^3.3.3", + "tailwindcss-dotted-background": "^1.1.0", + "typescript": "^5.2.2", + "ua-parser-js": "^1.0.37", + "vite": "^4.5.2" + } } diff --git a/src/frontend/src/App.css b/src/frontend/src/App.css index 22a596730..a4ff01961 100644 --- a/src/frontend/src/App.css +++ b/src/frontend/src/App.css @@ -11,6 +11,13 @@ body { text-align: center; } +.label { + user-select: none; + -webkit-user-select: none; /* Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; +} + .react-flow__node { width: auto; height: auto; @@ -76,6 +83,25 @@ body { height: 8px !important; border-radius: 10px; } +*::-webkit-scrollbar { + width: 8px !important; + height: 8px !important; + border-radius: 10px; +} + +::-webkit-scrollbar-track { + background-color: #f1f1f1 !important; + border-radius: 10px; +} + +::-webkit-scrollbar-thumb { + background-color: #ccc !important; + border-radius: 999px !important; +} + +::-webkit-scrollbar-thumb:hover { + background-color: #bbb !important; +} .jv-indent::-webkit-scrollbar-track { background-color: #f1f1f1 !important; @@ -111,3 +137,30 @@ body { .json-view-flow .json-view { background-color: #bbb !important; } + +.ag-body-horizontal-scroll-viewport, +.ag-body-vertical-scroll-viewport { + cursor: auto; +} + +.ag-body-horizontal-scroll-viewport::-webkit-scrollbar, +.ag-body-vertical-scroll-viewport::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +.ag-body-horizontal-scroll-viewport::-webkit-scrollbar-track, +.ag-body-vertical-scroll-viewport::-webkit-scrollbar-track { + background-color: #f1f1f1; +} + +.ag-body-horizontal-scroll-viewport::-webkit-scrollbar-thumb, +.ag-body-vertical-scroll-viewport::-webkit-scrollbar-thumb { + background-color: #ccc; + border-radius: 999px; +} + +.ag-body-horizontal-scroll-viewport::-webkit-scrollbar-thumb:hover, +.ag-body-vertical-scroll-viewport::-webkit-scrollbar-thumb:hover { + background-color: #bbb; +} diff --git a/src/frontend/src/App.tsx b/src/frontend/src/App.tsx index 2d8fc3caa..922ec9994 100644 --- a/src/frontend/src/App.tsx +++ b/src/frontend/src/App.tsx @@ -15,19 +15,23 @@ import { } from "./constants/constants"; import { AuthContext } from "./contexts/authContext"; import { autoLogin, getGlobalVariables, getHealth } from "./controllers/API"; +import useTrackLastVisitedPath from "./hooks/use-track-last-visited-path"; import Router from "./routes"; import useAlertStore from "./stores/alertStore"; import { useDarkStore } from "./stores/darkStore"; import useFlowsManagerStore from "./stores/flowsManagerStore"; -import { useGlobalVariablesStore } from "./stores/globalVariables"; +import { useFolderStore } from "./stores/foldersStore"; +import { useGlobalVariablesStore } from "./stores/globalVariablesStore/globalVariables"; import { useStoreStore } from "./stores/storeStore"; import { useTypesStore } from "./stores/typesStore"; export default function App() { + useTrackLastVisitedPath(); + const removeFromTempNotificationList = useAlertStore( - (state) => state.removeFromTempNotificationList + (state) => state.removeFromTempNotificationList, ); const tempNotificationList = useAlertStore( - (state) => state.tempNotificationList + (state) => state.tempNotificationList, ); const [fetchError, setFetchError] = useState(false); const isLoading = useFlowsManagerStore((state) => state.isLoading); @@ -45,15 +49,15 @@ export default function App() { const refreshVersion = useDarkStore((state) => state.refreshVersion); const refreshStars = useDarkStore((state) => state.refreshStars); const setGlobalVariables = useGlobalVariablesStore( - (state) => state.setGlobalVariables - ); - const setUnavailableFields = useGlobalVariablesStore( - (state) => state.setUnavaliableFields + (state) => state.setGlobalVariables, ); const checkHasStore = useStoreStore((state) => state.checkHasStore); const navigate = useNavigate(); const dark = useDarkStore((state) => state.dark); + const getFoldersApi = useFolderStore((state) => state.getFoldersApi); + const loadingFolders = useFolderStore((state) => state.loading); + const [isLoadingHealth, setIsLoadingHealth] = useState(false); useEffect(() => { @@ -76,7 +80,7 @@ export default function App() { setUserData(user); setAutoLogin(true); setLoading(false); - await Promise.all([refreshStars(), refreshVersion(), fetchData()]); + fetchAllData(); } }) .catch(async (error) => { @@ -84,7 +88,7 @@ export default function App() { setAutoLogin(false); if (isAuthenticated && !isLoginPage) { getUser(); - await Promise.all([refreshStars(), refreshVersion(), fetchData()]); + fetchAllData(); } else { setLoading(false); useFlowsManagerStore.setState({ isLoading: false }); @@ -92,18 +96,25 @@ export default function App() { } }); - /* - Abort the request as it isn't needed anymore, the component being + /* + Abort the request as it isn't needed anymore, the component being unmounted. It helps avoid, among other things, the well-known "can't perform a React state update on an unmounted component" warning. */ return () => abortController.abort(); }, []); + const fetchAllData = async () => { + setTimeout(async () => { + await Promise.all([refreshStars(), refreshVersion(), fetchData()]); + }, 1000); + }; + const fetchData = async () => { return new Promise(async (resolve, reject) => { if (isAuthenticated) { try { + await getFoldersApi(); await getTypes(); await refreshFlows(); const res = await getGlobalVariables(); @@ -157,7 +168,7 @@ export default function App() { setFetchError(false); //This condition is necessary to avoid infinite loop on starter page when the application is not healthy if (isLoading === true && window.location.pathname === "/") { - navigate("/flows"); + navigate("/all"); window.location.reload(); } }; @@ -184,7 +195,7 @@ export default function App() { > } - {isLoading ? ( + {isLoading || loadingFolders ? (
@@ -200,7 +211,7 @@ export default function App() {
{tempNotificationList.map((alert) => (
- {alert.type === "error" && ( + {alert.type === "error" ? ( - )} -
- ))} -
-
- {tempNotificationList.map((alert) => ( -
- {alert.type === "notice" ? ( - ) : ( - alert.type === "success" && ( - @@ -236,6 +233,20 @@ export default function App() {
))}
+
+ {tempNotificationList.map((alert) => ( +
+ {alert.type === "success" && ( + + )} +
+ ))} +
); diff --git a/src/frontend/src/components/ImageViewer/index.tsx b/src/frontend/src/components/ImageViewer/index.tsx index 6adda4e3e..8433962a7 100644 --- a/src/frontend/src/components/ImageViewer/index.tsx +++ b/src/frontend/src/components/ImageViewer/index.tsx @@ -1,141 +1,162 @@ +import { saveAs } from "file-saver"; +import OpenSeadragon from "openseadragon"; import { useEffect, useRef, useState } from "react"; -import ForwardedIconComponent from "../genericIconComponent"; -import useFlowStore from "../../stores/flowStore"; -import OpenSeadragon from 'openseadragon'; -import { Separator } from "../ui/separator"; -import { saveAs } from 'file-saver' -import useAlertStore from "../../stores/alertStore"; import { IMGViewErrorMSG, IMGViewErrorTitle } from "../../constants/constants"; +import useAlertStore from "../../stores/alertStore"; +import ForwardedIconComponent from "../genericIconComponent"; +import { Separator } from "../ui/separator"; -export default function ImageViewer({image }) { +export default function ImageViewer({ image }) { const viewerRef = useRef(null); - const [errorDownloading, setErrordownloading] = useState(false) - const setErrorList = useAlertStore(state => state.setErrorData); + const [errorDownloading, setErrordownloading] = useState(false); + const setErrorList = useAlertStore((state) => state.setErrorData); const [initialMsg, setInicialMsg] = useState("Please build your flow"); + useEffect(() => { + try { + if (viewerRef.current) { + // Initialize OpenSeadragon viewer + const viewer = OpenSeadragon({ + element: viewerRef.current, + prefixUrl: + "https://cdnjs.cloudflare.com/ajax/libs/openseadragon/2.4.2/images/", // Optional: Set the path to OpenSeadragon images + tileSources: { type: "image", url: image }, + defaultZoomLevel: 1, + maxZoomPixelRatio: 4, + showNavigationControl: false, + }); + const zoomInButton = document.getElementById("zoom-in-button"); + const zoomOutButton = document.getElementById("zoom-out-button"); + const homeButton = document.getElementById("home-button"); + const fullPageButton = document.getElementById("full-page-button"); - useEffect(() => { - try { - if (viewerRef.current) { - // Initialize OpenSeadragon viewer - const viewer = OpenSeadragon({ - element: viewerRef.current, - prefixUrl: 'https://cdnjs.cloudflare.com/ajax/libs/openseadragon/2.4.2/images/', // Optional: Set the path to OpenSeadragon images - tileSources: {type: 'image', url: image}, - defaultZoomLevel: 1, - maxZoomPixelRatio: 4, - showNavigationControl: false, - }); - const zoomInButton = document.getElementById('zoom-in-button'); - const zoomOutButton = document.getElementById('zoom-out-button'); - const homeButton = document.getElementById('home-button'); - const fullPageButton = document.getElementById('full-page-button'); - - zoomInButton!.addEventListener('click', () => viewer.viewport.zoomBy(1.2)); - zoomOutButton!.addEventListener('click', () => viewer.viewport.zoomBy(0.8)); - homeButton!.addEventListener('click', () => viewer.viewport.goHome()); - fullPageButton!.addEventListener('click', () => viewer.setFullScreen(true)); - - // Optionally, you can set additional viewer options here - - // Cleanup function - return () => { - viewer.destroy(); - zoomInButton!.removeEventListener('click', () => viewer.viewport.zoomBy(1.2)); - zoomOutButton!.removeEventListener('click', () => viewer.viewport.zoomBy(0.8)); - homeButton!.removeEventListener('click', () => viewer.viewport.goHome()); - fullPageButton!.removeEventListener('click', () => viewer.setFullScreen(true)); - }; - } - } catch (error) { - console.error('Error initializing OpenSeadragon:', error); - } - }, [image]); + zoomInButton!.addEventListener("click", () => + viewer.viewport.zoomBy(1.2), + ); + zoomOutButton!.addEventListener("click", () => + viewer.viewport.zoomBy(0.8), + ); + homeButton!.addEventListener("click", () => viewer.viewport.goHome()); + fullPageButton!.addEventListener("click", () => + viewer.setFullScreen(true), + ); - function download() { - const imageUrl = image; - // Fetch the image data - fetch(imageUrl) - .then(response => response.blob()) - .then(blob => { - // Save the image using FileSaver.js - saveAs(blob, 'image.jpg'); - }) - .catch(error => { - setErrorList({title: "There was an error downloading your image"}) - console.error('Error downloading image:', error) - }); + // Optionally, you can set additional viewer options here + + // Cleanup function + return () => { + viewer.destroy(); + zoomInButton!.removeEventListener("click", () => + viewer.viewport.zoomBy(1.2), + ); + zoomOutButton!.removeEventListener("click", () => + viewer.viewport.zoomBy(0.8), + ); + homeButton!.removeEventListener("click", () => + viewer.viewport.goHome(), + ); + fullPageButton!.removeEventListener("click", () => + viewer.setFullScreen(true), + ); + }; } + } catch (error) { + console.error("Error initializing OpenSeadragon:", error); + } + }, [image]); - return ( - image === "" ? ( -
-
- - {IMGViewErrorTitle} -
-
-
-
- {IMGViewErrorMSG} -
-
-
+ function download() { + const imageUrl = image; + // Fetch the image data + fetch(imageUrl) + .then((response) => response.blob()) + .then((blob) => { + // Save the image using FileSaver.js + saveAs(blob, "image.jpg"); + }) + .catch((error) => { + setErrorList({ title: "There was an error downloading your image" }); + console.error("Error downloading image:", error); + }); + } + + return image === "" ? ( +
+
+ + {IMGViewErrorTitle} +
+
+
+
{IMGViewErrorMSG}
+
+
+
+ ) : ( + <> +
+
+ +
+
- ) : ( - <> -
-
- -
- -
- -
- -
- -
- -
- -
- -
- - - -
+ +
+
-
- - ) - ); -} \ No newline at end of file + +
+ +
+ +
+ +
+ + +
+
+
+ + ); +} diff --git a/src/frontend/src/components/accordionComponent/composite/folderAccordionComponent/index.tsx b/src/frontend/src/components/accordionComponent/composite/folderAccordionComponent/index.tsx new file mode 100644 index 000000000..d4fb95b5c --- /dev/null +++ b/src/frontend/src/components/accordionComponent/composite/folderAccordionComponent/index.tsx @@ -0,0 +1,72 @@ +import { useState } from "react"; +import IconComponent from "../../../../components/genericIconComponent"; +import { AccordionComponentType } from "../../../../types/components"; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "../../../ui/custom-accordion"; + +export default function FolderAccordionComponent({ + trigger, + open = [], + keyValue, + options, +}: AccordionComponentType): JSX.Element { + const [value, setValue] = useState( + open.length === 0 ? "" : getOpenAccordion(), + ); + + function getOpenAccordion(): string { + let value = ""; + open.forEach((el) => { + if (el == trigger) { + value = trigger; + } + }); + + return value; + } + + function handleClick(): void { + value === "" ? setValue(keyValue!) : setValue(""); + } + + return ( + <> + + + { + handleClick(); + }} + className="px-2" + > + {trigger} + + + {options!.map((option, index) => ( +
+
+ ))} +
+
+
+ + ); +} diff --git a/src/frontend/src/components/addNewVariableButtonComponent/addNewVariableButton.tsx b/src/frontend/src/components/addNewVariableButtonComponent/addNewVariableButton.tsx index 2745ba1bf..5da7d1461 100644 --- a/src/frontend/src/components/addNewVariableButtonComponent/addNewVariableButton.tsx +++ b/src/frontend/src/components/addNewVariableButtonComponent/addNewVariableButton.tsx @@ -2,16 +2,16 @@ import { useState } from "react"; import { registerGlobalVariable } from "../../controllers/API"; import BaseModal from "../../modals/baseModal"; import useAlertStore from "../../stores/alertStore"; -import { useGlobalVariablesStore } from "../../stores/globalVariables"; +import { useGlobalVariablesStore } from "../../stores/globalVariablesStore/globalVariables"; import { useTypesStore } from "../../stores/typesStore"; import { ResponseErrorDetailAPI } from "../../types/api"; -import { sortByName } from "../../utils/utils"; import ForwardedIconComponent from "../genericIconComponent"; import InputComponent from "../inputComponent"; import { Button } from "../ui/button"; import { Input } from "../ui/input"; import { Label } from "../ui/label"; import { Textarea } from "../ui/textarea"; +import sortByName from "./utils/sort-by-name"; //TODO IMPLEMENT FORM LOGIC @@ -130,8 +130,8 @@ export default function AddNewVariableButton({ children }): JSX.Element { setFields(value)} selectedOptions={fields} - password={false} options={availableFields()} + password={false} placeholder="Choose a field for the variable..." id={"apply-to-fields"} > diff --git a/src/frontend/src/components/addNewVariableButtonComponent/utils/sort-by-name.tsx b/src/frontend/src/components/addNewVariableButtonComponent/utils/sort-by-name.tsx new file mode 100644 index 000000000..f3dc06453 --- /dev/null +++ b/src/frontend/src/components/addNewVariableButtonComponent/utils/sort-by-name.tsx @@ -0,0 +1,3 @@ +export default function sortByName(stringList: string[]): string[] { + return stringList.sort((a, b) => a.localeCompare(b)); +} diff --git a/src/frontend/src/components/arrayReaderComponent/index.tsx b/src/frontend/src/components/arrayReaderComponent/index.tsx new file mode 100644 index 000000000..bcbfde010 --- /dev/null +++ b/src/frontend/src/components/arrayReaderComponent/index.tsx @@ -0,0 +1,12 @@ +export default function ArrayReader({ array }: { array: any[] }): JSX.Element { + //TODO check array type + return ( +
+
    + {array.map((item, index) => ( +
  • {item}
  • + ))} +
+
+ ); +} diff --git a/src/frontend/src/components/cardComponent/components/dragCardComponent/index.tsx b/src/frontend/src/components/cardComponent/components/dragCardComponent/index.tsx new file mode 100644 index 000000000..e4425c61c --- /dev/null +++ b/src/frontend/src/components/cardComponent/components/dragCardComponent/index.tsx @@ -0,0 +1,39 @@ +import { storeComponent } from "../../../../types/store"; +import { cn } from "../../../../utils/utils"; +import ForwardedIconComponent from "../../../genericIconComponent"; +import ShadTooltip from "../../../shadTooltipComponent"; +import { Card, CardHeader, CardTitle } from "../../../ui/card"; + +export default function DragCardComponent({ data }: { data: storeComponent }) { + return ( + <> + +
+ +
+ + + +
{data.name}
+
+
+
+
+
+ + ); +} diff --git a/src/frontend/src/components/cardComponent/index.tsx b/src/frontend/src/components/cardComponent/index.tsx index e73ead557..09b8ff833 100644 --- a/src/frontend/src/components/cardComponent/index.tsx +++ b/src/frontend/src/components/cardComponent/index.tsx @@ -1,4 +1,6 @@ import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { Control } from "react-hook-form"; import { getComponent, postLikeComponent } from "../../controllers/API"; import IOModal from "../../modals/IOModal"; import DeleteConfirmationModal from "../../modals/deleteConfirmationModal"; @@ -6,11 +8,12 @@ import useAlertStore from "../../stores/alertStore"; import useFlowStore from "../../stores/flowStore"; import useFlowsManagerStore from "../../stores/flowsManagerStore"; import { useStoreStore } from "../../stores/storeStore"; +import { FlowType } from "../../types/flow"; import { storeComponent } from "../../types/store"; import cloneFLowWithParent, { getInputsAndOutputs, } from "../../utils/storeUtils"; -import { cn, convertTestName } from "../../utils/utils"; +import { cn } from "../../utils/utils"; import IconComponent from "../genericIconComponent"; import ShadTooltip from "../shadTooltipComponent"; import { Button } from "../ui/button"; @@ -21,8 +24,11 @@ import { CardHeader, CardTitle, } from "../ui/card"; +import { Checkbox } from "../ui/checkbox"; +import { FormControl, FormField } from "../ui/form"; import Loading from "../ui/loading"; -import { FlowType } from "../../types/flow"; +import { convertTestName } from "./utils/convert-test-name"; +import DragCardComponent from "./components/dragCardComponent"; export default function CollectionCardComponent({ data, @@ -32,6 +38,8 @@ export default function CollectionCardComponent({ onClick, onDelete, playground, + control, + is_component, }: { data: storeComponent; authorized?: boolean; @@ -40,6 +48,8 @@ export default function CollectionCardComponent({ button?: JSX.Element; playground?: boolean; onDelete?: () => void; + control?: Control; + is_component?: boolean; }) { const addFlow = useFlowsManagerStore((state) => state.addFlow); const setSuccessData = useAlertStore((state) => state.setSuccessData); @@ -69,6 +79,10 @@ export default function CollectionCardComponent({ ); const [loadingPlayground, setLoadingPlayground] = useState(false); + const selectedFlowsComponentsCards = useFlowsManagerStore( + (state) => state.selectedFlowsComponentsCards, + ); + const name = data.is_component ? "Component" : "Flow"; async function getFlowData() { @@ -82,7 +96,6 @@ export default function CollectionCardComponent({ return false; } const { inputs, outputs } = getInputsAndOutputs(flow?.data?.nodes ?? []); - console.log(inputs, outputs); return inputs.length > 0 || outputs.length > 0; } @@ -177,36 +190,59 @@ export default function CollectionCardComponent({ } } + const isSelectedCard = + selectedFlowsComponentsCards?.includes(data?.id) ?? false; + + function onDragStart(event: React.DragEvent) { + let image: JSX.Element = ; // <== whatever you want here + + var ghost = document.createElement("div"); + ghost.style.transform = "translate(-10000px, -10000px)"; + ghost.style.position = "absolute"; + document.body.appendChild(ghost); + event.dataTransfer.setDragImage(ghost, 0, 0); + const root = createRoot(ghost); + root.render(image); + const flow = getFlowById(data.id); + if (flow) { + event.dataTransfer.setData("flow", JSON.stringify(data)); + } + } + return ( <>
- + + -
{data.name}
+
{data.name}
{data?.metadata !== undefined && ( -
+
{data.private && ( @@ -249,19 +285,29 @@ export default function CollectionCardComponent({
)} - {onDelete && data?.metadata === undefined && ( - +
)}
@@ -368,11 +414,7 @@ export default function CollectionCardComponent({ authorized ? "Delete" : "Please review your API key." } > - { - onDelete(); - }} - > +
@@ -123,6 +111,18 @@ export const MenuBar = ({ /> Settings + { + setOpenLogs(true); + }} + className="cursor-pointer" + > + + Logs + { @@ -132,7 +132,7 @@ export const MenuBar = ({ title: UPLOAD_ERROR_ALERT, list: [error], }); - } + }, ); }} > @@ -194,6 +194,7 @@ export const MenuBar = ({ open={openSettings} setOpen={setOpenSettings} > +
{(currentFlow.updated_at || saveLoading) && ( {printByBuildStatus()} diff --git a/src/frontend/src/components/headerComponent/index.tsx b/src/frontend/src/components/headerComponent/index.tsx index bc2537ea2..4f6c02bd8 100644 --- a/src/frontend/src/components/headerComponent/index.tsx +++ b/src/frontend/src/components/headerComponent/index.tsx @@ -3,14 +3,17 @@ import { FaDiscord, FaGithub } from "react-icons/fa"; import { RiTwitterXFill } from "react-icons/ri"; import { Link, useLocation, useNavigate, useParams } from "react-router-dom"; import AlertDropdown from "../../alerts/alertDropDown"; -import { USER_PROJECTS_HEADER } from "../../constants/constants"; +import { + LOCATIONS_TO_RETURN, + USER_PROJECTS_HEADER, +} from "../../constants/constants"; import { AuthContext } from "../../contexts/authContext"; -import { Node } from "reactflow"; import useAlertStore from "../../stores/alertStore"; import { useDarkStore } from "../../stores/darkStore"; import useFlowStore from "../../stores/flowStore"; import useFlowsManagerStore from "../../stores/flowsManagerStore"; +import { useLocationStore } from "../../stores/locationStore"; import { useStoreStore } from "../../stores/storeStore"; import { gradients } from "../../utils/styleUtils"; import IconComponent from "../genericIconComponent"; @@ -29,6 +32,7 @@ import MenuBar from "./components/menuBar"; export default function Header(): JSX.Element { const notificationCenter = useAlertStore((state) => state.notificationCenter); const location = useLocation(); + const { logout, autoLogin, isAdmin, userData } = useContext(AuthContext); const navigate = useNavigate(); const removeFlow = useFlowsManagerStore((store) => store.removeFlow); @@ -40,60 +44,81 @@ export default function Header(): JSX.Element { const setDark = useDarkStore((state) => state.setDark); const stars = useDarkStore((state) => state.stars); - async function checkForChanges(nodes: Node[]): Promise { + const routeHistory = useLocationStore((state) => state.routeHistory); + + async function checkForChanges(): Promise { if (nodes.length === 0) { await removeFlow(id!); } } + const redirectToLastLocation = () => { + const lastFlowVisitedIndex = routeHistory + .reverse() + .findIndex( + (path) => path.includes("/flow/") && path !== location.pathname, + ); + + const lastFlowVisited = routeHistory[lastFlowVisitedIndex]; + lastFlowVisited && !location.pathname.includes("/flow") + ? navigate(lastFlowVisited) + : navigate("/all"); + }; + + const visitedFlowPathBefore = () => { + const lastThreeVisitedPaths = routeHistory.slice(-3); + return lastThreeVisitedPaths.some((path) => path.includes("/flow/")); + }; + + const showArrowReturnIcon = + LOCATIONS_TO_RETURN.some((path) => location.pathname.includes(path)) && + visitedFlowPathBefore(); + return (
- checkForChanges(nodes)}> + ⛓️ - + {showArrowReturnIcon && ( + + )} + +
+
- {/* - - */} + {hasStore && ( + +
+ +
+ <> + {folders.map((item, index) => { + const editFolderName = editFolders?.filter( + (folder) => folder.name === item.name, + )[0]; + return ( +
dragOver(e, item.id!)} + onDragEnter={(e) => dragEnter(e, item.id!)} + onDragLeave={dragLeave} + onDrop={(e) => onDrop(e, item.id!)} + key={item.id} + data-testid={`sidebar-nav-${item.name}`} + className={cn( + buttonVariants({ variant: "ghost" }), + checkPathName(item.id!) + ? "border border-border bg-muted hover:bg-muted" + : "border hover:bg-transparent lg:border-transparent lg:hover:border-border", + "group flex w-full shrink-0 cursor-pointer gap-2 opacity-100 lg:min-w-full", + folderIdDragging === item.id! ? "bg-border" : "", + )} + onClick={() => handleChangeFolder!(item.id!)} + > +
{ + if (item.name === "My Projects") { + return; + } + + if (!foldersNames[item.name]) { + setFoldersNames({ [item.name]: item.name }); + } + + if ( + editFolders.find((obj) => obj.name === item.name)?.name + ) { + const newEditFolders = editFolders.map((obj) => { + if (obj.name === item.name) { + return { name: item.name, edit: true }; + } + return { name: obj.name, edit: false }; + }); + setEditFolderName(newEditFolders); + takeSnapshot(); + event.stopPropagation(); + event.preventDefault(); + return; + } + + setEditFolderName((old) => [ + ...old, + { name: item.name, edit: true }, + ]); + setFoldersNames((oldFolder) => ({ + ...oldFolder, + [item.name]: item.name, + })); + takeSnapshot(); + event.stopPropagation(); + event.preventDefault(); + }} + className="flex w-full items-center gap-2" + > + + {editFolderName?.edit ? ( +
+ { + handleEditFolderName(e, item.name); + }} + ref={refInput} + onKeyDown={(e) => { + if (e.key === "Escape") { + const newEditFolders = editFolders.map((obj) => { + if (obj.name === item.name) { + return { name: item.name, edit: false }; + } + return { name: obj.name, edit: false }; + }); + setEditFolderName(newEditFolders); + setFoldersNames({}); + setEditFolderName( + folders.map((obj) => ({ + name: obj.name, + edit: false, + })), + ); + } + if (e.key === "Enter") { + refInput.current?.blur(); + } + handleKeyDown(e, e.key, ""); + }} + autoFocus={true} + onBlur={async () => { + const newEditFolders = editFolders.map((obj) => { + if (obj.name === item.name) { + return { name: item.name, edit: false }; + } + return { name: obj.name, edit: false }; + }); + setEditFolderName(newEditFolders); + if (foldersNames[item.name].trim() !== "") { + setFoldersNames((old) => ({ + ...old, + [item.name]: foldersNames[item.name], + })); + const body = { + ...item, + name: foldersNames[item.name], + flows: item.flows?.length > 0 ? item.flows : [], + components: + item.components?.length > 0 + ? item.components + : [], + }; + const updatedFolder = await updateFolder( + body, + item.id!, + ); + const updateFolders = folders.filter( + (f) => f.name !== item.name, + ); + setFolders([...updateFolders, updatedFolder]); + setFoldersNames({}); + setEditFolderName( + folders.map((obj) => ({ + name: obj.name, + edit: false, + })), + ); + } else { + setFoldersNames((old) => ({ + ...old, + [item.name]: item.name, + })); + } + }} + value={foldersNames[item.name]} + id={`input-folder-${item.name}`} + /> +
+ ) : ( + + {item.name} + + )} +
+ {index > 0 && ( + + )} + {/* {index > 0 && ( + + )} */} + +
+
+ ); + })} + +
+ + ); +}; +export default SideBarFoldersButtonsComponent; diff --git a/src/frontend/src/components/sidebarComponent/hooks/use-on-file-drop.tsx b/src/frontend/src/components/sidebarComponent/hooks/use-on-file-drop.tsx new file mode 100644 index 000000000..141dcb110 --- /dev/null +++ b/src/frontend/src/components/sidebarComponent/hooks/use-on-file-drop.tsx @@ -0,0 +1,145 @@ +import { + UPLOAD_ALERT_LIST, + WRONG_FILE_ERROR_ALERT, +} from "../../../constants/alerts_constants"; +import { updateFlowInDatabase } from "../../../controllers/API"; +import { uploadFlowsFromFolders } from "../../../pages/MainPage/services"; +import useAlertStore from "../../../stores/alertStore"; +import useFlowsManagerStore from "../../../stores/flowsManagerStore"; +import { useFolderStore } from "../../../stores/foldersStore"; +import { addVersionToDuplicates } from "../../../utils/reactflowUtils"; + +const useFileDrop = (folderId, folderChangeCallback) => { + const setFolderDragging = useFolderStore((state) => state.setFolderDragging); + const setFolderIdDragging = useFolderStore( + (state) => state.setFolderIdDragging, + ); + + const setErrorData = useAlertStore((state) => state.setErrorData); + const getFoldersApi = useFolderStore((state) => state.getFoldersApi); + const flows = useFlowsManagerStore((state) => state.flows); + + const triggerFolderChange = (folderId) => { + if (folderChangeCallback) { + folderChangeCallback(folderId); + } + }; + const handleFileDrop = async (e) => { + if (e.dataTransfer.types.some((type) => type === "Files")) { + if (e.dataTransfer.files && e.dataTransfer.files.length > 0) { + const firstFile = e.dataTransfer.files[0]; + if (firstFile.type === "application/json") { + uploadFormData(firstFile); + } else { + setErrorData({ + title: WRONG_FILE_ERROR_ALERT, + list: [UPLOAD_ALERT_LIST], + }); + } + } + } + }; + + const dragOver = ( + e: + | React.DragEvent + | React.DragEvent + | React.DragEvent, + folderId: string, + ) => { + e.preventDefault(); + + if (e.dataTransfer.types.some((types) => types === "Files")) { + setFolderDragging(true); + } + setFolderIdDragging(folderId); + }; + + const dragEnter = ( + e: + | React.DragEvent + | React.DragEvent + | React.DragEvent, + folderId: string, + ) => { + if (e.dataTransfer.types.some((types) => types === "Files")) { + setFolderDragging(true); + } + setFolderIdDragging(folderId); + e.preventDefault(); + }; + + const dragLeave = ( + e: + | React.DragEvent + | React.DragEvent + | React.DragEvent, + ) => { + e.preventDefault(); + if (e.target === e.currentTarget) { + setFolderDragging(false); + setFolderIdDragging(""); + } + }; + + const onDrop = ( + e: + | React.DragEvent + | React.DragEvent + | React.DragEvent, + folderId: string, + ) => { + if (e?.dataTransfer?.getData("flow")) { + const data = JSON.parse(e?.dataTransfer?.getData("flow")); + + if (data) { + uploadFromDragCard(data.id, folderId); + return; + } + } + + e.preventDefault(); + handleFileDrop(e); + }; + + const uploadFromDragCard = (flowId, folderId) => { + const selectedFlow = flows.find((flow) => flow.id === flowId); + + if (!selectedFlow) { + throw new Error("Flow not found"); + } + const updatedFlow = { ...selectedFlow, folder_id: folderId }; + + const newName = addVersionToDuplicates(updatedFlow, flows); + + updatedFlow.name = newName; + + setFolderDragging(false); + setFolderIdDragging(""); + + updateFlowInDatabase(updatedFlow).then(() => { + getFoldersApi(true); + triggerFolderChange(folderId); + }); + }; + + const uploadFormData = (data) => { + const formData = new FormData(); + formData.append("file", data); + setFolderDragging(false); + setFolderIdDragging(""); + uploadFlowsFromFolders(formData).then(() => { + getFoldersApi(true); + triggerFolderChange(folderId); + }); + }; + + return { + dragOver, + dragEnter, + dragLeave, + onDrop, + }; +}; + +export default useFileDrop; diff --git a/src/frontend/src/components/sidebarComponent/index.tsx b/src/frontend/src/components/sidebarComponent/index.tsx index edeaee51e..396373705 100644 --- a/src/frontend/src/components/sidebarComponent/index.tsx +++ b/src/frontend/src/components/sidebarComponent/index.tsx @@ -1,48 +1,58 @@ -import { Link, useLocation } from "react-router-dom"; +import { useLocation } from "react-router-dom"; +import { FolderType } from "../../pages/MainPage/entities"; +import { useFolderStore } from "../../stores/foldersStore"; import { cn } from "../../utils/utils"; -import { buttonVariants } from "../ui/button"; +import HorizontalScrollFadeComponent from "../horizontalScrollFadeComponent"; +import SideBarButtonsComponent from "./components/sideBarButtons"; +import SideBarFoldersButtonsComponent from "./components/sideBarFolderButtons"; +import { addFolder } from "../../pages/MainPage/services"; +import { useNavigate } from "react-router-dom"; +import useFlowStore from "../../stores/flowStore"; -interface SidebarNavProps extends React.HTMLAttributes { +type SidebarNavProps = { items: { - href: string; + href?: string; title: string; icon: React.ReactNode; }[]; -} + handleOpenNewFolderModal?: () => void; + handleChangeFolder?: (id: string) => void; + handleEditFolder?: (item: FolderType) => void; + handleDeleteFolder?: (item: FolderType) => void; + className?: string; +}; export default function SidebarNav({ className, items, + handleChangeFolder, + handleEditFolder, + handleDeleteFolder, ...props }: SidebarNavProps) { const location = useLocation(); const pathname = location.pathname; + const loadingFolders = useFolderStore((state) => state.loading); + const folders = useFolderStore((state) => state.folders); + + const pathValues = ["folder", "components", "flows", "all"]; + const isFolderPath = pathValues.some((value) => pathname.includes(value)); return ( -