{ "id": "7fc56f82-3493-4742-9c85-82b144127aff", "data": { "nodes": [ { "id": "ChatOpenAI-4Mfuz", "type": "genericNode", "position": { "x": -2243.8068684913856, "y": -2026.350019258601 }, "data": { "type": "ChatOpenAI", "node": { "template": { "callbacks": { "type": "langchain_core.callbacks.base.BaseCallbackHandler", "required": false, "placeholder": "", "list": true, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "callbacks", "advanced": false, "dynamic": false, "info": "" }, "async_client": { "type": "Any", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "async_client", "advanced": false, "dynamic": false, "info": "" }, "cache": { "type": "bool", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "cache", "advanced": false, "dynamic": false, "info": "" }, "client": { "type": "Any", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "client", "advanced": false, "dynamic": false, "info": "" }, "default_headers": { "type": "dict", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "default_headers", "advanced": false, "dynamic": false, "info": "" }, "default_query": { "type": "dict", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "default_query", "advanced": false, "dynamic": false, "info": "" }, "http_client": { "type": "Any", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "http_client", "advanced": false, "dynamic": false, "info": "" }, "max_retries": { "type": "int", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "value": 2, "fileTypes": [], "password": false, "name": "max_retries", "advanced": false, "dynamic": false, "info": "" }, "max_tokens": { "type": "int", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": true, "name": "max_tokens", "advanced": false, "dynamic": false, "info": "", "value": "" }, "metadata": { "type": "dict", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "metadata", "advanced": false, "dynamic": false, "info": "" }, "model_kwargs": { "type": "dict", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "model_kwargs", "advanced": true, "dynamic": false, "info": "" }, "model_name": { "type": "str", "required": false, "placeholder": "", "list": true, "show": true, "multiline": false, "value": "gpt-3.5-turbo-16k", "fileTypes": [], "password": false, "options": [ "gpt-4-1106-preview", "gpt-4-vision-preview", "gpt-4", "gpt-4-32k", "gpt-3.5-turbo", "gpt-3.5-turbo-16k" ], "name": "model_name", "advanced": false, "dynamic": false, "info": "" }, "n": { "type": "int", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "value": 1, "fileTypes": [], "password": false, "name": "n", "advanced": false, "dynamic": false, "info": "" }, "name": { "type": "str", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "name", "advanced": false, "dynamic": false, "info": "" }, "openai_api_base": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "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" }, "openai_api_key": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "", "fileTypes": [], "password": true, "name": "openai_api_key", "display_name": "OpenAI API Key", "advanced": false, "dynamic": false, "info": "" }, "openai_organization": { "type": "str", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "openai_organization", "display_name": "OpenAI Organization", "advanced": false, "dynamic": false, "info": "" }, "openai_proxy": { "type": "str", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "openai_proxy", "display_name": "OpenAI Proxy", "advanced": false, "dynamic": false, "info": "" }, "request_timeout": { "type": "float", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "request_timeout", "advanced": false, "dynamic": false, "info": "", "rangeSpec": { "min": -1, "max": 1, "step": 0.1 } }, "streaming": { "type": "bool", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "value": false, "fileTypes": [], "password": false, "name": "streaming", "advanced": false, "dynamic": false, "info": "" }, "tags": { "type": "str", "required": false, "placeholder": "", "list": true, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "tags", "advanced": false, "dynamic": false, "info": "" }, "temperature": { "type": "float", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "0.5", "fileTypes": [], "password": false, "name": "temperature", "advanced": false, "dynamic": false, "info": "", "rangeSpec": { "min": -1, "max": 1, "step": 0.1 } }, "tiktoken_model_name": { "type": "str", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "tiktoken_model_name", "advanced": false, "dynamic": false, "info": "" }, "verbose": { "type": "bool", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "value": false, "fileTypes": [], "password": false, "name": "verbose", "advanced": false, "dynamic": false, "info": "" }, "_type": "ChatOpenAI" }, "description": "[*Deprecated*] `OpenAI` Chat large language models API.", "base_classes": [ "BaseLanguageModel", "BaseChatModel", "ChatOpenAI", "BaseLLM" ], "display_name": "ChatOpenAI", "documentation": "https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai", "custom_fields": {}, "output_types": [], "field_formatters": {}, "beta": false }, "id": "ChatOpenAI-4Mfuz" }, "selected": false, "width": 384, "height": 649, "positionAbsolute": { "x": -2243.8068684913856, "y": -2026.350019258601 }, "dragging": false }, { "id": "CharacterTextSplitter-WVMFU", "type": "genericNode", "position": { "x": -2661.4749778477553, "y": -1608.9437055023366 }, "data": { "type": "CharacterTextSplitter", "node": { "template": { "documents": { "type": "Document", "required": true, "placeholder": "", "list": true, "show": true, "multiline": false, "value": "", "fileTypes": [], "file_path": "", "password": false, "name": "documents", "advanced": false, "dynamic": false, "info": "" }, "chunk_overlap": { "type": "int", "required": true, "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": "" }, "chunk_size": { "type": "int", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "2000", "fileTypes": [], "file_path": "", "password": false, "name": "chunk_size", "display_name": "Chunk Size", "advanced": false, "dynamic": false, "info": "" }, "separator": { "type": "str", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "\"", "fileTypes": [], "file_path": "", "password": false, "name": "separator", "display_name": "Separator", "advanced": false, "dynamic": false, "info": "" }, "_type": "CharacterTextSplitter" }, "description": "Splitting text that looks at characters.", "base_classes": [ "Document" ], "display_name": "CharacterTextSplitter", "documentation": "https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/character_text_splitter", "custom_fields": {}, "output_types": [ "Document" ], "field_formatters": {}, "beta": false }, "id": "CharacterTextSplitter-WVMFU" }, "selected": false, "width": 384, "height": 501, "positionAbsolute": { "x": -2661.4749778477553, "y": -1608.9437055023366 }, "dragging": false }, { "id": "Chroma-OtYDg", "type": "genericNode", "position": { "x": -2194.2051907050227, "y": -1370.1637632208287 }, "data": { "type": "Chroma", "node": { "template": { "documents": { "type": "Document", "required": false, "placeholder": "", "list": true, "show": true, "multiline": false, "fileTypes": [], "file_path": "", "password": false, "name": "documents", "display_name": "Documents", "advanced": false, "dynamic": false, "info": "" }, "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": "" }, "chroma_server_cors_allow_origins": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "file_path": "", "password": false, "name": "chroma_server_cors_allow_origins", "display_name": "Server CORS Allow Origins", "advanced": true, "dynamic": false, "info": "" }, "chroma_server_grpc_port": { "type": "int", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "file_path": "", "password": false, "name": "chroma_server_grpc_port", "display_name": "Server gRPC Port", "advanced": true, "dynamic": false, "info": "" }, "chroma_server_host": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "file_path": "", "password": false, "name": "chroma_server_host", "display_name": "Server Host", "advanced": true, "dynamic": false, "info": "" }, "chroma_server_port": { "type": "int", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "file_path": "", "password": false, "name": "chroma_server_port", "display_name": "Server Port", "advanced": true, "dynamic": false, "info": "" }, "chroma_server_ssl_enabled": { "type": "bool", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "value": false, "fileTypes": [], "file_path": "", "password": false, "name": "chroma_server_ssl_enabled", "display_name": "Server SSL Enabled", "advanced": true, "dynamic": false, "info": "" }, "code": { "type": "code", "required": true, "placeholder": "", "list": false, "show": true, "multiline": true, "value": "from typing import List, Optional, Union\n\nimport chromadb # type: ignore\nfrom langchain.embeddings.base import Embeddings\nfrom langchain.schema import BaseRetriever, Document\nfrom langchain.vectorstores import Chroma\nfrom langchain.vectorstores.base import VectorStore\n\nfrom langflow.custom import CustomComponent\n\n\nclass ChromaComponent(CustomComponent):\n \"\"\"\n A custom component for implementing a Vector Store using Chroma.\n \"\"\"\n\n display_name: str = \"Chroma\"\n description: str = \"Implementation of Vector Store using Chroma\"\n documentation = \"https://python.langchain.com/docs/integrations/vectorstores/chroma\"\n beta: bool = True\n\n def build_config(self):\n \"\"\"\n Builds the configuration for the component.\n\n Returns:\n - dict: A dictionary containing the configuration options for the component.\n \"\"\"\n return {\n \"collection_name\": {\"display_name\": \"Collection Name\", \"value\": \"langflow\"},\n \"persist\": {\"display_name\": \"Persist\"},\n \"persist_directory\": {\"display_name\": \"Persist Directory\"},\n \"code\": {\"show\": False, \"display_name\": \"Code\"},\n \"documents\": {\"display_name\": \"Documents\", \"is_list\": True},\n \"embedding\": {\"display_name\": \"Embedding\"},\n \"chroma_server_cors_allow_origins\": {\n \"display_name\": \"Server CORS Allow Origins\",\n \"advanced\": True,\n },\n \"chroma_server_host\": {\"display_name\": \"Server Host\", \"advanced\": True},\n \"chroma_server_port\": {\"display_name\": \"Server Port\", \"advanced\": True},\n \"chroma_server_grpc_port\": {\n \"display_name\": \"Server gRPC Port\",\n \"advanced\": True,\n },\n \"chroma_server_ssl_enabled\": {\n \"display_name\": \"Server SSL Enabled\",\n \"advanced\": True,\n },\n }\n\n def build(\n self,\n collection_name: str,\n persist: bool,\n embedding: Embeddings,\n chroma_server_ssl_enabled: bool,\n persist_directory: Optional[str] = None,\n documents: Optional[List[Document]] = None,\n chroma_server_cors_allow_origins: Optional[str] = None,\n chroma_server_host: Optional[str] = None,\n chroma_server_port: Optional[int] = None,\n chroma_server_grpc_port: Optional[int] = None,\n ) -> Union[VectorStore, BaseRetriever]:\n \"\"\"\n Builds the Vector Store or BaseRetriever object.\n\n Args:\n - collection_name (str): The name of the collection.\n - persist_directory (Optional[str]): The directory to persist the Vector Store to.\n - chroma_server_ssl_enabled (bool): Whether to enable SSL for the Chroma server.\n - persist (bool): Whether to persist the Vector Store or not.\n - embedding (Optional[Embeddings]): The embeddings to use for the Vector Store.\n - documents (Optional[Document]): The documents to use for the Vector Store.\n - chroma_server_cors_allow_origins (Optional[str]): The CORS allow origins for the Chroma server.\n - chroma_server_host (Optional[str]): The host for the Chroma server.\n - chroma_server_port (Optional[int]): The port for the Chroma server.\n - chroma_server_grpc_port (Optional[int]): The gRPC port for the Chroma server.\n\n Returns:\n - Union[VectorStore, BaseRetriever]: The Vector Store or BaseRetriever object.\n \"\"\"\n\n # Chroma settings\n chroma_settings = None\n\n if chroma_server_host is not None:\n chroma_settings = chromadb.config.Settings(\n chroma_server_cors_allow_origins=chroma_server_cors_allow_origins or None,\n chroma_server_host=chroma_server_host,\n chroma_server_port=chroma_server_port or None,\n chroma_server_grpc_port=chroma_server_grpc_port or None,\n chroma_server_ssl_enabled=chroma_server_ssl_enabled,\n )\n\n # If documents, then we need to create a Chroma instance using .from_documents\n if documents is not None and embedding is not None:\n if len(documents) == 0:\n raise ValueError(\"If documents are provided, there must be at least one document.\")\n return Chroma.from_documents(\n documents=documents, # type: ignore\n persist_directory=persist_directory if persist else None,\n collection_name=collection_name,\n embedding=embedding,\n client_settings=chroma_settings,\n )\n\n return Chroma(persist_directory=persist_directory, client_settings=chroma_settings)\n", "fileTypes": [], "file_path": "", "password": false, "name": "code", "advanced": false, "dynamic": true, "info": "" }, "collection_name": { "type": "str", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "video", "fileTypes": [], "file_path": "", "password": false, "name": "collection_name", "display_name": "Collection Name", "advanced": false, "dynamic": false, "info": "" }, "persist": { "type": "bool", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "value": false, "fileTypes": [], "file_path": "", "password": false, "name": "persist", "display_name": "Persist", "advanced": false, "dynamic": false, "info": "" }, "persist_directory": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "file_path": "", "password": false, "name": "persist_directory", "display_name": "Persist Directory", "advanced": false, "dynamic": false, "info": "" }, "_type": "CustomComponent" }, "description": "Implementation of Vector Store using Chroma", "base_classes": [ "VectorStore", "BaseRetriever" ], "display_name": "Chroma", "documentation": "https://python.langchain.com/docs/integrations/vectorstores/chroma", "custom_fields": { "chroma_server_cors_allow_origins": null, "chroma_server_grpc_port": null, "chroma_server_host": null, "chroma_server_port": null, "chroma_server_ssl_enabled": null, "collection_name": null, "documents": null, "embedding": null, "persist": null, "persist_directory": null }, "output_types": [ "Chroma" ], "field_formatters": {}, "beta": true }, "id": "Chroma-OtYDg" }, "selected": false, "width": 384, "height": 625, "positionAbsolute": { "x": -2194.2051907050227, "y": -1370.1637632208287 }, "dragging": false }, { "id": "OpenAIEmbeddings-9yqtI", "type": "genericNode", "position": { "x": -2653.011009324626, "y": -1103.8414515074774 }, "data": { "type": "OpenAIEmbeddings", "node": { "template": { "allowed_special": { "type": "str", "required": false, "placeholder": "", "list": true, "show": true, "multiline": false, "value": [], "fileTypes": [], "password": false, "name": "allowed_special", "advanced": true, "dynamic": false, "info": "" }, "async_client": { "type": "Any", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "async_client", "advanced": true, "dynamic": false, "info": "" }, "chunk_size": { "type": "int", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": 1000, "fileTypes": [], "password": false, "name": "chunk_size", "advanced": true, "dynamic": false, "info": "" }, "client": { "type": "Any", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "client", "advanced": true, "dynamic": false, "info": "" }, "default_headers": { "type": "dict", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "default_headers", "advanced": true, "dynamic": false, "info": "" }, "default_query": { "type": "dict", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "default_query", "advanced": true, "dynamic": false, "info": "" }, "deployment": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "text-embedding-ada-002", "fileTypes": [], "password": false, "name": "deployment", "advanced": true, "dynamic": false, "info": "" }, "disallowed_special": { "type": "str", "required": false, "placeholder": "", "list": true, "show": true, "multiline": false, "value": "all", "fileTypes": [], "password": false, "name": "disallowed_special", "advanced": true, "dynamic": false, "info": "" }, "embedding_ctx_length": { "type": "int", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": 8191, "fileTypes": [], "password": false, "name": "embedding_ctx_length", "advanced": true, "dynamic": false, "info": "" }, "headers": { "type": "Any", "required": false, "placeholder": "", "list": false, "show": false, "multiline": true, "value": "{\"Authorization\": \"Bearer \"}", "fileTypes": [], "password": false, "name": "headers", "advanced": true, "dynamic": false, "info": "" }, "http_client": { "type": "Any", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "http_client", "advanced": true, "dynamic": false, "info": "" }, "max_retries": { "type": "int", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": 2, "fileTypes": [], "password": false, "name": "max_retries", "advanced": true, "dynamic": false, "info": "" }, "model": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "text-embedding-ada-002", "fileTypes": [], "password": false, "name": "model", "advanced": true, "dynamic": false, "info": "" }, "model_kwargs": { "type": "dict", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "model_kwargs", "advanced": true, "dynamic": false, "info": "" }, "openai_api_base": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": true, "name": "openai_api_base", "display_name": "OpenAI API Base", "advanced": true, "dynamic": false, "info": "", "value": "" }, "openai_api_key": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "", "fileTypes": [], "password": true, "name": "openai_api_key", "display_name": "OpenAI API Key", "advanced": false, "dynamic": false, "info": "" }, "openai_api_type": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": true, "name": "openai_api_type", "display_name": "OpenAI API Type", "advanced": true, "dynamic": false, "info": "", "value": "" }, "openai_api_version": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": true, "name": "openai_api_version", "display_name": "OpenAI API Version", "advanced": true, "dynamic": false, "info": "", "value": "" }, "openai_organization": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "openai_organization", "display_name": "OpenAI Organization", "advanced": true, "dynamic": false, "info": "" }, "openai_proxy": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "openai_proxy", "display_name": "OpenAI Proxy", "advanced": true, "dynamic": false, "info": "" }, "request_timeout": { "type": "float", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "request_timeout", "advanced": true, "dynamic": false, "info": "", "rangeSpec": { "min": -1, "max": 1, "step": 0.1 } }, "retry_max_seconds": { "type": "int", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": 20, "fileTypes": [], "password": false, "name": "retry_max_seconds", "advanced": true, "dynamic": false, "info": "" }, "retry_min_seconds": { "type": "int", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": 4, "fileTypes": [], "password": false, "name": "retry_min_seconds", "advanced": true, "dynamic": false, "info": "" }, "show_progress_bar": { "type": "bool", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": false, "fileTypes": [], "password": false, "name": "show_progress_bar", "advanced": true, "dynamic": false, "info": "" }, "skip_empty": { "type": "bool", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": false, "fileTypes": [], "password": false, "name": "skip_empty", "advanced": true, "dynamic": false, "info": "" }, "tiktoken_enabled": { "type": "bool", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "", "fileTypes": [], "password": true, "name": "tiktoken_enabled", "advanced": false, "dynamic": false, "info": "" }, "tiktoken_model_name": { "type": "str", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": true, "name": "tiktoken_model_name", "advanced": false, "dynamic": false, "info": "", "value": "" }, "_type": "OpenAIEmbeddings" }, "description": "[*Deprecated*] OpenAI embedding models.", "base_classes": [ "Embeddings", "OpenAIEmbeddings" ], "display_name": "OpenAIEmbeddings", "documentation": "https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai", "custom_fields": {}, "output_types": [], "field_formatters": {}, "beta": false }, "id": "OpenAIEmbeddings-9yqtI" }, "selected": false, "width": 384, "height": 443, "positionAbsolute": { "x": -2653.011009324626, "y": -1103.8414515074774 }, "dragging": false }, { "id": "RetrievalQA-DpylI", "type": "genericNode", "position": { "x": -1757.239471200792, "y": -1258.2132589352987 }, "data": { "type": "RetrievalQA", "node": { "template": { "callbacks": { "type": "langchain_core.callbacks.base.BaseCallbackHandler", "required": false, "placeholder": "", "list": true, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "callbacks", "advanced": false, "dynamic": false, "info": "" }, "combine_documents_chain": { "type": "BaseCombineDocumentsChain", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "combine_documents_chain", "advanced": false, "dynamic": false, "info": "" }, "memory": { "type": "BaseMemory", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "memory", "advanced": false, "dynamic": false, "info": "" }, "retriever": { "type": "BaseRetriever", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "password": false, "name": "retriever", "advanced": false, "dynamic": false, "info": "" }, "input_key": { "type": "str", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "query", "fileTypes": [], "password": false, "name": "input_key", "advanced": true, "dynamic": false, "info": "" }, "metadata": { "type": "dict", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "metadata", "advanced": false, "dynamic": false, "info": "" }, "name": { "type": "str", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "name", "advanced": false, "dynamic": false, "info": "" }, "output_key": { "type": "str", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "result", "fileTypes": [], "password": false, "name": "output_key", "advanced": true, "dynamic": false, "info": "" }, "return_source_documents": { "type": "bool", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "value": true, "fileTypes": [], "password": false, "name": "return_source_documents", "advanced": true, "dynamic": false, "info": "" }, "tags": { "type": "str", "required": false, "placeholder": "", "list": true, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "tags", "advanced": false, "dynamic": false, "info": "" }, "verbose": { "type": "bool", "required": false, "placeholder": "", "list": false, "show": false, "multiline": false, "fileTypes": [], "password": false, "name": "verbose", "advanced": true, "dynamic": false, "info": "" }, "_type": "RetrievalQA" }, "description": "Chain for question-answering against an index.", "base_classes": [ "Chain", "RetrievalQA", "BaseRetrievalQA", "Callable" ], "display_name": "RetrievalQA", "documentation": "https://python.langchain.com/docs/modules/chains/popular/vector_db_qa", "custom_fields": {}, "output_types": [], "field_formatters": {}, "beta": false }, "id": "RetrievalQA-DpylI" }, "selected": false, "width": 384, "height": 339, "positionAbsolute": { "x": -1757.239471200792, "y": -1258.2132589352987 }, "dragging": true }, { "id": "CombineDocsChain-afKOq", "type": "genericNode", "position": { "x": -1775.9040057312934, "y": -1644.0423777157919 }, "data": { "type": "CombineDocsChain", "node": { "template": { "llm": { "type": "BaseLanguageModel", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "value": "", "fileTypes": [], "file_path": "", "password": false, "name": "llm", "display_name": "LLM", "advanced": false, "dynamic": false, "info": "" }, "chain_type": { "type": "str", "required": true, "placeholder": "", "list": true, "show": true, "multiline": false, "value": "refine", "fileTypes": [], "file_path": "", "password": false, "options": [ "stuff", "map_reduce", "map_rerank", "refine" ], "name": "chain_type", "advanced": false, "dynamic": false, "info": "" }, "_type": "load_qa_chain" }, "description": "Load question answering chain.", "base_classes": [ "BaseCombineDocumentsChain", "Callable" ], "display_name": "CombineDocsChain", "documentation": "", "custom_fields": {}, "output_types": [], "field_formatters": {}, "beta": false }, "id": "CombineDocsChain-afKOq" }, "selected": false, "width": 384, "height": 333, "dragging": false, "positionAbsolute": { "x": -1775.9040057312934, "y": -1644.0423777157919 } }, { "id": "SearchApi-kZmEj", "type": "genericNode", "position": { "x": -3074.364183247263, "y": -1782.5742787937606 }, "data": { "type": "SearchApi", "node": { "template": { "api_key": { "type": "str", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "file_path": "", "password": true, "name": "api_key", "display_name": "API Key", "advanced": false, "dynamic": false, "info": "The API key to use SearchApi.", "value": "" }, "code": { "type": "code", "required": true, "placeholder": "", "list": false, "show": true, "multiline": true, "value": "from langflow.custom import CustomComponent\nfrom langchain.schema import Document\nfrom langflow.services.database.models.base import orjson_dumps\nfrom langchain_community.utilities.searchapi import SearchApiAPIWrapper\nfrom typing import Optional\n\n\nclass SearchApi(CustomComponent):\n display_name: str = \"SearchApi\"\n description: str = \"Real-time search engines API.\"\n output_types: list[str] = [\"Document\"]\n documentation: str = \"https://www.searchapi.io/docs/google\"\n field_config = {\n \"engine\": {\n \"display_name\": \"Engine\",\n \"field_type\": \"str\",\n \"info\": \"The search engine to use.\",\n },\n \"params\": {\n \"display_name\": \"Parameters\",\n \"info\": \"The parameters to send with the request.\",\n },\n \"code\": {\"show\": False},\n \"api_key\": {\n \"display_name\": \"API Key\",\n \"field_type\": \"str\",\n \"required\": True, \n \"password\": True,\n \"info\": \"The API key to use SearchApi.\",\n },\n }\n\n def build(\n self,\n engine: str,\n api_key: str,\n params: Optional[dict] = None,\n ) -> Document:\n if params is None:\n params = {}\n\n search_api_wrapper = SearchApiAPIWrapper(engine=engine, searchapi_api_key=api_key)\n\n query = params.pop(\"query\", \"default query\") \n results = search_api_wrapper.results(query, **params)\n\n result = orjson_dumps(results, indent_2=False)\n \n document = Document(page_content=result) \n\n return document", "fileTypes": [], "file_path": "", "password": false, "name": "code", "advanced": false, "dynamic": true, "info": "" }, "engine": { "type": "str", "required": true, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "file_path": "", "password": false, "name": "engine", "display_name": "Engine", "advanced": false, "dynamic": false, "info": "The search engine to use.", "value": "youtube_transcripts" }, "params": { "type": "dict", "required": false, "placeholder": "", "list": false, "show": true, "multiline": false, "fileTypes": [], "file_path": "", "password": false, "name": "params", "display_name": "Parameters", "advanced": false, "dynamic": false, "info": "The parameters to send with the request.", "value": [ { "video_id": "krsBRQbOPQ4" } ] }, "_type": "CustomComponent" }, "description": "Real-time search engines API.", "base_classes": [ "Document" ], "display_name": "SearchApi", "documentation": "https://www.searchapi.io/docs/google", "custom_fields": { "api_key": null, "engine": null, "params": null }, "output_types": [ "SearchApi" ], "field_formatters": {}, "beta": true }, "id": "SearchApi-kZmEj" }, "selected": false, "width": 384, "height": 539, "dragging": false, "positionAbsolute": { "x": -3074.364183247263, "y": -1782.5742787937606 } } ], "edges": [ { "source": "CharacterTextSplitter-WVMFU", "sourceHandle": "{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCharacterTextSplitterœ,œidœ:œCharacterTextSplitter-WVMFUœ}", "target": "Chroma-OtYDg", "targetHandle": "{œfieldNameœ:œdocumentsœ,œidœ:œChroma-OtYDgœ,œinputTypesœ:null,œtypeœ:œDocumentœ}", "data": { "targetHandle": { "fieldName": "documents", "id": "Chroma-OtYDg", "inputTypes": null, "type": "Document" }, "sourceHandle": { "baseClasses": [ "Document" ], "dataType": "CharacterTextSplitter", "id": "CharacterTextSplitter-WVMFU" } }, "style": { "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", "animated": false, "id": "reactflow__edge-CharacterTextSplitter-WVMFU{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œCharacterTextSplitterœ,œidœ:œCharacterTextSplitter-WVMFUœ}-Chroma-OtYDg{œfieldNameœ:œdocumentsœ,œidœ:œChroma-OtYDgœ,œinputTypesœ:null,œtypeœ:œDocumentœ}" }, { "source": "OpenAIEmbeddings-9yqtI", "sourceHandle": "{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-9yqtIœ}", "target": "Chroma-OtYDg", "targetHandle": "{œfieldNameœ:œembeddingœ,œidœ:œChroma-OtYDgœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}", "data": { "targetHandle": { "fieldName": "embedding", "id": "Chroma-OtYDg", "inputTypes": null, "type": "Embeddings" }, "sourceHandle": { "baseClasses": [ "Embeddings", "OpenAIEmbeddings" ], "dataType": "OpenAIEmbeddings", "id": "OpenAIEmbeddings-9yqtI" } }, "style": { "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", "animated": false, "id": "reactflow__edge-OpenAIEmbeddings-9yqtI{œbaseClassesœ:[œEmbeddingsœ,œOpenAIEmbeddingsœ],œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-9yqtIœ}-Chroma-OtYDg{œfieldNameœ:œembeddingœ,œidœ:œChroma-OtYDgœ,œinputTypesœ:null,œtypeœ:œEmbeddingsœ}" }, { "source": "Chroma-OtYDg", "sourceHandle": "{œbaseClassesœ:[œVectorStoreœ,œBaseRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-OtYDgœ}", "target": "RetrievalQA-DpylI", "targetHandle": "{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-DpylIœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}", "data": { "targetHandle": { "fieldName": "retriever", "id": "RetrievalQA-DpylI", "inputTypes": null, "type": "BaseRetriever" }, "sourceHandle": { "baseClasses": [ "VectorStore", "BaseRetriever" ], "dataType": "Chroma", "id": "Chroma-OtYDg" } }, "style": { "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", "animated": false, "id": "reactflow__edge-Chroma-OtYDg{œbaseClassesœ:[œVectorStoreœ,œBaseRetrieverœ],œdataTypeœ:œChromaœ,œidœ:œChroma-OtYDgœ}-RetrievalQA-DpylI{œfieldNameœ:œretrieverœ,œidœ:œRetrievalQA-DpylIœ,œinputTypesœ:null,œtypeœ:œBaseRetrieverœ}" }, { "source": "ChatOpenAI-4Mfuz", "sourceHandle": "{œbaseClassesœ:[œBaseLanguageModelœ,œBaseChatModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-4Mfuzœ}", "target": "CombineDocsChain-afKOq", "targetHandle": "{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-afKOqœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}", "data": { "targetHandle": { "fieldName": "llm", "id": "CombineDocsChain-afKOq", "inputTypes": null, "type": "BaseLanguageModel" }, "sourceHandle": { "baseClasses": [ "BaseLanguageModel", "BaseChatModel", "ChatOpenAI", "BaseLLM" ], "dataType": "ChatOpenAI", "id": "ChatOpenAI-4Mfuz" } }, "style": { "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", "animated": false, "id": "reactflow__edge-ChatOpenAI-4Mfuz{œbaseClassesœ:[œBaseLanguageModelœ,œBaseChatModelœ,œChatOpenAIœ,œBaseLLMœ],œdataTypeœ:œChatOpenAIœ,œidœ:œChatOpenAI-4Mfuzœ}-CombineDocsChain-afKOq{œfieldNameœ:œllmœ,œidœ:œCombineDocsChain-afKOqœ,œinputTypesœ:null,œtypeœ:œBaseLanguageModelœ}" }, { "source": "CombineDocsChain-afKOq", "sourceHandle": "{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œCallableœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-afKOqœ}", "target": "RetrievalQA-DpylI", "targetHandle": "{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-DpylIœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}", "data": { "targetHandle": { "fieldName": "combine_documents_chain", "id": "RetrievalQA-DpylI", "inputTypes": null, "type": "BaseCombineDocumentsChain" }, "sourceHandle": { "baseClasses": [ "BaseCombineDocumentsChain", "Callable" ], "dataType": "CombineDocsChain", "id": "CombineDocsChain-afKOq" } }, "style": { "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", "animated": false, "id": "reactflow__edge-CombineDocsChain-afKOq{œbaseClassesœ:[œBaseCombineDocumentsChainœ,œCallableœ],œdataTypeœ:œCombineDocsChainœ,œidœ:œCombineDocsChain-afKOqœ}-RetrievalQA-DpylI{œfieldNameœ:œcombine_documents_chainœ,œidœ:œRetrievalQA-DpylIœ,œinputTypesœ:null,œtypeœ:œBaseCombineDocumentsChainœ}" }, { "source": "SearchApi-kZmEj", "sourceHandle": "{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œSearchApiœ,œidœ:œSearchApi-kZmEjœ}", "target": "CharacterTextSplitter-WVMFU", "targetHandle": "{œfieldNameœ:œdocumentsœ,œidœ:œCharacterTextSplitter-WVMFUœ,œinputTypesœ:null,œtypeœ:œDocumentœ}", "data": { "targetHandle": { "fieldName": "documents", "id": "CharacterTextSplitter-WVMFU", "inputTypes": null, "type": "Document" }, "sourceHandle": { "baseClasses": [ "Document" ], "dataType": "SearchApi", "id": "SearchApi-kZmEj" } }, "style": { "stroke": "#555" }, "className": "stroke-gray-900 stroke-connection", "animated": false, "id": "reactflow__edge-SearchApi-kZmEj{œbaseClassesœ:[œDocumentœ],œdataTypeœ:œSearchApiœ,œidœ:œSearchApi-kZmEjœ}-CharacterTextSplitter-WVMFU{œfieldNameœ:œdocumentsœ,œidœ:œCharacterTextSplitter-WVMFUœ,œinputTypesœ:null,œtypeœ:œDocumentœ}" } ], "viewport": { "x": 2046.3642433866817, "y": 1270.2852546488134, "zoom": 0.6177254407441625 } }, "description": "Real-time Google Search engine q&a.", "name": "SearchApi Tool", "last_tested_version": "0.6.5a9", "is_component": false }