feat: combine chat history and chat store into a CRUD component (#8323)
* combine history and store * combine history and store * [autofix.ci] apply automated fixes * Update memory.py * [autofix.ci] apply automated fixes * update json * Update memory.py * Update memory.py * [autofix.ci] apply automated fixes * change order * change order * put retrieve first * add json * [autofix.ci] apply automated fixes * Update memory.py * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * update test * fix test * update tests * update memory_chatbot * change number back * fix py test * update * update pokedex * update flow * [autofix.ci] apply automated fixes * update type converter * format * fix name * update meeting summary * [autofix.ci] apply automated fixes * fix test memory chatbot * update method * update method * fix sort * fix test graph state * fix test * fix locator --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Edwin Jose <edwin.jose@datastax.com> Co-authored-by: Eric Hare <ericrhare@gmail.com>
This commit is contained in:
parent
a161753a57
commit
e23e543b60
31 changed files with 7341 additions and 4739 deletions
File diff suppressed because one or more lines are too long
|
|
@ -1,28 +1,50 @@
|
||||||
from typing import cast
|
from typing import Any, cast
|
||||||
|
|
||||||
from langflow.custom import Component
|
from langflow.custom import Component
|
||||||
from langflow.helpers.data import data_to_text
|
|
||||||
from langflow.inputs import HandleInput
|
from langflow.inputs import HandleInput
|
||||||
from langflow.io import DropdownInput, IntInput, MessageTextInput, MultilineInput, Output
|
from langflow.io import DropdownInput, IntInput, MessageTextInput, MultilineInput, Output, TabInput
|
||||||
from langflow.memory import aget_messages
|
from langflow.memory import aget_messages, astore_message
|
||||||
from langflow.schema import Data
|
from langflow.schema import Data, dotdict
|
||||||
from langflow.schema.dataframe import DataFrame
|
from langflow.schema.dataframe import DataFrame
|
||||||
from langflow.schema.message import Message
|
from langflow.schema.message import Message
|
||||||
from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER
|
from langflow.utils.component_utils import set_current_fields, set_field_display
|
||||||
|
from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_NAME_AI, MESSAGE_SENDER_USER
|
||||||
|
|
||||||
|
|
||||||
class MemoryComponent(Component):
|
class MemoryComponent(Component):
|
||||||
display_name = "Message History"
|
display_name = "Message History"
|
||||||
description = "Retrieves stored chat messages from Langflow tables or an external memory."
|
description = "Stores or retrieves stored chat messages from Langflow tables or an external memory."
|
||||||
icon = "message-square-more"
|
icon = "message-square-more"
|
||||||
name = "Memory"
|
name = "Memory"
|
||||||
|
default_keys = ["mode", "memory"]
|
||||||
|
mode_config = {
|
||||||
|
"Store": ["message", "memory", "sender", "sender_name", "session_id"],
|
||||||
|
"Retrieve": ["n_messages", "order", "template", "memory"],
|
||||||
|
}
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
|
TabInput(
|
||||||
|
name="mode",
|
||||||
|
display_name="Mode",
|
||||||
|
options=["Retrieve", "Store"],
|
||||||
|
value="Retrieve",
|
||||||
|
info="Operation mode: Store messages or Retrieve messages.",
|
||||||
|
real_time_refresh=True,
|
||||||
|
),
|
||||||
|
MessageTextInput(
|
||||||
|
name="message",
|
||||||
|
display_name="Message",
|
||||||
|
info="The chat message to be stored.",
|
||||||
|
tool_mode=True,
|
||||||
|
dynamic=True,
|
||||||
|
show=False,
|
||||||
|
),
|
||||||
HandleInput(
|
HandleInput(
|
||||||
name="memory",
|
name="memory",
|
||||||
display_name="External Memory",
|
display_name="External Memory",
|
||||||
input_types=["Memory"],
|
input_types=["Memory"],
|
||||||
info="Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
info="Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
|
advanced=True,
|
||||||
),
|
),
|
||||||
DropdownInput(
|
DropdownInput(
|
||||||
name="sender",
|
name="sender",
|
||||||
|
|
@ -37,6 +59,7 @@ class MemoryComponent(Component):
|
||||||
display_name="Sender Name",
|
display_name="Sender Name",
|
||||||
info="Filter by sender name.",
|
info="Filter by sender name.",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
|
show=False,
|
||||||
),
|
),
|
||||||
IntInput(
|
IntInput(
|
||||||
name="n_messages",
|
name="n_messages",
|
||||||
|
|
@ -44,6 +67,7 @@ class MemoryComponent(Component):
|
||||||
value=100,
|
value=100,
|
||||||
info="Number of messages to retrieve.",
|
info="Number of messages to retrieve.",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
|
show=False,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="session_id",
|
name="session_id",
|
||||||
|
|
@ -59,6 +83,8 @@ class MemoryComponent(Component):
|
||||||
info="Order of the messages.",
|
info="Order of the messages.",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
tool_mode=True,
|
tool_mode=True,
|
||||||
|
required=True,
|
||||||
|
show=False,
|
||||||
),
|
),
|
||||||
MultilineInput(
|
MultilineInput(
|
||||||
name="template",
|
name="template",
|
||||||
|
|
@ -67,14 +93,34 @@ class MemoryComponent(Component):
|
||||||
"It can contain the keys {text}, {sender} or any other key in the message data.",
|
"It can contain the keys {text}, {sender} or any other key in the message data.",
|
||||||
value="{sender_name}: {text}",
|
value="{sender_name}: {text}",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
|
show=False,
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
outputs = [
|
outputs = [Output(display_name="Messages", name="dataframe", method="retrieve_messages_dataframe", dynamic=True)]
|
||||||
Output(display_name="Data", name="messages", method="retrieve_messages"),
|
|
||||||
Output(display_name="Message", name="messages_text", method="retrieve_messages_as_text"),
|
def update_outputs(self, frontend_node: dict, field_name: str, field_value: Any) -> dict:
|
||||||
Output(display_name="DataFrame", name="dataframe", method="as_dataframe"),
|
"""Dynamically show only the relevant output based on the selected output type."""
|
||||||
]
|
if field_name == "mode":
|
||||||
|
# Start with empty outputs
|
||||||
|
frontend_node["outputs"] = []
|
||||||
|
if field_value == "Store":
|
||||||
|
frontend_node["outputs"] = [
|
||||||
|
Output(
|
||||||
|
display_name="Stored Messages",
|
||||||
|
name="stored_messages",
|
||||||
|
method="store_message",
|
||||||
|
hidden=True,
|
||||||
|
dynamic=True,
|
||||||
|
)
|
||||||
|
]
|
||||||
|
if field_value == "Retrieve":
|
||||||
|
frontend_node["outputs"] = [
|
||||||
|
Output(
|
||||||
|
display_name="Messages", name="dataframe", method="retrieve_messages_dataframe", dynamic=True
|
||||||
|
)
|
||||||
|
]
|
||||||
|
return frontend_node
|
||||||
|
|
||||||
async def retrieve_messages(self) -> Data:
|
async def retrieve_messages(self) -> Data:
|
||||||
sender = self.sender
|
sender = self.sender
|
||||||
|
|
@ -118,12 +164,7 @@ class MemoryComponent(Component):
|
||||||
self.status = stored
|
self.status = stored
|
||||||
return cast(Data, stored)
|
return cast(Data, stored)
|
||||||
|
|
||||||
async def retrieve_messages_as_text(self) -> Message:
|
async def retrieve_messages_dataframe(self) -> DataFrame:
|
||||||
stored_text = data_to_text(self.template, await self.retrieve_messages())
|
|
||||||
self.status = stored_text
|
|
||||||
return Message(text=stored_text)
|
|
||||||
|
|
||||||
async def as_dataframe(self) -> DataFrame:
|
|
||||||
"""Convert the retrieved messages into a DataFrame.
|
"""Convert the retrieved messages into a DataFrame.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
@ -131,3 +172,54 @@ class MemoryComponent(Component):
|
||||||
"""
|
"""
|
||||||
messages = await self.retrieve_messages()
|
messages = await self.retrieve_messages()
|
||||||
return DataFrame(messages)
|
return DataFrame(messages)
|
||||||
|
|
||||||
|
async def store_message(self) -> Message:
|
||||||
|
message = Message(text=self.message) if isinstance(self.message, str) else self.message
|
||||||
|
|
||||||
|
message.session_id = self.session_id or message.session_id
|
||||||
|
message.sender = self.sender or message.sender or MESSAGE_SENDER_AI
|
||||||
|
message.sender_name = self.sender_name or message.sender_name or MESSAGE_SENDER_NAME_AI
|
||||||
|
|
||||||
|
stored_messages: list[Message] = []
|
||||||
|
|
||||||
|
if self.memory:
|
||||||
|
self.memory.session_id = message.session_id
|
||||||
|
lc_message = message.to_lc_message()
|
||||||
|
await self.memory.aadd_messages([lc_message])
|
||||||
|
|
||||||
|
stored_messages = await self.memory.aget_messages() or []
|
||||||
|
|
||||||
|
stored_messages = [Message.from_lc_message(m) for m in stored_messages] if stored_messages else []
|
||||||
|
|
||||||
|
if message.sender:
|
||||||
|
stored_messages = [m for m in stored_messages if m.sender == message.sender]
|
||||||
|
else:
|
||||||
|
await astore_message(message, flow_id=self.graph.flow_id)
|
||||||
|
stored_messages = (
|
||||||
|
await aget_messages(
|
||||||
|
session_id=message.session_id, sender_name=message.sender_name, sender=message.sender
|
||||||
|
)
|
||||||
|
or []
|
||||||
|
)
|
||||||
|
|
||||||
|
if not stored_messages:
|
||||||
|
msg = "No messages were stored. Please ensure that the session ID and sender are properly set."
|
||||||
|
raise ValueError(msg)
|
||||||
|
|
||||||
|
stored_message = stored_messages[0]
|
||||||
|
self.status = stored_message
|
||||||
|
return stored_message
|
||||||
|
|
||||||
|
def update_build_config(
|
||||||
|
self,
|
||||||
|
build_config: dotdict,
|
||||||
|
field_value: Any, # noqa: ARG002
|
||||||
|
field_name: str | None = None, # noqa: ARG002
|
||||||
|
) -> dotdict:
|
||||||
|
return set_current_fields(
|
||||||
|
build_config=build_config,
|
||||||
|
action_fields=self.mode_config,
|
||||||
|
selected_action=build_config["mode"]["value"],
|
||||||
|
default_fields=self.default_keys,
|
||||||
|
func=set_field_display,
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ class MessageStoreComponent(Component):
|
||||||
description = "Stores a chat message or text into Langflow tables or an external memory."
|
description = "Stores a chat message or text into Langflow tables or an external memory."
|
||||||
icon = "message-square-text"
|
icon = "message-square-text"
|
||||||
name = "StoreMessage"
|
name = "StoreMessage"
|
||||||
|
legacy = True
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -2600,6 +2600,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -2707,7 +2751,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
@ -3304,6 +3348,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -3411,7 +3499,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
|
||||||
|
|
@ -408,6 +408,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -511,7 +555,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
|
||||||
|
|
@ -1624,6 +1624,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1716,7 +1760,7 @@
|
||||||
"Descending"
|
"Descending"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": false,
|
"tool_mode": false,
|
||||||
|
|
|
||||||
|
|
@ -1502,6 +1502,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1611,7 +1655,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
|
||||||
|
|
@ -1474,6 +1474,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1566,7 +1610,7 @@
|
||||||
"Descending"
|
"Descending"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": false,
|
"tool_mode": false,
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1234,6 +1234,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1337,7 +1381,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
|
||||||
|
|
@ -1609,6 +1609,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1713,7 +1757,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"toggle": false,
|
"toggle": false,
|
||||||
|
|
|
||||||
|
|
@ -1916,6 +1916,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -2019,7 +2063,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
|
||||||
|
|
@ -1254,6 +1254,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1346,7 +1390,7 @@
|
||||||
"Descending"
|
"Descending"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": false,
|
"tool_mode": false,
|
||||||
|
|
|
||||||
|
|
@ -975,6 +975,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1067,7 +1111,7 @@
|
||||||
"Descending"
|
"Descending"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": false,
|
"tool_mode": false,
|
||||||
|
|
|
||||||
|
|
@ -1351,6 +1351,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1454,7 +1498,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
|
||||||
|
|
@ -617,6 +617,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -709,7 +753,7 @@
|
||||||
"Descending"
|
"Descending"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": false,
|
"tool_mode": false,
|
||||||
|
|
@ -1240,6 +1284,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1332,7 +1420,7 @@
|
||||||
"Descending"
|
"Descending"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": false,
|
"tool_mode": false,
|
||||||
|
|
@ -2689,6 +2777,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -2781,7 +2913,7 @@
|
||||||
"Descending"
|
"Descending"
|
||||||
],
|
],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": false,
|
"tool_mode": false,
|
||||||
|
|
|
||||||
|
|
@ -1533,6 +1533,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1637,7 +1681,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"toggle": false,
|
"toggle": false,
|
||||||
|
|
|
||||||
|
|
@ -1595,6 +1595,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1698,7 +1742,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
|
||||||
|
|
@ -1988,6 +1988,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -2091,7 +2135,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
@ -2687,6 +2731,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -2790,7 +2878,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
@ -3386,6 +3474,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -3489,7 +3621,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
|
||||||
|
|
@ -1439,6 +1439,50 @@
|
||||||
"type": "other",
|
"type": "other",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
|
"message": {
|
||||||
|
"_input_type": "MessageTextInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Message",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "The chat message to be stored.",
|
||||||
|
"input_types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"list": false,
|
||||||
|
"list_add_label": "Add More",
|
||||||
|
"load_from_db": false,
|
||||||
|
"name": "message",
|
||||||
|
"placeholder": "",
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": true,
|
||||||
|
"trace_as_input": true,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "str",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"_input_type": "TabInput",
|
||||||
|
"advanced": true,
|
||||||
|
"display_name": "Mode",
|
||||||
|
"dynamic": false,
|
||||||
|
"info": "Operation mode: Store messages or Retrieve messages.",
|
||||||
|
"name": "mode",
|
||||||
|
"options": [
|
||||||
|
"Retrieve",
|
||||||
|
"Store"
|
||||||
|
],
|
||||||
|
"placeholder": "",
|
||||||
|
"real_time_refresh": true,
|
||||||
|
"required": false,
|
||||||
|
"show": true,
|
||||||
|
"title_case": false,
|
||||||
|
"tool_mode": false,
|
||||||
|
"trace_as_metadata": true,
|
||||||
|
"type": "tab",
|
||||||
|
"value": "Store"
|
||||||
|
},
|
||||||
"model_kwargs": {
|
"model_kwargs": {
|
||||||
"_input_type": "DictInput",
|
"_input_type": "DictInput",
|
||||||
"advanced": true,
|
"advanced": true,
|
||||||
|
|
@ -1542,7 +1586,7 @@
|
||||||
],
|
],
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": true,
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
from langflow.components.helpers.memory import MemoryComponent
|
from langflow.components.helpers.memory import MemoryComponent
|
||||||
from langflow.components.input_output import ChatInput, ChatOutput
|
from langflow.components.input_output import ChatInput, ChatOutput
|
||||||
from langflow.components.languagemodels import OpenAIModelComponent
|
from langflow.components.languagemodels import OpenAIModelComponent
|
||||||
|
from langflow.components.processing.converter import TypeConverterComponent
|
||||||
from langflow.components.prompts import PromptComponent
|
from langflow.components.prompts import PromptComponent
|
||||||
from langflow.graph import Graph
|
from langflow.graph import Graph
|
||||||
|
|
||||||
|
|
@ -13,9 +14,13 @@ def memory_chatbot_graph(template: str | None = None):
|
||||||
AI: """
|
AI: """
|
||||||
memory_component = MemoryComponent()
|
memory_component = MemoryComponent()
|
||||||
chat_input = ChatInput()
|
chat_input = ChatInput()
|
||||||
|
type_converter = TypeConverterComponent()
|
||||||
|
type_converter.set(input_data=memory_component.retrieve_messages_dataframe)
|
||||||
prompt_component = PromptComponent()
|
prompt_component = PromptComponent()
|
||||||
prompt_component.set(
|
prompt_component.set(
|
||||||
template=template, user_message=chat_input.message_response, context=memory_component.retrieve_messages_as_text
|
template=template,
|
||||||
|
user_message=chat_input.message_response,
|
||||||
|
context=type_converter.convert_to_message,
|
||||||
)
|
)
|
||||||
openai_component = OpenAIModelComponent()
|
openai_component = OpenAIModelComponent()
|
||||||
openai_component.set(input_value=prompt_component.build_prompt)
|
openai_component.set(input_value=prompt_component.build_prompt)
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -72,15 +72,21 @@ async def consume_and_assert_stream(response, job_id, timeout=30.0):
|
||||||
"Invalid first event. Expected 'vertices_sorted'. Full event stream:\n" + "\n".join(lines)
|
"Invalid first event. Expected 'vertices_sorted'. Full event stream:\n" + "\n".join(lines)
|
||||||
)
|
)
|
||||||
ids = parsed["data"]["ids"]
|
ids = parsed["data"]["ids"]
|
||||||
ids.sort()
|
|
||||||
assert ids == ["ChatInput-CIGht"], "Invalid ids in first event. Full event stream:\n" + "\n".join(
|
assert ids == ["ChatInput-vsgM1"], "Invalid ids in first event. Full event stream:\n" + "\n".join(
|
||||||
lines
|
lines
|
||||||
)
|
)
|
||||||
|
|
||||||
to_run = parsed["data"]["to_run"]
|
to_run = parsed["data"]["to_run"]
|
||||||
to_run.sort()
|
expected_to_run = [
|
||||||
assert to_run == ["ChatInput-CIGht", "ChatOutput-QA7ej", "Memory-amN4Z", "Prompt-iWbCC"], (
|
"ChatInput-vsgM1",
|
||||||
"Invalid to_run list in first event. Full event stream:\n" + "\n".join(lines)
|
"Prompt-VSSGR",
|
||||||
|
"TypeConverterComponent-koSIz",
|
||||||
|
"Memory-8X8Cq",
|
||||||
|
"ChatOutput-NAw0P",
|
||||||
|
]
|
||||||
|
assert set(to_run) == set(expected_to_run), (
|
||||||
|
"Invalid to_run list in the first event. Full event stream:\n" + "\n".join(lines)
|
||||||
)
|
)
|
||||||
first_event_seen = True
|
first_event_seen = True
|
||||||
# Last event should be end
|
# Last event should be end
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import pytest
|
||||||
from langflow.components.helpers.memory import MemoryComponent
|
from langflow.components.helpers.memory import MemoryComponent
|
||||||
from langflow.components.input_output import ChatInput, ChatOutput
|
from langflow.components.input_output import ChatInput, ChatOutput
|
||||||
from langflow.components.languagemodels import OpenAIModelComponent
|
from langflow.components.languagemodels import OpenAIModelComponent
|
||||||
|
from langflow.components.processing.converter import TypeConverterComponent
|
||||||
from langflow.components.prompts import PromptComponent
|
from langflow.components.prompts import PromptComponent
|
||||||
from langflow.graph import Graph
|
from langflow.graph import Graph
|
||||||
from langflow.graph.graph.constants import Finish
|
from langflow.graph.graph.constants import Finish
|
||||||
|
|
@ -22,9 +23,13 @@ AI: """
|
||||||
memory_component = MemoryComponent(_id="chat_memory")
|
memory_component = MemoryComponent(_id="chat_memory")
|
||||||
memory_component.set(session_id=session_id)
|
memory_component.set(session_id=session_id)
|
||||||
chat_input = ChatInput(_id="chat_input")
|
chat_input = ChatInput(_id="chat_input")
|
||||||
|
type_converter = TypeConverterComponent(_id="type_converter")
|
||||||
|
type_converter.set(input_data=memory_component.retrieve_messages_dataframe)
|
||||||
prompt_component = PromptComponent(_id="prompt")
|
prompt_component = PromptComponent(_id="prompt")
|
||||||
prompt_component.set(
|
prompt_component.set(
|
||||||
template=template, user_message=chat_input.message_response, context=memory_component.retrieve_messages_as_text
|
template=template,
|
||||||
|
user_message=chat_input.message_response,
|
||||||
|
context=type_converter.convert_to_message,
|
||||||
)
|
)
|
||||||
openai_component = OpenAIModelComponent(_id="openai")
|
openai_component = OpenAIModelComponent(_id="openai")
|
||||||
openai_component.set(
|
openai_component.set(
|
||||||
|
|
@ -44,6 +49,7 @@ AI: """
|
||||||
"chat_output",
|
"chat_output",
|
||||||
"openai",
|
"openai",
|
||||||
"prompt",
|
"prompt",
|
||||||
|
"type_converter",
|
||||||
"chat_memory",
|
"chat_memory",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -257,8 +257,12 @@ def test_update_source_handle():
|
||||||
|
|
||||||
|
|
||||||
async def test_serialize_graph():
|
async def test_serialize_graph():
|
||||||
|
# Get the actual starter projects and directly await the result
|
||||||
starter_projects = await load_starter_projects()
|
starter_projects = await load_starter_projects()
|
||||||
data = starter_projects[0][1]["data"]
|
project_data = starter_projects[0][1]
|
||||||
|
data = project_data["data"]
|
||||||
|
|
||||||
|
# Create and test the graph
|
||||||
graph = Graph.from_payload(data)
|
graph = Graph.from_payload(data)
|
||||||
assert isinstance(graph, Graph)
|
assert isinstance(graph, Graph)
|
||||||
serialized = graph.dumps()
|
serialized = graph.dumps()
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import pytest
|
||||||
from langflow.components.helpers.memory import MemoryComponent
|
from langflow.components.helpers.memory import MemoryComponent
|
||||||
from langflow.components.input_output import ChatInput, ChatOutput
|
from langflow.components.input_output import ChatInput, ChatOutput
|
||||||
from langflow.components.languagemodels import OpenAIModelComponent
|
from langflow.components.languagemodels import OpenAIModelComponent
|
||||||
|
from langflow.components.processing.converter import TypeConverterComponent
|
||||||
from langflow.components.prompts import PromptComponent
|
from langflow.components.prompts import PromptComponent
|
||||||
from langflow.graph import Graph
|
from langflow.graph import Graph
|
||||||
from langflow.graph.graph.constants import Finish
|
from langflow.graph.graph.constants import Finish
|
||||||
|
|
@ -24,9 +25,13 @@ AI: """
|
||||||
memory_component = MemoryComponent(_id="chat_memory")
|
memory_component = MemoryComponent(_id="chat_memory")
|
||||||
memory_component.set(session_id=session_id)
|
memory_component.set(session_id=session_id)
|
||||||
chat_input = ChatInput(_id="chat_input")
|
chat_input = ChatInput(_id="chat_input")
|
||||||
|
type_converter = TypeConverterComponent(_id="type_converter")
|
||||||
|
type_converter.set(input_data=memory_component.retrieve_messages_dataframe)
|
||||||
prompt_component = PromptComponent(_id="prompt")
|
prompt_component = PromptComponent(_id="prompt")
|
||||||
prompt_component.set(
|
prompt_component.set(
|
||||||
template=template, user_message=chat_input.message_response, context=memory_component.retrieve_messages_as_text
|
template=template,
|
||||||
|
user_message=chat_input.message_response,
|
||||||
|
context=type_converter.convert_to_message,
|
||||||
)
|
)
|
||||||
openai_component = OpenAIModelComponent(_id="openai")
|
openai_component = OpenAIModelComponent(_id="openai")
|
||||||
openai_component.set(
|
openai_component.set(
|
||||||
|
|
@ -38,22 +43,30 @@ AI: """
|
||||||
chat_output.set(input_value=openai_component.text_response)
|
chat_output.set(input_value=openai_component.text_response)
|
||||||
|
|
||||||
graph = Graph(chat_input, chat_output)
|
graph = Graph(chat_input, chat_output)
|
||||||
assert graph.in_degree_map == {"chat_output": 1, "prompt": 2, "openai": 1, "chat_input": 0, "chat_memory": 0}
|
assert graph.in_degree_map == {
|
||||||
|
"chat_output": 1,
|
||||||
|
"type_converter": 1,
|
||||||
|
"prompt": 2,
|
||||||
|
"openai": 1,
|
||||||
|
"chat_input": 0,
|
||||||
|
"chat_memory": 0,
|
||||||
|
}
|
||||||
return graph
|
return graph
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("client")
|
@pytest.mark.usefixtures("client")
|
||||||
def test_memory_chatbot(memory_chatbot_graph):
|
def test_memory_chatbot(memory_chatbot_graph):
|
||||||
# Now we run step by step
|
# Now we run step by step
|
||||||
expected_order = deque(["chat_input", "chat_memory", "prompt", "openai", "chat_output"])
|
expected_order = deque(["chat_input", "chat_memory", "type_converter", "prompt", "openai", "chat_output"])
|
||||||
assert memory_chatbot_graph.in_degree_map == {
|
assert memory_chatbot_graph.in_degree_map == {
|
||||||
"chat_output": 1,
|
"chat_output": 1,
|
||||||
|
"type_converter": 1,
|
||||||
"prompt": 2,
|
"prompt": 2,
|
||||||
"openai": 1,
|
"openai": 1,
|
||||||
"chat_input": 0,
|
"chat_input": 0,
|
||||||
"chat_memory": 0,
|
"chat_memory": 0,
|
||||||
}
|
}
|
||||||
assert memory_chatbot_graph.vertices_layers == [["prompt"], ["openai"], ["chat_output"]]
|
assert memory_chatbot_graph.vertices_layers == [["type_converter"], ["prompt"], ["openai"], ["chat_output"]]
|
||||||
assert memory_chatbot_graph.first_layer == ["chat_input", "chat_memory"]
|
assert memory_chatbot_graph.first_layer == ["chat_input", "chat_memory"]
|
||||||
|
|
||||||
for step in expected_order:
|
for step in expected_order:
|
||||||
|
|
@ -86,8 +99,8 @@ def test_memory_chatbot_dump_structure(memory_chatbot_graph: Graph):
|
||||||
description = graph_dict["description"]
|
description = graph_dict["description"]
|
||||||
endpoint_name = graph_dict["endpoint_name"]
|
endpoint_name = graph_dict["endpoint_name"]
|
||||||
|
|
||||||
assert len(nodes) == 5
|
assert len(nodes) == 6
|
||||||
assert len(edges) == 4
|
assert len(edges) == 5
|
||||||
assert description is not None
|
assert description is not None
|
||||||
assert endpoint_name is not None
|
assert endpoint_name is not None
|
||||||
|
|
||||||
|
|
@ -124,7 +137,8 @@ def test_memory_chatbot_dump_components_and_edges(memory_chatbot_graph: Graph):
|
||||||
# Check edges
|
# Check edges
|
||||||
expected_edges = [
|
expected_edges = [
|
||||||
("chat_input", "prompt"),
|
("chat_input", "prompt"),
|
||||||
("chat_memory", "prompt"),
|
("chat_memory", "type_converter"),
|
||||||
|
("type_converter", "prompt"),
|
||||||
("prompt", "openai"),
|
("prompt", "openai"),
|
||||||
("openai", "chat_output"),
|
("openai", "chat_output"),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
1
src/frontend/package-lock.json
generated
1
src/frontend/package-lock.json
generated
|
|
@ -755,6 +755,7 @@
|
||||||
},
|
},
|
||||||
"node_modules/@clack/prompts/node_modules/is-unicode-supported": {
|
"node_modules/@clack/prompts/node_modules/is-unicode-supported": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
|
"extraneous": true,
|
||||||
"inBundle": true,
|
"inBundle": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,6 @@ test(
|
||||||
await expect(page.getByTestId("input_outputChat Input")).toBeVisible();
|
await expect(page.getByTestId("input_outputChat Input")).toBeVisible();
|
||||||
await expect(page.getByTestId("input_outputChat Output")).toBeVisible();
|
await expect(page.getByTestId("input_outputChat Output")).toBeVisible();
|
||||||
await expect(page.getByTestId("promptsPrompt")).toBeVisible();
|
await expect(page.getByTestId("promptsPrompt")).toBeVisible();
|
||||||
await expect(page.getByTestId("helpersMessage History")).toBeVisible();
|
|
||||||
await expect(page.getByTestId("langchain_utilitiesCSVAgent")).toBeVisible();
|
await expect(page.getByTestId("langchain_utilitiesCSVAgent")).toBeVisible();
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId("langchain_utilitiesConversationChain"),
|
page.getByTestId("langchain_utilitiesConversationChain"),
|
||||||
|
|
@ -99,7 +98,6 @@ test(
|
||||||
await expect(page.getByTestId("input_outputChat Input")).not.toBeVisible();
|
await expect(page.getByTestId("input_outputChat Input")).not.toBeVisible();
|
||||||
await expect(page.getByTestId("input_outputChat Output")).not.toBeVisible();
|
await expect(page.getByTestId("input_outputChat Output")).not.toBeVisible();
|
||||||
await expect(page.getByTestId("promptsPrompt")).not.toBeVisible();
|
await expect(page.getByTestId("promptsPrompt")).not.toBeVisible();
|
||||||
await expect(page.getByTestId("helpersMessage History")).not.toBeVisible();
|
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId("agentsTool Calling Agent"),
|
page.getByTestId("agentsTool Calling Agent"),
|
||||||
).not.toBeVisible();
|
).not.toBeVisible();
|
||||||
|
|
@ -121,7 +119,6 @@ test(
|
||||||
await expect(page.getByTestId("disclosure-tools")).toBeVisible();
|
await expect(page.getByTestId("disclosure-tools")).toBeVisible();
|
||||||
|
|
||||||
await expect(page.getByTestId("dataAPI Request")).toBeVisible();
|
await expect(page.getByTestId("dataAPI Request")).toBeVisible();
|
||||||
await expect(page.getByTestId("helpersMessage History")).toBeVisible();
|
|
||||||
await expect(page.getByTestId("vectorstoresAstra DB")).toBeVisible();
|
await expect(page.getByTestId("vectorstoresAstra DB")).toBeVisible();
|
||||||
await expect(page.getByTestId("logicSub Flow [Deprecated]")).toBeVisible();
|
await expect(page.getByTestId("logicSub Flow [Deprecated]")).toBeVisible();
|
||||||
|
|
||||||
|
|
@ -138,7 +135,6 @@ test(
|
||||||
await page.getByTestId("icon-X").first().click();
|
await page.getByTestId("icon-X").first().click();
|
||||||
|
|
||||||
await expect(page.getByTestId("dataAPI Request")).not.toBeVisible();
|
await expect(page.getByTestId("dataAPI Request")).not.toBeVisible();
|
||||||
await expect(page.getByTestId("helpersMessage History")).not.toBeVisible();
|
|
||||||
await expect(page.getByTestId("vectorstoresAstra DB")).not.toBeVisible();
|
await expect(page.getByTestId("vectorstoresAstra DB")).not.toBeVisible();
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId("logicSub Flow [Deprecated]"),
|
page.getByTestId("logicSub Flow [Deprecated]"),
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ withEventDeliveryModes(
|
||||||
try {
|
try {
|
||||||
await page
|
await page
|
||||||
.getByTestId("anchor-popover-anchor-input-api_key")
|
.getByTestId("anchor-popover-anchor-input-api_key")
|
||||||
|
.locator("input")
|
||||||
.last()
|
.last()
|
||||||
.fill(process.env.ANTHROPIC_API_KEY ?? "");
|
.fill(process.env.ANTHROPIC_API_KEY ?? "");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue