{ "name": "ChatInputTest", "description": "", "data": { "nodes": [ { "width": 384, "height": 359, "id": "PromptTemplate-IKKOx", "type": "genericNode", "position": { "x": 880, "y": 646.9375 }, "data": { "type": "PromptTemplate", "node": { "template": { "output_parser": { "required": false, "placeholder": "", "show": false, "multiline": false, "password": false, "name": "output_parser", "advanced": false, "dynamic": false, "info": "", "type": "BaseOutputParser", "list": false }, "input_variables": { "required": true, "placeholder": "", "show": false, "multiline": false, "password": false, "name": "input_variables", "advanced": false, "dynamic": false, "info": "", "type": "str", "list": true, "value": [ "input" ] }, "partial_variables": { "required": false, "placeholder": "", "show": false, "multiline": false, "password": false, "name": "partial_variables", "advanced": false, "dynamic": false, "info": "", "type": "code", "list": false }, "template": { "required": true, "placeholder": "", "show": true, "multiline": true, "password": false, "name": "template", "advanced": false, "dynamic": false, "info": "", "type": "prompt", "list": false, "value": "Input: {input}\nAI:" }, "template_format": { "required": false, "placeholder": "", "show": false, "multiline": false, "value": "f-string", "password": false, "name": "template_format", "advanced": false, "dynamic": false, "info": "", "type": "str", "list": false }, "validate_template": { "required": false, "placeholder": "", "show": false, "multiline": false, "value": true, "password": false, "name": "validate_template", "advanced": false, "dynamic": false, "info": "", "type": "bool", "list": false }, "_type": "PromptTemplate", "input": { "required": false, "placeholder": "", "show": true, "multiline": true, "value": "", "password": false, "name": "input", "display_name": "input", "advanced": false, "input_types": [ "Document", "BaseOutputParser", "str" ], "dynamic": false, "info": "", "type": "str", "list": false } }, "description": "A prompt template for a language model.", "base_classes": [ "BasePromptTemplate", "PromptTemplate", "StringPromptTemplate" ], "name": "", "display_name": "PromptTemplate", "documentation": "https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/", "custom_fields": { "": [ "input" ], "template": [ "input" ] }, "output_types": [], "field_formatters": { "formatters": { "openai_api_key": {} }, "base_formatters": { "kwargs": {}, "optional": {}, "list": {}, "dict": {}, "union": {}, "multiline": {}, "show": {}, "password": {}, "default": {}, "headers": {}, "dict_code_file": {}, "model_fields": { "MODEL_DICT": { "OpenAI": [ "text-davinci-003", "text-davinci-002", "text-curie-001", "text-babbage-001", "text-ada-001" ], "ChatOpenAI": [ "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" ], "Anthropic": [ "claude-v1", "claude-v1-100k", "claude-instant-v1", "claude-instant-v1-100k", "claude-v1.3", "claude-v1.3-100k", "claude-v1.2", "claude-v1.0", "claude-instant-v1.1", "claude-instant-v1.1-100k", "claude-instant-v1.0" ], "ChatAnthropic": [ "claude-v1", "claude-v1-100k", "claude-instant-v1", "claude-instant-v1-100k", "claude-v1.3", "claude-v1.3-100k", "claude-v1.2", "claude-v1.0", "claude-instant-v1.1", "claude-instant-v1.1-100k", "claude-instant-v1.0" ] } } } }, "beta": false, "error": null }, "id": "PromptTemplate-IKKOx" }, "selected": false, "positionAbsolute": { "x": 880, "y": 646.9375 }, "dragging": false }, { "width": 384, "height": 307, "id": "LLMChain-e2dhN", "type": "genericNode", "position": { "x": 1449.330344958542, "y": 880.1760221487797 }, "data": { "type": "LLMChain", "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, "password": false, "name": "output_parser", "advanced": false, "dynamic": false, "info": "", "type": "BaseLLMOutputParser", "list": false }, "prompt": { "required": true, "placeholder": "", "show": true, "multiline": false, "password": false, "name": "prompt", "advanced": false, "dynamic": false, "info": "", "type": "BasePromptTemplate", "list": false }, "llm_kwargs": { "required": false, "placeholder": "", "show": false, "multiline": false, "password": false, "name": "llm_kwargs", "advanced": false, "dynamic": false, "info": "", "type": "code", "list": false }, "metadata": { "required": false, "placeholder": "", "show": false, "multiline": false, "password": false, "name": "metadata", "advanced": false, "dynamic": false, "info": "", "type": "code", "list": false }, "output_key": { "required": true, "placeholder": "", "show": true, "multiline": false, "value": "text", "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, "value": false, "password": false, "name": "verbose", "advanced": true, "dynamic": false, "info": "", "type": "bool", "list": false }, "_type": "LLMChain" }, "description": "Chain to run queries against LLMs.", "base_classes": [ "Chain", "LLMChain", "function", "Text" ], "display_name": "LLMChain", "custom_fields": {}, "output_types": [], "documentation": "https://python.langchain.com/docs/modules/chains/foundational/llm_chain", "beta": false, "error": null }, "id": "LLMChain-e2dhN" }, "positionAbsolute": { "x": 1449.330344958542, "y": 880.1760221487797 } }, { "width": 384, "height": 621, "id": "ChatOpenAI-2I57f", "type": "genericNode", "position": { "x": 393.3551923753797, "y": 1061.025177453298 }, "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": "code", "list": false }, "model_kwargs": { "required": false, "placeholder": "", "show": true, "multiline": false, "password": false, "name": "model_kwargs", "advanced": true, "dynamic": false, "info": "", "type": "code", "list": false }, "model_name": { "required": false, "placeholder": "", "show": true, "multiline": false, "value": "gpt-3.5-turbo-0613", "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": [ "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-2I57f" }, "selected": false, "positionAbsolute": { "x": 393.3551923753797, "y": 1061.025177453298 }, "dragging": false }, { "width": 384, "height": 359, "id": "ChatInput-207IY", "type": "genericNode", "position": { "x": 415.1018926651509, "y": 506.62736462360317 }, "data": { "type": "ChatInput", "node": { "template": { "code": { "dynamic": true, "required": true, "placeholder": "", "show": false, "multiline": true, "value": "from typing import Optional\nfrom langflow.custom import CustomComponent\n\n\nclass ChatInput(CustomComponent):\n display_name = \"Chat Input\"\n\n def build(self, message: Optional[str] = \"\") -> str:\n return message\n", "password": false, "name": "code", "advanced": false, "type": "code", "list": false }, "_type": "CustomComponent", "message": { "required": false, "placeholder": "", "show": true, "multiline": false, "value": "", "password": false, "name": "message", "display_name": "message", "advanced": false, "dynamic": false, "info": "", "type": "str", "list": false } }, "description": "Used to get user input from the chat.", "base_classes": [ "str" ], "display_name": "Chat Input", "custom_fields": { "message": null }, "output_types": [ "ChatInput" ], "documentation": "", "beta": true, "error": null }, "id": "ChatInput-207IY" }, "positionAbsolute": { "x": 415.1018926651509, "y": 506.62736462360317 } }, { "width": 384, "height": 389, "id": "ChatOutput-1jlJy", "type": "genericNode", "position": { "x": 2002.8008888732943, "y": 926.1397178702218 }, "data": { "type": "ChatOutput", "node": { "template": { "code": { "dynamic": true, "required": true, "placeholder": "", "show": true, "multiline": true, "value": "from typing import Optional, Text\nfrom langflow.api.v1.schemas import ChatMessage\nfrom langflow.services.utils import get_chat_manager\nfrom langflow.custom import CustomComponent\nfrom anyio.from_thread import start_blocking_portal\nfrom loguru import logger\n\n\nclass ChatOutput(CustomComponent):\n display_name = \"Chat Output\"\n description = \"Used to send a message to the chat.\"\n\n field_config = {\n \"code\": {\n \"show\": False,\n }\n }\n\n def build_config(self):\n return {\"message\": {\"input_types\": [\"Text\"]}}\n\n def build(self, message: Optional[Text], is_ai: bool = False) -> Text:\n if not message:\n return \"\"\n try:\n chat_manager = get_chat_manager()\n chat_message = ChatMessage(message=message, is_bot=is_ai)\n # send_message is a coroutine\n # run in a thread safe manner\n with start_blocking_portal() as portal:\n portal.call(chat_manager.send_message, chat_message)\n chat_manager.chat_history.add_message(\n chat_manager.cache_manager.current_client_id, chat_message\n )\n except Exception as exc:\n logger.exception(exc)\n logger.debug(f\"Error sending message to chat: {exc}\")\n self.repr_value = message\n return message\n", "password": false, "name": "code", "advanced": false, "type": "code", "list": false }, "_type": "CustomComponent", "is_ai": { "required": true, "placeholder": "", "show": true, "multiline": false, "value": true, "password": false, "name": "is_ai", "display_name": "is_ai", "advanced": false, "dynamic": false, "info": "", "type": "bool", "list": false }, "message": { "required": false, "placeholder": "", "show": true, "multiline": false, "password": false, "name": "message", "display_name": "message", "advanced": false, "input_types": [ "Text" ], "dynamic": false, "info": "", "type": "Text", "list": false } }, "description": "Used to send a message to the chat.", "base_classes": [ "str" ], "display_name": "Chat Output", "custom_fields": { "is_ai": null, "message": null }, "output_types": [ "ChatOutput" ], "documentation": "", "beta": true, "error": null }, "id": "ChatOutput-1jlJy" }, "selected": true, "dragging": false, "positionAbsolute": { "x": 2002.8008888732943, "y": 926.1397178702218 } } ], "edges": [ { "source": "PromptTemplate-IKKOx", "sourceHandle": "PromptTemplate|PromptTemplate-IKKOx|BasePromptTemplate|PromptTemplate|StringPromptTemplate", "target": "LLMChain-e2dhN", "targetHandle": "BasePromptTemplate|prompt|LLMChain-e2dhN", "style": { "stroke": "#555" }, "className": "", "animated": false, "id": "reactflow__edge-PromptTemplate-IKKOxPromptTemplate|PromptTemplate-IKKOx|StringPromptTemplate|BasePromptTemplate|PromptTemplate-LLMChain-e2dhNBasePromptTemplate|prompt|LLMChain-e2dhN" }, { "source": "ChatOpenAI-2I57f", "sourceHandle": "ChatOpenAI|ChatOpenAI-2I57f|BaseChatModel|ChatOpenAI|BaseLanguageModel|BaseLLM", "target": "LLMChain-e2dhN", "targetHandle": "BaseLanguageModel|llm|LLMChain-e2dhN", "style": { "stroke": "#555" }, "className": "", "animated": false, "id": "reactflow__edge-ChatOpenAI-2I57fChatOpenAI|ChatOpenAI-2I57f|BaseChatModel|ChatOpenAI|BaseLanguageModel|BaseLLM-LLMChain-e2dhNBaseLanguageModel|llm|LLMChain-e2dhN" }, { "source": "ChatInput-207IY", "sourceHandle": "ChatInput|ChatInput-207IY|str", "target": "PromptTemplate-IKKOx", "targetHandle": "Document;BaseOutputParser;str|input|PromptTemplate-IKKOx", "style": { "stroke": "#555" }, "className": "", "animated": false, "id": "reactflow__edge-ChatInput-207IYChatInput|ChatInput-207IY|str-PromptTemplate-IKKOxDocument;BaseOutputParser;str|input|PromptTemplate-IKKOx" }, { "source": "LLMChain-e2dhN", "sourceHandle": "LLMChain|LLMChain-e2dhN|Chain|LLMChain|function|Text", "target": "ChatOutput-1jlJy", "targetHandle": "Text|message|ChatOutput-1jlJy", "style": { "stroke": "#555" }, "className": "stroke-foreground stroke-connection", "animated": true, "id": "reactflow__edge-LLMChain-e2dhNLLMChain|LLMChain-e2dhN|Chain|LLMChain|function|Text-ChatOutput-1jlJyText|message|ChatOutput-1jlJy" } ], "viewport": { "x": -141.98308184453367, "y": -104.98637616656356, "zoom": 0.4788209787464315 } }, "id": "b3388ab9-b5dc-4447-b560-79caef40faa5", "user_id": "c65bfea3-3eea-4e71-8fc4-106238eb0583" }