diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json b/src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json index 81b636c72..7c439357b 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json @@ -6,7 +6,7 @@ "data": { "sourceHandle": { "dataType": "ChatInput", - "id": "ChatInput-1Sa2a", + "id": "ChatInput-1QVCE", "name": "message", "output_types": [ "Message" @@ -14,25 +14,25 @@ }, "targetHandle": { "fieldName": "search_input", - "id": "AstraVectorStoreComponent-ANsbx", + "id": "AstraVectorStoreComponent-vXWPf", "inputTypes": [ "Message" ], "type": "str" } }, - "id": "reactflow__edge-ChatInput-1Sa2a{œdataTypeœ:œChatInputœ,œidœ:œChatInput-1Sa2aœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-AstraVectorStoreComponent-ANsbx{œfieldNameœ:œsearch_inputœ,œidœ:œAstraVectorStoreComponent-ANsbxœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}", - "source": "ChatInput-1Sa2a", - "sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-1Sa2aœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}", - "target": "AstraVectorStoreComponent-ANsbx", - "targetHandle": "{œfieldNameœ: œsearch_inputœ, œidœ: œAstraVectorStoreComponent-ANsbxœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}" + "id": "reactflow__edge-ChatInput-1QVCE{œdataTypeœ:œChatInputœ,œidœ:œChatInput-1QVCEœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-AstraVectorStoreComponent-vXWPf{œfieldNameœ:œsearch_inputœ,œidœ:œAstraVectorStoreComponent-vXWPfœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}", + "source": "ChatInput-1QVCE", + "sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-1QVCEœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}", + "target": "AstraVectorStoreComponent-vXWPf", + "targetHandle": "{œfieldNameœ: œsearch_inputœ, œidœ: œAstraVectorStoreComponent-vXWPfœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}" }, { "className": "", "data": { "sourceHandle": { "dataType": "ParseData", - "id": "ParseData-NJMcn", + "id": "ParseData-QVaZr", "name": "text", "output_types": [ "Message" @@ -40,7 +40,7 @@ }, "targetHandle": { "fieldName": "context", - "id": "Prompt-f6nr9", + "id": "Prompt-eV1SH", "inputTypes": [ "Message", "Text" @@ -48,18 +48,18 @@ "type": "str" } }, - "id": "reactflow__edge-ParseData-NJMcn{œdataTypeœ:œParseDataœ,œidœ:œParseData-NJMcnœ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}-Prompt-f6nr9{œfieldNameœ:œcontextœ,œidœ:œPrompt-f6nr9œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}", - "source": "ParseData-NJMcn", - "sourceHandle": "{œdataTypeœ: œParseDataœ, œidœ: œParseData-NJMcnœ, œnameœ: œtextœ, œoutput_typesœ: [œMessageœ]}", - "target": "Prompt-f6nr9", - "targetHandle": "{œfieldNameœ: œcontextœ, œidœ: œPrompt-f6nr9œ, œinputTypesœ: [œMessageœ, œTextœ], œtypeœ: œstrœ}" + "id": "reactflow__edge-ParseData-QVaZr{œdataTypeœ:œParseDataœ,œidœ:œParseData-QVaZrœ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}-Prompt-eV1SH{œfieldNameœ:œcontextœ,œidœ:œPrompt-eV1SHœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}", + "source": "ParseData-QVaZr", + "sourceHandle": "{œdataTypeœ: œParseDataœ, œidœ: œParseData-QVaZrœ, œnameœ: œtextœ, œoutput_typesœ: [œMessageœ]}", + "target": "Prompt-eV1SH", + "targetHandle": "{œfieldNameœ: œcontextœ, œidœ: œPrompt-eV1SHœ, œinputTypesœ: [œMessageœ, œTextœ], œtypeœ: œstrœ}" }, { "className": "", "data": { "sourceHandle": { "dataType": "ChatInput", - "id": "ChatInput-1Sa2a", + "id": "ChatInput-1QVCE", "name": "message", "output_types": [ "Message" @@ -67,7 +67,7 @@ }, "targetHandle": { "fieldName": "question", - "id": "Prompt-f6nr9", + "id": "Prompt-eV1SH", "inputTypes": [ "Message", "Text" @@ -75,18 +75,18 @@ "type": "str" } }, - "id": "reactflow__edge-ChatInput-1Sa2a{œdataTypeœ:œChatInputœ,œidœ:œChatInput-1Sa2aœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-Prompt-f6nr9{œfieldNameœ:œquestionœ,œidœ:œPrompt-f6nr9œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}", - "source": "ChatInput-1Sa2a", - "sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-1Sa2aœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}", - "target": "Prompt-f6nr9", - "targetHandle": "{œfieldNameœ: œquestionœ, œidœ: œPrompt-f6nr9œ, œinputTypesœ: [œMessageœ, œTextœ], œtypeœ: œstrœ}" + "id": "reactflow__edge-ChatInput-1QVCE{œdataTypeœ:œChatInputœ,œidœ:œChatInput-1QVCEœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-Prompt-eV1SH{œfieldNameœ:œquestionœ,œidœ:œPrompt-eV1SHœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}", + "source": "ChatInput-1QVCE", + "sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-1QVCEœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}", + "target": "Prompt-eV1SH", + "targetHandle": "{œfieldNameœ: œquestionœ, œidœ: œPrompt-eV1SHœ, œinputTypesœ: [œMessageœ, œTextœ], œtypeœ: œstrœ}" }, { "className": "", "data": { "sourceHandle": { "dataType": "File", - "id": "File-vPaII", + "id": "File-RKdDQ", "name": "data", "output_types": [ "Data" @@ -94,25 +94,25 @@ }, "targetHandle": { "fieldName": "data_inputs", - "id": "SplitText-GMvuX", + "id": "SplitText-74sLS", "inputTypes": [ "Data" ], "type": "other" } }, - "id": "reactflow__edge-File-vPaII{œdataTypeœ:œFileœ,œidœ:œFile-vPaIIœ,œnameœ:œdataœ,œoutput_typesœ:[œDataœ]}-SplitText-GMvuX{œfieldNameœ:œdata_inputsœ,œidœ:œSplitText-GMvuXœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}", - "source": "File-vPaII", - "sourceHandle": "{œdataTypeœ: œFileœ, œidœ: œFile-vPaIIœ, œnameœ: œdataœ, œoutput_typesœ: [œDataœ]}", - "target": "SplitText-GMvuX", - "targetHandle": "{œfieldNameœ: œdata_inputsœ, œidœ: œSplitText-GMvuXœ, œinputTypesœ: [œDataœ], œtypeœ: œotherœ}" + "id": "reactflow__edge-File-RKdDQ{œdataTypeœ:œFileœ,œidœ:œFile-RKdDQœ,œnameœ:œdataœ,œoutput_typesœ:[œDataœ]}-SplitText-74sLS{œfieldNameœ:œdata_inputsœ,œidœ:œSplitText-74sLSœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}", + "source": "File-RKdDQ", + "sourceHandle": "{œdataTypeœ: œFileœ, œidœ: œFile-RKdDQœ, œnameœ: œdataœ, œoutput_typesœ: [œDataœ]}", + "target": "SplitText-74sLS", + "targetHandle": "{œfieldNameœ: œdata_inputsœ, œidœ: œSplitText-74sLSœ, œinputTypesœ: [œDataœ], œtypeœ: œotherœ}" }, { "className": "", "data": { "sourceHandle": { "dataType": "SplitText", - "id": "SplitText-GMvuX", + "id": "SplitText-74sLS", "name": "chunks", "output_types": [ "Data" @@ -120,25 +120,25 @@ }, "targetHandle": { "fieldName": "ingest_data", - "id": "AstraVectorStoreComponent-sQo90", + "id": "AstraVectorStoreComponent-wvuVK", "inputTypes": [ "Data" ], "type": "other" } }, - "id": "reactflow__edge-SplitText-GMvuX{œdataTypeœ:œSplitTextœ,œidœ:œSplitText-GMvuXœ,œnameœ:œchunksœ,œoutput_typesœ:[œDataœ]}-AstraVectorStoreComponent-sQo90{œfieldNameœ:œingest_dataœ,œidœ:œAstraVectorStoreComponent-sQo90œ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}", - "source": "SplitText-GMvuX", - "sourceHandle": "{œdataTypeœ: œSplitTextœ, œidœ: œSplitText-GMvuXœ, œnameœ: œchunksœ, œoutput_typesœ: [œDataœ]}", - "target": "AstraVectorStoreComponent-sQo90", - "targetHandle": "{œfieldNameœ: œingest_dataœ, œidœ: œAstraVectorStoreComponent-sQo90œ, œinputTypesœ: [œDataœ], œtypeœ: œotherœ}" + "id": "reactflow__edge-SplitText-74sLS{œdataTypeœ:œSplitTextœ,œidœ:œSplitText-74sLSœ,œnameœ:œchunksœ,œoutput_typesœ:[œDataœ]}-AstraVectorStoreComponent-wvuVK{œfieldNameœ:œingest_dataœ,œidœ:œAstraVectorStoreComponent-wvuVKœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}", + "source": "SplitText-74sLS", + "sourceHandle": "{œdataTypeœ: œSplitTextœ, œidœ: œSplitText-74sLSœ, œnameœ: œchunksœ, œoutput_typesœ: [œDataœ]}", + "target": "AstraVectorStoreComponent-wvuVK", + "targetHandle": "{œfieldNameœ: œingest_dataœ, œidœ: œAstraVectorStoreComponent-wvuVKœ, œinputTypesœ: [œDataœ], œtypeœ: œotherœ}" }, { "className": "", "data": { "sourceHandle": { "dataType": "OpenAIEmbeddings", - "id": "OpenAIEmbeddings-2Vcb5", + "id": "OpenAIEmbeddings-rQV2h", "name": "embeddings", "output_types": [ "Embeddings" @@ -146,7 +146,7 @@ }, "targetHandle": { "fieldName": "embedding", - "id": "AstraVectorStoreComponent-sQo90", + "id": "AstraVectorStoreComponent-wvuVK", "inputTypes": [ "Embeddings", "dict" @@ -154,18 +154,18 @@ "type": "other" } }, - "id": "reactflow__edge-OpenAIEmbeddings-2Vcb5{œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-2Vcb5œ,œnameœ:œembeddingsœ,œoutput_typesœ:[œEmbeddingsœ]}-AstraVectorStoreComponent-sQo90{œfieldNameœ:œembeddingœ,œidœ:œAstraVectorStoreComponent-sQo90œ,œinputTypesœ:[œEmbeddingsœ,œdictœ],œtypeœ:œotherœ}", - "source": "OpenAIEmbeddings-2Vcb5", - "sourceHandle": "{œdataTypeœ: œOpenAIEmbeddingsœ, œidœ: œOpenAIEmbeddings-2Vcb5œ, œnameœ: œembeddingsœ, œoutput_typesœ: [œEmbeddingsœ]}", - "target": "AstraVectorStoreComponent-sQo90", - "targetHandle": "{œfieldNameœ: œembeddingœ, œidœ: œAstraVectorStoreComponent-sQo90œ, œinputTypesœ: [œEmbeddingsœ, œdictœ], œtypeœ: œotherœ}" + "id": "reactflow__edge-OpenAIEmbeddings-rQV2h{œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-rQV2hœ,œnameœ:œembeddingsœ,œoutput_typesœ:[œEmbeddingsœ]}-AstraVectorStoreComponent-wvuVK{œfieldNameœ:œembeddingœ,œidœ:œAstraVectorStoreComponent-wvuVKœ,œinputTypesœ:[œEmbeddingsœ,œdictœ],œtypeœ:œotherœ}", + "source": "OpenAIEmbeddings-rQV2h", + "sourceHandle": "{œdataTypeœ: œOpenAIEmbeddingsœ, œidœ: œOpenAIEmbeddings-rQV2hœ, œnameœ: œembeddingsœ, œoutput_typesœ: [œEmbeddingsœ]}", + "target": "AstraVectorStoreComponent-wvuVK", + "targetHandle": "{œfieldNameœ: œembeddingœ, œidœ: œAstraVectorStoreComponent-wvuVKœ, œinputTypesœ: [œEmbeddingsœ, œdictœ], œtypeœ: œotherœ}" }, { "className": "", "data": { "sourceHandle": { "dataType": "OpenAIEmbeddings", - "id": "OpenAIEmbeddings-bKlZn", + "id": "OpenAIEmbeddings-EJT2O", "name": "embeddings", "output_types": [ "Embeddings" @@ -173,7 +173,7 @@ }, "targetHandle": { "fieldName": "embedding", - "id": "AstraVectorStoreComponent-ANsbx", + "id": "AstraVectorStoreComponent-vXWPf", "inputTypes": [ "Embeddings", "dict" @@ -181,18 +181,18 @@ "type": "other" } }, - "id": "reactflow__edge-OpenAIEmbeddings-bKlZn{œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-bKlZnœ,œnameœ:œembeddingsœ,œoutput_typesœ:[œEmbeddingsœ]}-AstraVectorStoreComponent-ANsbx{œfieldNameœ:œembeddingœ,œidœ:œAstraVectorStoreComponent-ANsbxœ,œinputTypesœ:[œEmbeddingsœ,œdictœ],œtypeœ:œotherœ}", - "source": "OpenAIEmbeddings-bKlZn", - "sourceHandle": "{œdataTypeœ: œOpenAIEmbeddingsœ, œidœ: œOpenAIEmbeddings-bKlZnœ, œnameœ: œembeddingsœ, œoutput_typesœ: [œEmbeddingsœ]}", - "target": "AstraVectorStoreComponent-ANsbx", - "targetHandle": "{œfieldNameœ: œembeddingœ, œidœ: œAstraVectorStoreComponent-ANsbxœ, œinputTypesœ: [œEmbeddingsœ, œdictœ], œtypeœ: œotherœ}" + "id": "reactflow__edge-OpenAIEmbeddings-EJT2O{œdataTypeœ:œOpenAIEmbeddingsœ,œidœ:œOpenAIEmbeddings-EJT2Oœ,œnameœ:œembeddingsœ,œoutput_typesœ:[œEmbeddingsœ]}-AstraVectorStoreComponent-vXWPf{œfieldNameœ:œembeddingœ,œidœ:œAstraVectorStoreComponent-vXWPfœ,œinputTypesœ:[œEmbeddingsœ,œdictœ],œtypeœ:œotherœ}", + "source": "OpenAIEmbeddings-EJT2O", + "sourceHandle": "{œdataTypeœ: œOpenAIEmbeddingsœ, œidœ: œOpenAIEmbeddings-EJT2Oœ, œnameœ: œembeddingsœ, œoutput_typesœ: [œEmbeddingsœ]}", + "target": "AstraVectorStoreComponent-vXWPf", + "targetHandle": "{œfieldNameœ: œembeddingœ, œidœ: œAstraVectorStoreComponent-vXWPfœ, œinputTypesœ: [œEmbeddingsœ, œdictœ], œtypeœ: œotherœ}" }, { "className": "", "data": { "sourceHandle": { "dataType": "Prompt", - "id": "Prompt-f6nr9", + "id": "Prompt-eV1SH", "name": "prompt", "output_types": [ "Message" @@ -200,25 +200,25 @@ }, "targetHandle": { "fieldName": "input_value", - "id": "OpenAIModel-jjdFc", + "id": "OpenAIModel-DUuku", "inputTypes": [ "Message" ], "type": "str" } }, - "id": "reactflow__edge-Prompt-f6nr9{œdataTypeœ:œPromptœ,œidœ:œPrompt-f6nr9œ,œnameœ:œpromptœ,œoutput_typesœ:[œMessageœ]}-OpenAIModel-jjdFc{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-jjdFcœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}", - "source": "Prompt-f6nr9", - "sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-f6nr9œ, œnameœ: œpromptœ, œoutput_typesœ: [œMessageœ]}", - "target": "OpenAIModel-jjdFc", - "targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œOpenAIModel-jjdFcœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}" + "id": "reactflow__edge-Prompt-eV1SH{œdataTypeœ:œPromptœ,œidœ:œPrompt-eV1SHœ,œnameœ:œpromptœ,œoutput_typesœ:[œMessageœ]}-OpenAIModel-DUuku{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-DUukuœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}", + "source": "Prompt-eV1SH", + "sourceHandle": "{œdataTypeœ: œPromptœ, œidœ: œPrompt-eV1SHœ, œnameœ: œpromptœ, œoutput_typesœ: [œMessageœ]}", + "target": "OpenAIModel-DUuku", + "targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œOpenAIModel-DUukuœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}" }, { "className": "", "data": { "sourceHandle": { "dataType": "OpenAIModel", - "id": "OpenAIModel-jjdFc", + "id": "OpenAIModel-DUuku", "name": "text_output", "output_types": [ "Message" @@ -226,18 +226,44 @@ }, "targetHandle": { "fieldName": "input_value", - "id": "ChatOutput-9ol1i", + "id": "ChatOutput-OrmMa", "inputTypes": [ "Message" ], "type": "str" } }, - "id": "reactflow__edge-OpenAIModel-jjdFc{œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-jjdFcœ,œnameœ:œtext_outputœ,œoutput_typesœ:[œMessageœ]}-ChatOutput-9ol1i{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-9ol1iœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}", - "source": "OpenAIModel-jjdFc", - "sourceHandle": "{œdataTypeœ: œOpenAIModelœ, œidœ: œOpenAIModel-jjdFcœ, œnameœ: œtext_outputœ, œoutput_typesœ: [œMessageœ]}", - "target": "ChatOutput-9ol1i", - "targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œChatOutput-9ol1iœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}" + "id": "reactflow__edge-OpenAIModel-DUuku{œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-DUukuœ,œnameœ:œtext_outputœ,œoutput_typesœ:[œMessageœ]}-ChatOutput-OrmMa{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-OrmMaœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}", + "source": "OpenAIModel-DUuku", + "sourceHandle": "{œdataTypeœ: œOpenAIModelœ, œidœ: œOpenAIModel-DUukuœ, œnameœ: œtext_outputœ, œoutput_typesœ: [œMessageœ]}", + "target": "ChatOutput-OrmMa", + "targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œChatOutput-OrmMaœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}" + }, + { + "className": "", + "data": { + "sourceHandle": { + "dataType": "AstraVectorStoreComponent", + "id": "AstraVectorStoreComponent-vXWPf", + "name": "search_results", + "output_types": [ + "Data" + ] + }, + "targetHandle": { + "fieldName": "data", + "id": "ParseData-QVaZr", + "inputTypes": [ + "Data" + ], + "type": "other" + } + }, + "id": "reactflow__edge-AstraVectorStoreComponent-vXWPf{œdataTypeœ:œAstraVectorStoreComponentœ,œidœ:œAstraVectorStoreComponent-vXWPfœ,œnameœ:œsearch_resultsœ,œoutput_typesœ:[œDataœ]}-ParseData-QVaZr{œfieldNameœ:œdataœ,œidœ:œParseData-QVaZrœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}", + "source": "AstraVectorStoreComponent-vXWPf", + "sourceHandle": "{œdataTypeœ: œAstraVectorStoreComponentœ, œidœ: œAstraVectorStoreComponent-vXWPfœ, œnameœ: œsearch_resultsœ, œoutput_typesœ: [œDataœ]}", + "target": "ParseData-QVaZr", + "targetHandle": "{œfieldNameœ: œdataœ, œidœ: œParseData-QVaZrœ, œinputTypesœ: [œDataœ], œtypeœ: œotherœ}" } ], "nodes": [ @@ -245,7 +271,7 @@ "data": { "description": "Get chat inputs from the Playground.", "display_name": "Chat Input", - "id": "ChatInput-1Sa2a", + "id": "ChatInput-1QVCE", "node": { "base_classes": [ "Message" @@ -259,7 +285,7 @@ "edited": false, "field_order": [ "input_value", - "store_message", + "should_store_message", "sender", "sender_name", "session_id", @@ -300,7 +326,7 @@ "show": true, "title_case": false, "type": "code", - "value": "from langflow.base.data.utils import IMG_FILE_TYPES, TEXT_FILE_TYPES\nfrom langflow.base.io.chat import ChatComponent\nfrom langflow.inputs import BoolInput\nfrom langflow.io import DropdownInput, FileInput, MessageTextInput, MultilineInput, Output\nfrom langflow.memory import store_message\nfrom langflow.schema.message import Message\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n name = \"ChatInput\"\n\n inputs = [\n MultilineInput(\n name=\"input_value\",\n display_name=\"Text\",\n value=\"\",\n info=\"Message to be passed as input.\",\n ),\n BoolInput(\n name=\"store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Name of the sender.\",\n value=\"User\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\", display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n FileInput(\n name=\"files\",\n display_name=\"Files\",\n file_types=TEXT_FILE_TYPES + IMG_FILE_TYPES,\n info=\"Files to be sent with the message.\",\n advanced=True,\n is_list=True,\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\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 files=self.files,\n )\n\n if self.session_id and isinstance(message, Message) and isinstance(message.text, str):\n store_message(\n message,\n flow_id=self.graph.flow_id,\n )\n self.message.value = message\n\n self.status = message\n return message\n" + "value": "from langflow.base.data.utils import IMG_FILE_TYPES, TEXT_FILE_TYPES\nfrom langflow.base.io.chat import ChatComponent\nfrom langflow.inputs import BoolInput\nfrom langflow.io import DropdownInput, FileInput, MessageTextInput, MultilineInput, Output\nfrom langflow.memory import store_message\nfrom langflow.schema.message import Message\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n name = \"ChatInput\"\n\n inputs = [\n MultilineInput(\n name=\"input_value\",\n display_name=\"Text\",\n value=\"\",\n info=\"Message to be passed as input.\",\n ),\n BoolInput(\n name=\"should_store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"User\",\n info=\"Type of sender.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Name of the sender.\",\n value=\"User\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\", display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n FileInput(\n name=\"files\",\n display_name=\"Files\",\n file_types=TEXT_FILE_TYPES + IMG_FILE_TYPES,\n info=\"Files to be sent with the message.\",\n advanced=True,\n is_list=True,\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\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 files=self.files,\n )\n\n if (\n self.session_id\n and isinstance(message, Message)\n and isinstance(message.text, str)\n and self.should_store_message\n ):\n store_message(\n message,\n flow_id=self.graph.flow_id,\n )\n self.message.value = message\n\n self.status = message\n return message\n" }, "files": { "advanced": true, @@ -422,13 +448,13 @@ "type": "str", "value": "" }, - "store_message": { + "should_store_message": { "advanced": true, "display_name": "Store Messages", "dynamic": false, "info": "Store the message in the history.", "list": false, - "name": "store_message", + "name": "should_store_message", "placeholder": "", "required": false, "show": true, @@ -442,8 +468,8 @@ "type": "ChatInput" }, "dragging": false, - "height": 309, - "id": "ChatInput-1Sa2a", + "height": 308, + "id": "ChatInput-1QVCE", "position": { "x": 642.3545710150049, "y": 220.22556606238678 @@ -461,7 +487,7 @@ "description": "Implementation of Vector Store using Astra DB with search capabilities", "display_name": "Astra DB", "edited": false, - "id": "AstraVectorStoreComponent-ANsbx", + "id": "AstraVectorStoreComponent-vXWPf", "node": { "base_classes": [ "Data", @@ -898,8 +924,8 @@ "type": "AstraVectorStoreComponent" }, "dragging": false, - "height": 755, - "id": "AstraVectorStoreComponent-ANsbx", + "height": 753, + "id": "AstraVectorStoreComponent-vXWPf", "position": { "x": 1246.0381406498648, "y": 333.25157075413966 @@ -916,7 +942,7 @@ "data": { "description": "Convert Data into plain text following a specified template.", "display_name": "Parse Data", - "id": "ParseData-NJMcn", + "id": "ParseData-QVaZr", "node": { "base_classes": [ "Message" @@ -1031,8 +1057,8 @@ "type": "ParseData" }, "dragging": false, - "height": 385, - "id": "ParseData-NJMcn", + "height": 384, + "id": "ParseData-QVaZr", "position": { "x": 1854.1518317915907, "y": 459.3386924128532 @@ -1049,7 +1075,7 @@ "data": { "description": "Create a prompt template with dynamic variables.", "display_name": "Prompt", - "id": "Prompt-f6nr9", + "id": "Prompt-eV1SH", "node": { "base_classes": [ "Message" @@ -1175,8 +1201,8 @@ "type": "Prompt" }, "dragging": false, - "height": 517, - "id": "Prompt-f6nr9", + "height": 515, + "id": "Prompt-eV1SH", "position": { "x": 2486.0988668404975, "y": 496.5120474157301 @@ -1193,7 +1219,7 @@ "data": { "description": "Display a chat message in the Playground.", "display_name": "Chat Output", - "id": "ChatOutput-9ol1i", + "id": "ChatOutput-OrmMa", "node": { "base_classes": [ "Message" @@ -1207,7 +1233,7 @@ "edited": false, "field_order": [ "input_value", - "store_message", + "should_store_message", "sender", "sender_name", "session_id", @@ -1248,7 +1274,7 @@ "show": true, "title_case": false, "type": "code", - "value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.inputs import BoolInput\nfrom langflow.io import DropdownInput, MessageTextInput, Output\nfrom langflow.memory import store_message\nfrom langflow.schema.message import Message\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n name = \"ChatOutput\"\n\n inputs = [\n MessageTextInput(\n name=\"input_value\",\n display_name=\"Text\",\n info=\"Message to be passed as output.\",\n ),\n BoolInput(\n name=\"store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n MessageTextInput(\n name=\"sender_name\", display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\", advanced=True\n ),\n MessageTextInput(\n name=\"session_id\", display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n MessageTextInput(\n name=\"data_template\",\n display_name=\"Data Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\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) and isinstance(message.text, str):\n store_message(\n message,\n flow_id=self.graph.flow_id,\n )\n self.message.value = message\n\n self.status = message\n return message\n" + "value": "from langflow.base.io.chat import ChatComponent\nfrom langflow.inputs import BoolInput\nfrom langflow.io import DropdownInput, MessageTextInput, Output\nfrom langflow.memory import store_message\nfrom langflow.schema.message import Message\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n name = \"ChatOutput\"\n\n inputs = [\n MessageTextInput(\n name=\"input_value\",\n display_name=\"Text\",\n info=\"Message to be passed as output.\",\n ),\n BoolInput(\n name=\"should_store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[\"Machine\", \"User\"],\n value=\"Machine\",\n advanced=True,\n info=\"Type of sender.\",\n ),\n MessageTextInput(\n name=\"sender_name\", display_name=\"Sender Name\", info=\"Name of the sender.\", value=\"AI\", advanced=True\n ),\n MessageTextInput(\n name=\"session_id\", display_name=\"Session ID\", info=\"Session ID for the message.\", advanced=True\n ),\n MessageTextInput(\n name=\"data_template\",\n display_name=\"Data Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\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 (\n self.session_id\n and isinstance(message, Message)\n and isinstance(message.text, str)\n and self.should_store_message\n ):\n store_message(\n message,\n flow_id=self.graph.flow_id,\n )\n self.message.value = message\n\n self.status = message\n return message\n" }, "data_template": { "advanced": true, @@ -1348,13 +1374,13 @@ "type": "str", "value": "" }, - "store_message": { + "should_store_message": { "advanced": true, "display_name": "Store Messages", "dynamic": false, "info": "Store the message in the history.", "list": false, - "name": "store_message", + "name": "should_store_message", "placeholder": "", "required": false, "show": true, @@ -1368,8 +1394,8 @@ "type": "ChatOutput" }, "dragging": false, - "height": 309, - "id": "ChatOutput-9ol1i", + "height": 308, + "id": "ChatOutput-OrmMa", "position": { "x": 3769.242086248817, "y": 585.3403837062634 @@ -1386,7 +1412,7 @@ "data": { "description": "Split text into chunks based on specified criteria.", "display_name": "Split Text", - "id": "SplitText-GMvuX", + "id": "SplitText-74sLS", "node": { "base_classes": [ "Data" @@ -1514,8 +1540,8 @@ "type": "SplitText" }, "dragging": false, - "height": 557, - "id": "SplitText-GMvuX", + "height": 527, + "id": "SplitText-74sLS", "position": { "x": 2044.2799160989089, "y": 1185.3130355818519 @@ -1532,7 +1558,7 @@ "data": { "description": "A generic file loader.", "display_name": "File", - "id": "File-vPaII", + "id": "File-RKdDQ", "node": { "base_classes": [ "Data" @@ -1641,8 +1667,8 @@ "type": "File" }, "dragging": false, - "height": 301, - "id": "File-vPaII", + "height": 300, + "id": "File-RKdDQ", "position": { "x": 1418.981990122179, "y": 1539.3825691184466 @@ -1660,7 +1686,7 @@ "description": "Implementation of Vector Store using Astra DB with search capabilities", "display_name": "Astra DB", "edited": false, - "id": "AstraVectorStoreComponent-sQo90", + "id": "AstraVectorStoreComponent-wvuVK", "node": { "base_classes": [ "Data", @@ -2097,8 +2123,8 @@ "type": "AstraVectorStoreComponent" }, "dragging": false, - "height": 755, - "id": "AstraVectorStoreComponent-sQo90", + "height": 753, + "id": "AstraVectorStoreComponent-wvuVK", "position": { "x": 2678.506138892635, "y": 1267.3353646037478 @@ -2115,7 +2141,7 @@ "data": { "description": "Generate embeddings using OpenAI models.", "display_name": "OpenAI Embeddings", - "id": "OpenAIEmbeddings-2Vcb5", + "id": "OpenAIEmbeddings-rQV2h", "node": { "base_classes": [ "Embeddings" @@ -2357,7 +2383,7 @@ "dynamic": false, "info": "", "input_types": [], - "load_from_db": true, + "load_from_db": false, "name": "openai_api_base", "password": true, "placeholder": "", @@ -2373,7 +2399,7 @@ "dynamic": false, "info": "", "input_types": [], - "load_from_db": false, + "load_from_db": true, "name": "openai_api_key", "password": true, "placeholder": "", @@ -2381,7 +2407,7 @@ "show": true, "title_case": false, "type": "str", - "value": "" + "value": "OPENAI_API_KEY" }, "openai_api_type": { "advanced": true, @@ -2389,7 +2415,7 @@ "dynamic": false, "info": "", "input_types": [], - "load_from_db": true, + "load_from_db": false, "name": "openai_api_type", "password": true, "placeholder": "", @@ -2544,8 +2570,8 @@ "type": "OpenAIEmbeddings" }, "dragging": false, - "height": 395, - "id": "OpenAIEmbeddings-2Vcb5", + "height": 394, + "id": "OpenAIEmbeddings-rQV2h", "position": { "x": 2044.683126356786, "y": 1785.2283494456522 @@ -2554,7 +2580,7 @@ "x": 2044.683126356786, "y": 1785.2283494456522 }, - "selected": false, + "selected": true, "type": "genericNode", "width": 384 }, @@ -2562,7 +2588,7 @@ "data": { "description": "Generate embeddings using OpenAI models.", "display_name": "OpenAI Embeddings", - "id": "OpenAIEmbeddings-bKlZn", + "id": "OpenAIEmbeddings-EJT2O", "node": { "base_classes": [ "Embeddings" @@ -2804,7 +2830,7 @@ "dynamic": false, "info": "", "input_types": [], - "load_from_db": true, + "load_from_db": false, "name": "openai_api_base", "password": true, "placeholder": "", @@ -2820,7 +2846,7 @@ "dynamic": false, "info": "", "input_types": [], - "load_from_db": false, + "load_from_db": true, "name": "openai_api_key", "password": true, "placeholder": "", @@ -2828,7 +2854,7 @@ "show": true, "title_case": false, "type": "str", - "value": "" + "value": "OPENAI_API_KEY" }, "openai_api_type": { "advanced": true, @@ -2836,7 +2862,7 @@ "dynamic": false, "info": "", "input_types": [], - "load_from_db": true, + "load_from_db": false, "name": "openai_api_type", "password": true, "placeholder": "", @@ -2991,8 +3017,8 @@ "type": "OpenAIEmbeddings" }, "dragging": false, - "height": 395, - "id": "OpenAIEmbeddings-bKlZn", + "height": 394, + "id": "OpenAIEmbeddings-EJT2O", "position": { "x": 628.9252513328779, "y": 648.6750537749285 @@ -3009,7 +3035,7 @@ "data": { "description": "Generates text using OpenAI LLMs.", "display_name": "OpenAI", - "id": "OpenAIModel-jjdFc", + "id": "OpenAIModel-DUuku", "node": { "base_classes": [ "LanguageModel", @@ -3024,16 +3050,16 @@ "edited": false, "field_order": [ "input_value", + "system_message", + "stream", "max_tokens", "model_kwargs", "json_mode", "output_schema", "model_name", "openai_api_base", - "openai_api_key", + "api_key", "temperature", - "stream", - "system_message", "seed" ], "frozen": false, @@ -3066,6 +3092,22 @@ "pinned": false, "template": { "_type": "Component", + "api_key": { + "advanced": false, + "display_name": "OpenAI API Key", + "dynamic": false, + "info": "The OpenAI API Key to use for the OpenAI model.", + "input_types": [], + "load_from_db": true, + "name": "api_key", + "password": true, + "placeholder": "", + "required": false, + "show": true, + "title_case": false, + "type": "str", + "value": "OPENAI_API_KEY" + }, "code": { "advanced": true, "dynamic": true, @@ -3082,7 +3124,7 @@ "show": true, "title_case": false, "type": "code", - "value": "import operator\nfrom functools import reduce\n\nfrom langchain_openai import ChatOpenAI\nfrom pydantic.v1 import SecretStr\n\nfrom langflow.base.constants import STREAM_INFO_TEXT\nfrom langflow.base.models.model import LCModelComponent\nfrom langflow.base.models.openai_constants import MODEL_NAMES\nfrom langflow.field_typing import LanguageModel\nfrom langflow.inputs import (\n BoolInput,\n DictInput,\n DropdownInput,\n FloatInput,\n IntInput,\n MessageInput,\n SecretStrInput,\n StrInput,\n)\n\n\nclass OpenAIModelComponent(LCModelComponent):\n display_name = \"OpenAI\"\n description = \"Generates text using OpenAI LLMs.\"\n icon = \"OpenAI\"\n name = \"OpenAIModel\"\n\n inputs = [\n MessageInput(name=\"input_value\", display_name=\"Input\"),\n IntInput(\n name=\"max_tokens\",\n display_name=\"Max Tokens\",\n advanced=True,\n info=\"The maximum number of tokens to generate. Set to 0 for unlimited tokens.\",\n ),\n DictInput(name=\"model_kwargs\", display_name=\"Model Kwargs\", advanced=True),\n BoolInput(\n name=\"json_mode\",\n display_name=\"JSON Mode\",\n advanced=True,\n info=\"If True, it will output JSON regardless of passing a schema.\",\n ),\n DictInput(\n name=\"output_schema\",\n is_list=True,\n display_name=\"Schema\",\n advanced=True,\n info=\"The schema for the Output of the model. You must pass the word JSON in the prompt. If left blank, JSON mode will be disabled.\",\n ),\n DropdownInput(\n name=\"model_name\", display_name=\"Model Name\", advanced=False, options=MODEL_NAMES, value=MODEL_NAMES[0]\n ),\n StrInput(\n name=\"openai_api_base\",\n display_name=\"OpenAI API Base\",\n advanced=True,\n info=\"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1. You can change this to use other APIs like JinaChat, LocalAI and Prem.\",\n ),\n SecretStrInput(\n name=\"openai_api_key\",\n display_name=\"OpenAI API Key\",\n info=\"The OpenAI API Key to use for the OpenAI model.\",\n advanced=False,\n value=\"OPENAI_API_KEY\",\n ),\n FloatInput(name=\"temperature\", display_name=\"Temperature\", value=0.1),\n BoolInput(name=\"stream\", display_name=\"Stream\", info=STREAM_INFO_TEXT, advanced=True),\n StrInput(\n name=\"system_message\",\n display_name=\"System Message\",\n info=\"System message to pass to the model.\",\n advanced=True,\n ),\n IntInput(\n name=\"seed\",\n display_name=\"Seed\",\n info=\"The seed controls the reproducibility of the job.\",\n advanced=True,\n value=1,\n ),\n ]\n\n def build_model(self) -> LanguageModel: # type: ignore[type-var]\n # self.output_schea is a list of dictionarie s\n # let's convert it to a dictionary\n output_schema_dict: dict[str, str] = reduce(operator.ior, self.output_schema or {}, {})\n openai_api_key = self.openai_api_key\n temperature = self.temperature\n model_name: str = self.model_name\n max_tokens = self.max_tokens\n model_kwargs = self.model_kwargs or {}\n openai_api_base = self.openai_api_base or \"https://api.openai.com/v1\"\n json_mode = bool(output_schema_dict) or self.json_mode\n seed = self.seed\n model_kwargs[\"seed\"] = seed\n\n if openai_api_key:\n api_key = SecretStr(openai_api_key)\n else:\n api_key = None\n output = ChatOpenAI(\n max_tokens=max_tokens or None,\n model_kwargs=model_kwargs,\n model=model_name,\n base_url=openai_api_base,\n api_key=api_key,\n temperature=temperature or 0.1,\n )\n if json_mode:\n if output_schema_dict:\n output = output.with_structured_output(schema=output_schema_dict, method=\"json_mode\") # type: ignore\n else:\n output = output.bind(response_format={\"type\": \"json_object\"}) # type: ignore\n\n return output # type: ignore\n\n def _get_exception_message(self, e: Exception):\n \"\"\"\n Get a message from an OpenAI exception.\n\n Args:\n exception (Exception): The exception to get the message from.\n\n Returns:\n str: The message from the exception.\n \"\"\"\n\n try:\n from openai import BadRequestError\n except ImportError:\n return\n if isinstance(e, BadRequestError):\n message = e.body.get(\"message\") # type: ignore\n if message:\n return message\n return\n" + "value": "import operator\nfrom functools import reduce\n\nfrom langchain_openai import ChatOpenAI\nfrom pydantic.v1 import SecretStr\n\nfrom langflow.base.models.model import LCModelComponent\nfrom langflow.base.models.openai_constants import MODEL_NAMES\nfrom langflow.field_typing import LanguageModel\nfrom langflow.inputs import (\n BoolInput,\n DictInput,\n DropdownInput,\n FloatInput,\n IntInput,\n SecretStrInput,\n StrInput,\n)\n\n\nclass OpenAIModelComponent(LCModelComponent):\n display_name = \"OpenAI\"\n description = \"Generates text using OpenAI LLMs.\"\n icon = \"OpenAI\"\n name = \"OpenAIModel\"\n\n inputs = LCModelComponent._base_inputs + [\n IntInput(\n name=\"max_tokens\",\n display_name=\"Max Tokens\",\n advanced=True,\n info=\"The maximum number of tokens to generate. Set to 0 for unlimited tokens.\",\n ),\n DictInput(name=\"model_kwargs\", display_name=\"Model Kwargs\", advanced=True),\n BoolInput(\n name=\"json_mode\",\n display_name=\"JSON Mode\",\n advanced=True,\n info=\"If True, it will output JSON regardless of passing a schema.\",\n ),\n DictInput(\n name=\"output_schema\",\n is_list=True,\n display_name=\"Schema\",\n advanced=True,\n info=\"The schema for the Output of the model. You must pass the word JSON in the prompt. If left blank, JSON mode will be disabled.\",\n ),\n DropdownInput(\n name=\"model_name\", display_name=\"Model Name\", advanced=False, options=MODEL_NAMES, value=MODEL_NAMES[0]\n ),\n StrInput(\n name=\"openai_api_base\",\n display_name=\"OpenAI API Base\",\n advanced=True,\n info=\"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1. You can change this to use other APIs like JinaChat, LocalAI and Prem.\",\n ),\n SecretStrInput(\n name=\"api_key\",\n display_name=\"OpenAI API Key\",\n info=\"The OpenAI API Key to use for the OpenAI model.\",\n advanced=False,\n value=\"OPENAI_API_KEY\",\n ),\n FloatInput(name=\"temperature\", display_name=\"Temperature\", value=0.1),\n IntInput(\n name=\"seed\",\n display_name=\"Seed\",\n info=\"The seed controls the reproducibility of the job.\",\n advanced=True,\n value=1,\n ),\n ]\n\n def build_model(self) -> LanguageModel: # type: ignore[type-var]\n # self.output_schema is a list of dictionaries\n # let's convert it to a dictionary\n output_schema_dict: dict[str, str] = reduce(operator.ior, self.output_schema or {}, {})\n openai_api_key = self.api_key\n temperature = self.temperature\n model_name: str = self.model_name\n max_tokens = self.max_tokens\n model_kwargs = self.model_kwargs or {}\n openai_api_base = self.openai_api_base or \"https://api.openai.com/v1\"\n json_mode = bool(output_schema_dict) or self.json_mode\n seed = self.seed\n\n if openai_api_key:\n api_key = SecretStr(openai_api_key)\n else:\n api_key = None\n output = ChatOpenAI(\n max_tokens=max_tokens or None,\n model_kwargs=model_kwargs,\n model=model_name,\n base_url=openai_api_base,\n api_key=api_key,\n temperature=temperature or 0.1,\n seed=seed,\n )\n if json_mode:\n if output_schema_dict:\n output = output.with_structured_output(schema=output_schema_dict, method=\"json_mode\") # type: ignore\n else:\n output = output.bind(response_format={\"type\": \"json_object\"}) # type: ignore\n\n return output # type: ignore\n\n def _get_exception_message(self, e: Exception):\n \"\"\"\n Get a message from an OpenAI exception.\n\n Args:\n exception (Exception): The exception to get the message from.\n\n Returns:\n str: The message from the exception.\n \"\"\"\n\n try:\n from openai import BadRequestError\n except ImportError:\n return\n if isinstance(e, BadRequestError):\n message = e.body.get(\"message\") # type: ignore\n if message:\n return message\n return\n" }, "input_value": { "advanced": false, @@ -3154,8 +3196,10 @@ "display_name": "Model Name", "dynamic": false, "info": "", + "load_from_db": false, "name": "model_name", "options": [ + "gpt-4o-mini", "gpt-4o", "gpt-4-turbo", "gpt-4-turbo-preview", @@ -3187,22 +3231,6 @@ "type": "str", "value": "" }, - "openai_api_key": { - "advanced": false, - "display_name": "OpenAI API Key", - "dynamic": false, - "info": "The OpenAI API Key to use for the OpenAI model.", - "input_types": [], - "load_from_db": false, - "name": "openai_api_key", - "password": true, - "placeholder": "", - "required": false, - "show": true, - "title_case": false, - "type": "str", - "value": "" - }, "output_schema": { "advanced": true, "display_name": "Schema", @@ -3253,6 +3281,9 @@ "display_name": "System Message", "dynamic": false, "info": "System message to pass to the model.", + "input_types": [ + "Message" + ], "list": false, "load_from_db": false, "name": "system_message", @@ -3260,6 +3291,7 @@ "required": false, "show": true, "title_case": false, + "trace_as_input": true, "trace_as_metadata": true, "type": "str", "value": "" @@ -3284,8 +3316,8 @@ "type": "OpenAIModel" }, "dragging": false, - "height": 623, - "id": "OpenAIModel-jjdFc", + "height": 621, + "id": "OpenAIModel-DUuku", "position": { "x": 3138.7638747868177, "y": 413.0859233500825 @@ -3300,15 +3332,14 @@ } ], "viewport": { - "x": -598.6019287577517, - "y": -91.90908344462855, - "zoom": 0.49394144815132496 + "x": -113.2164904186335, + "y": -51.497463142696176, + "zoom": 0.32587982414714645 } }, "description": "Visit https://docs.langflow.org/tutorials/rag-with-astradb for a detailed guide of this project.\nThis project give you both Ingestion and RAG in a single file. You'll need to visit https://astra.datastax.com/ to create an Astra DB instance, your Token and grab an API Endpoint.\nRunning this project requires you to add a file in the Files component, then define a Collection Name and click on the Play icon on the Astra DB component. \n\nAfter the ingestion ends you are ready to click on the Run button at the lower left corner and start asking questions about your data.", - "endpoint_name": null, - "id": "1538aa9c-e85c-4f98-a12b-25312f777991", + "id": "74a6c5d0-9d9c-41c4-b6f1-92b20856d0de", "is_component": false, - "last_tested_version": "1.0.9", + "last_tested_version": "1.0.12", "name": "Vector Store RAG" } \ No newline at end of file