update projects

This commit is contained in:
ogabrielluiz 2024-06-10 19:00:44 -03:00
commit b5ead60ac9
6 changed files with 402 additions and 549 deletions

View file

@ -36,7 +36,7 @@
"sourceHandle": {
"dataType": "Prompt",
"id": "Prompt-uxBqP",
"name": "Text",
"name": "prompt",
"output_types": [
"Prompt"
]
@ -54,7 +54,7 @@
},
"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œ}",
"source": "Prompt-uxBqP",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-uxBqPœ, œoutput_typesœ: [œPromptœ], œnameœ: œTextœ}",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-uxBqPœ, œoutput_typesœ: [œPromptœ], œnameœ: œpromptœ}",
"style": {
"stroke": "#555"
},
@ -68,7 +68,9 @@
"dataType": "ChatInput",
"id": "ChatInput-P3fgL",
"name": "message",
"output_types": []
"output_types": [
"Text"
]
},
"targetHandle": {
"fieldName": "user_input",
@ -84,7 +86,7 @@
},
"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œ}",
"source": "ChatInput-P3fgL",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-P3fgLœ, œoutput_typesœ: [], œnameœ: œmessageœ}",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-P3fgLœ, œoutput_typesœ: [œTextœ], œnameœ: œmessageœ}",
"style": {
"stroke": "#555"
},
@ -123,22 +125,33 @@
"is_input": null,
"is_output": null,
"name": "",
"output_types": [
"Prompt"
],
"output_types": [],
"outputs": [
{
"display_name": null,
"method": null,
"name": "Prompt",
"selected": null,
"cache": true,
"display_name": "Prompt",
"method": "build_prompt",
"name": "prompt",
"selected": "Prompt",
"types": [
"Prompt"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Text",
"method": "format_prompt",
"name": "text",
"selected": "Text",
"types": [
"Text"
],
"value": "__UNDEFINED__"
}
],
"template": {
"_type": "CustomComponent",
"_type": "Component",
"code": {
"advanced": true,
"dynamic": true,
@ -155,7 +168,7 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.custom import CustomComponent\nfrom langflow.field_typing import Input\nfrom langflow.field_typing.prompt import Prompt\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\": Input(display_name=\"Template\"),\n \"code\": Input(advanced=True),\n }\n\n async def build(\n self,\n template: Prompt,\n **kwargs,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(template, kwargs)\n self.status = prompt.format_text()\n return prompt\n"
"value": "from langflow.custom import Component\nfrom langflow.field_typing import Input, Output\nfrom langflow.field_typing.prompt import Prompt\n\n\nclass PromptComponent(Component):\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\": Input(display_name=\"Template\"),\n }\n\n inputs = [\n Input(name=\"template\", type=Prompt, display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt\", name=\"prompt\", method=\"build_prompt\"),\n Output(display_name=\"Text\", name=\"text\", method=\"format_prompt\"),\n ]\n\n async def format_prompt(self) -> str:\n prompt = await self.build_prompt()\n formatted_text = prompt.format_text()\n self.status = formatted_text\n return formatted_text\n\n async def build_prompt(\n self,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(self.template, self.kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"template": {
"advanced": false,
@ -176,32 +189,6 @@
"required": false,
"show": true,
"title_case": false,
"type": "prompt",
"value": "Answer the user as if you were a pirate.\n\nUser: {user_input}\n\nAnswer: "
},
"user_input": {
"advanced": false,
"display_name": "user_input",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "user_input",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
}
@ -269,13 +256,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Text",
"selected": null,
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -544,22 +533,26 @@
"output_types": [],
"outputs": [
{
"display_name": "Message",
"cache": true,
"display_name": "Text",
"method": "text_response",
"name": "message",
"name": "text",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"display_name": "Record",
"method": "record_response",
"name": "record",
"selected": "Record",
"cache": true,
"display_name": "Message",
"method": "message_response",
"name": "message",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -580,11 +573,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Message\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"message\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n \"template\": self.record_template or \"\",\n }\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Text\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"text_response\"),\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -743,22 +736,26 @@
"output_types": [],
"outputs": [
{
"cache": true,
"display_name": "Message",
"method": "text_response",
"name": "message",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Record",
"method": "record_response",
"method": "message_response",
"name": "record",
"selected": "Record",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -779,11 +776,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n inputs = [\n Input(\n name=\"input_value\",\n type=str,\n display_name=\"Message\",\n multiline=True,\n input_types=[],\n info=\"Message to be passed as input.\",\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"User\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"text\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n },\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n inputs = [\n Input(\n name=\"input_value\",\n type=str,\n display_name=\"Text\",\n multiline=True,\n input_types=[],\n info=\"Message to be passed as input.\",\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"User\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",

View file

@ -133,7 +133,7 @@
"sourceHandle": {
"dataType": "Prompt",
"id": "Prompt-Rse03",
"name": "Text",
"name": "prompt",
"output_types": [
"Prompt"
]
@ -152,7 +152,7 @@
"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œ}",
"selected": false,
"source": "Prompt-Rse03",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-Rse03œ, œoutput_typesœ: [œPromptœ], œnameœ: œTextœ}",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-Rse03œ, œoutput_typesœ: [œPromptœ], œnameœ: œpromptœ}",
"style": {
"stroke": "#555"
},
@ -193,22 +193,33 @@
"is_input": null,
"is_output": null,
"name": "",
"output_types": [
"Prompt"
],
"output_types": [],
"outputs": [
{
"display_name": null,
"method": null,
"name": "Prompt",
"selected": null,
"cache": true,
"display_name": "Prompt",
"method": "build_prompt",
"name": "prompt",
"selected": "Prompt",
"types": [
"Prompt"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Text",
"method": "format_prompt",
"name": "text",
"selected": "Text",
"types": [
"Text"
],
"value": "__UNDEFINED__"
}
],
"template": {
"_type": "CustomComponent",
"_type": "Component",
"code": {
"advanced": true,
"dynamic": true,
@ -225,85 +236,7 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.custom import CustomComponent\nfrom langflow.field_typing import Input\nfrom langflow.field_typing.prompt import Prompt\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\": Input(display_name=\"Template\"),\n \"code\": Input(advanced=True),\n }\n\n async def build(\n self,\n template: Prompt,\n **kwargs,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(template, kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"instructions": {
"advanced": false,
"display_name": "instructions",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "instructions",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
},
"reference_1": {
"advanced": false,
"display_name": "reference_1",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "reference_1",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
},
"reference_2": {
"advanced": false,
"display_name": "reference_2",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "reference_2",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
"value": "from langflow.custom import Component\nfrom langflow.field_typing import Input, Output\nfrom langflow.field_typing.prompt import Prompt\n\n\nclass PromptComponent(Component):\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\": Input(display_name=\"Template\"),\n }\n\n inputs = [\n Input(name=\"template\", type=Prompt, display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt\", name=\"prompt\", method=\"build_prompt\"),\n Output(display_name=\"Text\", name=\"text\", method=\"format_prompt\"),\n ]\n\n async def format_prompt(self) -> str:\n prompt = await self.build_prompt()\n formatted_text = prompt.format_text()\n self.status = formatted_text\n return formatted_text\n\n async def build_prompt(\n self,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(self.template, self.kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"template": {
"advanced": false,
@ -324,8 +257,8 @@
"required": false,
"show": true,
"title_case": false,
"type": "prompt",
"value": "Reference 1:\n\n{reference_1}\n\n---\n\nReference 2:\n\n{reference_2}\n\n---\n\n{instructions}\n\nBlog: \n\n\n"
"type": "str",
"value": ""
}
}
},
@ -369,13 +302,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Record",
"selected": null,
"types": [
"Record"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -470,22 +405,26 @@
"output_types": [],
"outputs": [
{
"display_name": "Message",
"cache": true,
"display_name": "Text",
"method": "text_response",
"name": "message",
"name": "text",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"display_name": "Record",
"method": "record_response",
"name": "record",
"selected": "Record",
"cache": true,
"display_name": "Message",
"method": "message_response",
"name": "message",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -506,11 +445,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Message\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"message\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n \"template\": self.record_template or \"\",\n }\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Text\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"text_response\"),\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -679,13 +618,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Text",
"selected": null,
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -948,13 +889,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Record",
"selected": null,
"types": [
"Record"
]
],
"value": "__UNDEFINED__"
}
],
"template": {

View file

@ -8,7 +8,9 @@
"dataType": "ChatInput",
"id": "ChatInput-MsSJ9",
"name": "message",
"output_types": []
"output_types": [
"Text"
]
},
"targetHandle": {
"fieldName": "Question",
@ -24,7 +26,7 @@
},
"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œ}",
"source": "ChatInput-MsSJ9",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-MsSJ9œ, œoutput_typesœ: [], œnameœ: œmessageœ}",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-MsSJ9œ, œoutput_typesœ: [œTextœ], œnameœ: œmessageœ}",
"style": {
"stroke": "#555"
},
@ -69,7 +71,7 @@
"sourceHandle": {
"dataType": "Prompt",
"id": "Prompt-tHwPf",
"name": "Text",
"name": "prompt",
"output_types": [
"Prompt"
]
@ -87,7 +89,7 @@
},
"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œ}",
"source": "Prompt-tHwPf",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-tHwPfœ, œoutput_typesœ: [œPromptœ], œnameœ: œTextœ}",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-tHwPfœ, œoutput_typesœ: [œPromptœ], œnameœ: œpromptœ}",
"style": {
"stroke": "#555"
},
@ -156,74 +158,33 @@
"is_input": null,
"is_output": null,
"name": "",
"output_types": [
"Prompt"
],
"output_types": [],
"outputs": [
{
"display_name": null,
"method": null,
"name": "Prompt",
"selected": null,
"cache": true,
"display_name": "Prompt",
"method": "build_prompt",
"name": "prompt",
"selected": "Prompt",
"types": [
"Prompt"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Text",
"method": "format_prompt",
"name": "text",
"selected": "Text",
"types": [
"Text"
],
"value": "__UNDEFINED__"
}
],
"template": {
"Document": {
"advanced": false,
"display_name": "Document",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "Document",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
},
"Question": {
"advanced": false,
"display_name": "Question",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "Question",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
},
"_type": "CustomComponent",
"_type": "Component",
"code": {
"advanced": true,
"dynamic": true,
@ -240,7 +201,7 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.custom import CustomComponent\nfrom langflow.field_typing import Input\nfrom langflow.field_typing.prompt import Prompt\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\": Input(display_name=\"Template\"),\n \"code\": Input(advanced=True),\n }\n\n async def build(\n self,\n template: Prompt,\n **kwargs,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(template, kwargs)\n self.status = prompt.format_text()\n return prompt\n"
"value": "from langflow.custom import Component\nfrom langflow.field_typing import Input, Output\nfrom langflow.field_typing.prompt import Prompt\n\n\nclass PromptComponent(Component):\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\": Input(display_name=\"Template\"),\n }\n\n inputs = [\n Input(name=\"template\", type=Prompt, display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt\", name=\"prompt\", method=\"build_prompt\"),\n Output(display_name=\"Text\", name=\"text\", method=\"format_prompt\"),\n ]\n\n async def format_prompt(self) -> str:\n prompt = await self.build_prompt()\n formatted_text = prompt.format_text()\n self.status = formatted_text\n return formatted_text\n\n async def build_prompt(\n self,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(self.template, self.kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"template": {
"advanced": false,
@ -261,8 +222,8 @@
"required": false,
"show": true,
"title_case": false,
"type": "prompt",
"value": "Answer user's questions based on the document below:\n\n---\n\n{Document}\n\n---\n\nQuestion:\n{Question}\n\nAnswer:\n"
"type": "str",
"value": ""
}
}
},
@ -430,22 +391,26 @@
"output_types": [],
"outputs": [
{
"cache": true,
"display_name": "Message",
"method": "text_response",
"name": "message",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Record",
"method": "record_response",
"method": "message_response",
"name": "record",
"selected": "Record",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -466,11 +431,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n inputs = [\n Input(\n name=\"input_value\",\n type=str,\n display_name=\"Message\",\n multiline=True,\n input_types=[],\n info=\"Message to be passed as input.\",\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"User\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"text\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n },\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n inputs = [\n Input(\n name=\"input_value\",\n type=str,\n display_name=\"Text\",\n multiline=True,\n input_types=[],\n info=\"Message to be passed as input.\",\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"User\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -605,22 +570,26 @@
"output_types": [],
"outputs": [
{
"display_name": "Message",
"cache": true,
"display_name": "Text",
"method": "text_response",
"name": "message",
"name": "text",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"display_name": "Record",
"method": "record_response",
"name": "record",
"selected": "Record",
"cache": true,
"display_name": "Message",
"method": "message_response",
"name": "message",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -641,11 +610,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Message\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"message\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n \"template\": self.record_template or \"\",\n }\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Text\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"text_response\"),\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -819,13 +788,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Text",
"selected": null,
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
}
],
"template": {

View file

@ -41,7 +41,9 @@
"dataType": "ChatInput",
"id": "ChatInput-t7F8v",
"name": "message",
"output_types": []
"output_types": [
"Text"
]
},
"targetHandle": {
"fieldName": "user_message",
@ -58,7 +60,7 @@
"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œ}",
"selected": false,
"source": "ChatInput-t7F8v",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-t7F8vœ, œoutput_typesœ: [], œnameœ: œmessageœ}",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-t7F8vœ, œoutput_typesœ: [œTextœ], œnameœ: œmessageœ}",
"style": {
"stroke": "#555"
},
@ -71,7 +73,7 @@
"sourceHandle": {
"dataType": "Prompt",
"id": "Prompt-ODkUx",
"name": "Text",
"name": "prompt",
"output_types": [
"Prompt"
]
@ -89,7 +91,7 @@
},
"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œ}",
"source": "Prompt-ODkUx",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-ODkUxœ, œoutput_typesœ: [œPromptœ], œnameœ: œTextœ}",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-ODkUxœ, œoutput_typesœ: [œPromptœ], œnameœ: œpromptœ}",
"style": {
"stroke": "#555"
},
@ -185,22 +187,26 @@
"output_types": [],
"outputs": [
{
"cache": true,
"display_name": "Message",
"method": "text_response",
"name": "message",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Record",
"method": "record_response",
"method": "message_response",
"name": "record",
"selected": "Record",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -221,11 +227,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n inputs = [\n Input(\n name=\"input_value\",\n type=str,\n display_name=\"Message\",\n multiline=True,\n input_types=[],\n info=\"Message to be passed as input.\",\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"User\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"text\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n },\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n inputs = [\n Input(\n name=\"input_value\",\n type=str,\n display_name=\"Text\",\n multiline=True,\n input_types=[],\n info=\"Message to be passed as input.\",\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"User\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -360,22 +366,26 @@
"output_types": [],
"outputs": [
{
"display_name": "Message",
"cache": true,
"display_name": "Text",
"method": "text_response",
"name": "message",
"name": "text",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"display_name": "Record",
"method": "record_response",
"name": "record",
"selected": "Record",
"cache": true,
"display_name": "Message",
"method": "message_response",
"name": "message",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -396,11 +406,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Message\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"message\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n \"template\": self.record_template or \"\",\n }\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Text\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"text_response\"),\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -563,13 +573,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Text",
"selected": null,
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -779,22 +791,33 @@
"is_input": null,
"is_output": null,
"name": "",
"output_types": [
"Prompt"
],
"output_types": [],
"outputs": [
{
"display_name": null,
"method": null,
"name": "Prompt",
"selected": null,
"cache": true,
"display_name": "Prompt",
"method": "build_prompt",
"name": "prompt",
"selected": "Prompt",
"types": [
"Prompt"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Text",
"method": "format_prompt",
"name": "text",
"selected": "Text",
"types": [
"Text"
],
"value": "__UNDEFINED__"
}
],
"template": {
"_type": "CustomComponent",
"_type": "Component",
"code": {
"advanced": true,
"dynamic": true,
@ -811,33 +834,7 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.custom import CustomComponent\nfrom langflow.field_typing import Input\nfrom langflow.field_typing.prompt import Prompt\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\": Input(display_name=\"Template\"),\n \"code\": Input(advanced=True),\n }\n\n async def build(\n self,\n template: Prompt,\n **kwargs,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(template, kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"context": {
"advanced": false,
"display_name": "context",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "context",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
"value": "from langflow.custom import Component\nfrom langflow.field_typing import Input, Output\nfrom langflow.field_typing.prompt import Prompt\n\n\nclass PromptComponent(Component):\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\": Input(display_name=\"Template\"),\n }\n\n inputs = [\n Input(name=\"template\", type=Prompt, display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt\", name=\"prompt\", method=\"build_prompt\"),\n Output(display_name=\"Text\", name=\"text\", method=\"format_prompt\"),\n ]\n\n async def format_prompt(self) -> str:\n prompt = await self.build_prompt()\n formatted_text = prompt.format_text()\n self.status = formatted_text\n return formatted_text\n\n async def build_prompt(\n self,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(self.template, self.kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"template": {
"advanced": false,
@ -858,32 +855,6 @@
"required": false,
"show": true,
"title_case": false,
"type": "prompt",
"value": "{context}\n\nUser: {user_message}\nAI: "
},
"user_message": {
"advanced": false,
"display_name": "user_message",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "user_message",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
}
@ -949,13 +920,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Text",
"selected": null,
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
}
],
"template": {

View file

@ -8,7 +8,9 @@
"dataType": "TextInput",
"id": "TextInput-sptaH",
"name": "text",
"output_types": []
"output_types": [
"Text"
]
},
"targetHandle": {
"fieldName": "document",
@ -24,7 +26,7 @@
},
"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œ}",
"source": "TextInput-sptaH",
"sourceHandle": "{œdataTypeœ: œTextInputœ, œidœ: œTextInput-sptaHœ, œoutput_typesœ: [], œnameœ: œtextœ}",
"sourceHandle": "{œdataTypeœ: œTextInputœ, œidœ: œTextInput-sptaHœ, œoutput_typesœ: [œTextœ], œnameœ: œtextœ}",
"style": {
"stroke": "#555"
},
@ -38,9 +40,7 @@
"dataType": "Prompt",
"id": "Prompt-amqBu",
"name": "Text",
"output_types": [
"Prompt"
]
"output_types": []
},
"targetHandle": {
"fieldName": "input_value",
@ -54,7 +54,7 @@
},
"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œ}",
"source": "Prompt-amqBu",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-amqBuœ, œoutput_typesœ: [œPromptœ], œnameœ: œTextœ}",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-amqBuœ, œoutput_typesœ: [], œnameœ: œTextœ}",
"style": {
"stroke": "#555"
},
@ -67,7 +67,7 @@
"sourceHandle": {
"dataType": "Prompt",
"id": "Prompt-amqBu",
"name": "Text",
"name": "prompt",
"output_types": [
"Prompt"
]
@ -85,7 +85,7 @@
},
"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œ}",
"source": "Prompt-amqBu",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-amqBuœ, œoutput_typesœ: [œPromptœ], œnameœ: œTextœ}",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-amqBuœ, œoutput_typesœ: [œPromptœ], œnameœ: œpromptœ}",
"style": {
"stroke": "#555"
},
@ -160,9 +160,7 @@
"dataType": "Prompt",
"id": "Prompt-gTNiz",
"name": "Text",
"output_types": [
"Prompt"
]
"output_types": []
},
"targetHandle": {
"fieldName": "input_value",
@ -176,7 +174,7 @@
},
"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œ}",
"source": "Prompt-gTNiz",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-gTNizœ, œoutput_typesœ: [œPromptœ], œnameœ: œTextœ}",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-gTNizœ, œoutput_typesœ: [], œnameœ: œTextœ}",
"style": {
"stroke": "#555"
},
@ -189,7 +187,7 @@
"sourceHandle": {
"dataType": "Prompt",
"id": "Prompt-gTNiz",
"name": "Text",
"name": "prompt",
"output_types": [
"Prompt"
]
@ -207,7 +205,7 @@
},
"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œ}",
"source": "Prompt-gTNiz",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-gTNizœ, œoutput_typesœ: [œPromptœ], œnameœ: œTextœ}",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-gTNizœ, œoutput_typesœ: [œPromptœ], œnameœ: œpromptœ}",
"style": {
"stroke": "#555"
},
@ -275,22 +273,33 @@
"is_input": null,
"is_output": null,
"name": "",
"output_types": [
"Prompt"
],
"output_types": [],
"outputs": [
{
"display_name": null,
"method": null,
"name": "Prompt",
"selected": null,
"cache": true,
"display_name": "Prompt",
"method": "build_prompt",
"name": "prompt",
"selected": "Prompt",
"types": [
"Prompt"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Text",
"method": "format_prompt",
"name": "text",
"selected": "Text",
"types": [
"Text"
],
"value": "__UNDEFINED__"
}
],
"template": {
"_type": "CustomComponent",
"_type": "Component",
"code": {
"advanced": true,
"dynamic": true,
@ -307,33 +316,7 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.custom import CustomComponent\nfrom langflow.field_typing import Input\nfrom langflow.field_typing.prompt import Prompt\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\": Input(display_name=\"Template\"),\n \"code\": Input(advanced=True),\n }\n\n async def build(\n self,\n template: Prompt,\n **kwargs,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(template, kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"document": {
"advanced": false,
"display_name": "document",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "document",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
"value": "from langflow.custom import Component\nfrom langflow.field_typing import Input, Output\nfrom langflow.field_typing.prompt import Prompt\n\n\nclass PromptComponent(Component):\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\": Input(display_name=\"Template\"),\n }\n\n inputs = [\n Input(name=\"template\", type=Prompt, display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt\", name=\"prompt\", method=\"build_prompt\"),\n Output(display_name=\"Text\", name=\"text\", method=\"format_prompt\"),\n ]\n\n async def format_prompt(self) -> str:\n prompt = await self.build_prompt()\n formatted_text = prompt.format_text()\n self.status = formatted_text\n return formatted_text\n\n async def build_prompt(\n self,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(self.template, self.kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"template": {
"advanced": false,
@ -354,8 +337,8 @@
"required": false,
"show": true,
"title_case": false,
"type": "prompt",
"value": "You are a helpful assistant. Given a long document, your task is to create a concise summary that captures the main points and key details. The summary should be clear, accurate, and succinct. Please provide the summary in the format below:\n####\n{document}\n####\n"
"type": "str",
"value": ""
}
}
},
@ -406,22 +389,33 @@
"is_input": null,
"is_output": null,
"name": "",
"output_types": [
"Prompt"
],
"output_types": [],
"outputs": [
{
"display_name": null,
"method": null,
"name": "Prompt",
"selected": null,
"cache": true,
"display_name": "Prompt",
"method": "build_prompt",
"name": "prompt",
"selected": "Prompt",
"types": [
"Prompt"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Text",
"method": "format_prompt",
"name": "text",
"selected": "Text",
"types": [
"Text"
],
"value": "__UNDEFINED__"
}
],
"template": {
"_type": "CustomComponent",
"_type": "Component",
"code": {
"advanced": true,
"dynamic": true,
@ -438,33 +432,7 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.custom import CustomComponent\nfrom langflow.field_typing import Input\nfrom langflow.field_typing.prompt import Prompt\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\": Input(display_name=\"Template\"),\n \"code\": Input(advanced=True),\n }\n\n async def build(\n self,\n template: Prompt,\n **kwargs,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(template, kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"summary": {
"advanced": false,
"display_name": "summary",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "summary",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
"value": "from langflow.custom import Component\nfrom langflow.field_typing import Input, Output\nfrom langflow.field_typing.prompt import Prompt\n\n\nclass PromptComponent(Component):\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\": Input(display_name=\"Template\"),\n }\n\n inputs = [\n Input(name=\"template\", type=Prompt, display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt\", name=\"prompt\", method=\"build_prompt\"),\n Output(display_name=\"Text\", name=\"text\", method=\"format_prompt\"),\n ]\n\n async def format_prompt(self) -> str:\n prompt = await self.build_prompt()\n formatted_text = prompt.format_text()\n self.status = formatted_text\n return formatted_text\n\n async def build_prompt(\n self,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(self.template, self.kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"template": {
"advanced": false,
@ -485,8 +453,8 @@
"required": false,
"show": true,
"title_case": false,
"type": "prompt",
"value": "Given a summary of an article, please create two multiple-choice questions that cover the key points and details mentioned. Ensure the questions are clear and provide three options (A, B, C), with one correct answer.\n####\n{summary}\n####"
"type": "str",
"value": ""
}
}
},
@ -532,22 +500,26 @@
"output_types": [],
"outputs": [
{
"display_name": "Message",
"cache": true,
"display_name": "Text",
"method": "text_response",
"name": "message",
"name": "text",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"display_name": "Record",
"method": "record_response",
"name": "record",
"selected": "Record",
"cache": true,
"display_name": "Message",
"method": "message_response",
"name": "message",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -568,11 +540,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Message\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"message\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n \"template\": self.record_template or \"\",\n }\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Text\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"text_response\"),\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -728,22 +700,26 @@
"output_types": [],
"outputs": [
{
"display_name": "Message",
"cache": true,
"display_name": "Text",
"method": "text_response",
"name": "message",
"name": "text",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"display_name": "Record",
"method": "record_response",
"name": "record",
"selected": "Record",
"cache": true,
"display_name": "Message",
"method": "message_response",
"name": "message",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -764,11 +740,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Message\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"message\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n \"template\": self.record_template or \"\",\n }\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Text\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"text_response\"),\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -918,13 +894,15 @@
"output_types": [],
"outputs": [
{
"cache": true,
"display_name": "Text",
"method": "text_response",
"name": "text",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -1162,13 +1140,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Text",
"selected": null,
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -1559,13 +1539,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Text",
"selected": null,
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
}
],
"template": {

View file

@ -41,7 +41,9 @@
"dataType": "ChatInput",
"id": "ChatInput-yxMKE",
"name": "message",
"output_types": []
"output_types": [
"Text"
]
},
"targetHandle": {
"fieldName": "question",
@ -58,7 +60,7 @@
"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œ}",
"selected": false,
"source": "ChatInput-yxMKE",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-yxMKEœ, œoutput_typesœ: [], œnameœ: œmessageœ}",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-yxMKEœ, œoutput_typesœ: [œTextœ], œnameœ: œmessageœ}",
"style": {
"stroke": "#555"
},
@ -71,7 +73,7 @@
"sourceHandle": {
"dataType": "Prompt",
"id": "Prompt-xeI6K",
"name": "Text",
"name": "prompt",
"output_types": [
"Prompt"
]
@ -90,7 +92,7 @@
"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œ}",
"selected": false,
"source": "Prompt-xeI6K",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-xeI6Kœ, œoutput_typesœ: [œPromptœ], œnameœ: œTextœ}",
"sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-xeI6Kœ, œoutput_typesœ: [œPromptœ], œnameœ: œpromptœ}",
"style": {
"stroke": "#555"
},
@ -192,7 +194,9 @@
"dataType": "ChatInput",
"id": "ChatInput-yxMKE",
"name": "message",
"output_types": []
"output_types": [
"Text"
]
},
"targetHandle": {
"fieldName": "input_value",
@ -205,7 +209,7 @@
},
"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œ}",
"source": "ChatInput-yxMKE",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-yxMKEœ, œoutput_typesœ: [], œnameœ: œmessageœ}",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-yxMKEœ, œoutput_typesœ: [œTextœ], œnameœ: œmessageœ}",
"style": {
"stroke": "#555"
},
@ -328,22 +332,26 @@
"output_types": [],
"outputs": [
{
"cache": true,
"display_name": "Message",
"method": "text_response",
"name": "message",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Record",
"method": "record_response",
"method": "message_response",
"name": "record",
"selected": "Record",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -364,11 +372,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n inputs = [\n Input(\n name=\"input_value\",\n type=str,\n display_name=\"Message\",\n multiline=True,\n input_types=[],\n info=\"Message to be passed as input.\",\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"User\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"text\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n },\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n inputs = [\n Input(\n name=\"input_value\",\n type=str,\n display_name=\"Text\",\n multiline=True,\n input_types=[],\n info=\"Message to be passed as input.\",\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"User\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -630,13 +638,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Embeddings",
"selected": null,
"types": [
"Embeddings"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -1154,13 +1164,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Text",
"selected": null,
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -1431,22 +1443,33 @@
"is_input": null,
"is_output": null,
"name": "",
"output_types": [
"Prompt"
],
"output_types": [],
"outputs": [
{
"display_name": null,
"method": null,
"name": "Prompt",
"selected": null,
"cache": true,
"display_name": "Prompt",
"method": "build_prompt",
"name": "prompt",
"selected": "Prompt",
"types": [
"Prompt"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": "Text",
"method": "format_prompt",
"name": "text",
"selected": "Text",
"types": [
"Text"
],
"value": "__UNDEFINED__"
}
],
"template": {
"_type": "CustomComponent",
"_type": "Component",
"code": {
"advanced": true,
"dynamic": true,
@ -1463,59 +1486,7 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.custom import CustomComponent\nfrom langflow.field_typing import Input\nfrom langflow.field_typing.prompt import Prompt\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\": Input(display_name=\"Template\"),\n \"code\": Input(advanced=True),\n }\n\n async def build(\n self,\n template: Prompt,\n **kwargs,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(template, kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"context": {
"advanced": false,
"display_name": "context",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "context",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
},
"question": {
"advanced": false,
"display_name": "question",
"dynamic": false,
"field_type": "str",
"fileTypes": [],
"file_path": "",
"info": "",
"input_types": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"list": false,
"load_from_db": false,
"multiline": true,
"name": "question",
"password": false,
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"type": "str",
"value": ""
"value": "from langflow.custom import Component\nfrom langflow.field_typing import Input, Output\nfrom langflow.field_typing.prompt import Prompt\n\n\nclass PromptComponent(Component):\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\": Input(display_name=\"Template\"),\n }\n\n inputs = [\n Input(name=\"template\", type=Prompt, display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt\", name=\"prompt\", method=\"build_prompt\"),\n Output(display_name=\"Text\", name=\"text\", method=\"format_prompt\"),\n ]\n\n async def format_prompt(self) -> str:\n prompt = await self.build_prompt()\n formatted_text = prompt.format_text()\n self.status = formatted_text\n return formatted_text\n\n async def build_prompt(\n self,\n ) -> Prompt:\n prompt = await Prompt.from_template_and_variables(self.template, self.kwargs)\n self.status = prompt.format_text()\n return prompt\n"
},
"template": {
"advanced": false,
@ -1536,8 +1507,8 @@
"required": false,
"show": true,
"title_case": false,
"type": "prompt",
"value": "{context}\n\n---\n\nGiven the context above, answer the question as best as possible.\n\nQuestion: {question}\n\nAnswer: "
"type": "str",
"value": ""
}
}
},
@ -1587,22 +1558,26 @@
"output_types": [],
"outputs": [
{
"display_name": "Message",
"cache": true,
"display_name": "Text",
"method": "text_response",
"name": "message",
"name": "text",
"selected": "Text",
"types": [
"Text"
]
],
"value": "__UNDEFINED__"
},
{
"display_name": "Record",
"method": "record_response",
"name": "record",
"selected": "Record",
"cache": true,
"display_name": "Message",
"method": "message_response",
"name": "message",
"selected": "Message",
"types": [
"Record"
]
"Message"
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -1623,11 +1598,11 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Message\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"text_response\"),\n Output(display_name=\"Record\", name=\"record\", method=\"record_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Record, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def record_response(self) -> Record:\n record = Record(\n data={\n \"message\": self.input_value,\n \"sender\": self.sender,\n \"sender_name\": self.sender_name,\n \"session_id\": self.session_id,\n \"template\": self.record_template or \"\",\n }\n )\n if self.session_id and isinstance(record, (Record, str)):\n self.store_message(record, self.session_id, self.sender, self.sender_name)\n return record\n"
"value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema.message import Message\nfrom langflow.template import Input, Output\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n inputs = [\n Input(\n name=\"input_value\", type=str, display_name=\"Text\", multiline=True, info=\"Message to be passed as output.\"\n ),\n Input(\n name=\"sender\",\n type=str,\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n Input(name=\"sender_name\", type=str, display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\"),\n Input(\n name=\"session_id\", type=str, display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n Input(\n name=\"record_template\",\n type=str,\n display_name=\"Record Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"text_response\"),\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def text_response(self) -> Text:\n result = self.input_value\n if self.session_id and isinstance(result, (Message, str)):\n self.store_message(result, self.session_id, self.sender, self.sender_name)\n return result\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if self.session_id and isinstance(message, (Message, str)):\n self.store_message(message)\n self.status = message\n return message\n"
},
"input_value": {
"advanced": false,
"display_name": "Message",
"display_name": "Text",
"dynamic": false,
"fileTypes": [],
"file_path": "",
@ -1782,13 +1757,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Record",
"selected": null,
"types": [
"Record"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -1912,13 +1889,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Record",
"selected": null,
"types": [
"Record"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -2090,13 +2069,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Record",
"selected": null,
"types": [
"Record"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -2553,22 +2534,26 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "VectorStore",
"selected": null,
"types": [
"VectorStore"
]
],
"value": "__UNDEFINED__"
},
{
"cache": true,
"display_name": null,
"method": null,
"name": "BaseRetriever",
"selected": null,
"types": [
"BaseRetriever"
]
],
"value": "__UNDEFINED__"
}
],
"template": {
@ -2975,13 +2960,15 @@
],
"outputs": [
{
"cache": true,
"display_name": null,
"method": null,
"name": "Embeddings",
"selected": null,
"types": [
"Embeddings"
]
],
"value": "__UNDEFINED__"
}
],
"template": {