diff --git a/src/backend/base/langflow/base/tools/component_tool.py b/src/backend/base/langflow/base/tools/component_tool.py index e2e4753326d8..24b5a6157348 100644 --- a/src/backend/base/langflow/base/tools/component_tool.py +++ b/src/backend/base/langflow/base/tools/component_tool.py @@ -169,6 +169,24 @@ def __init__(self, component: Component, metadata: pd.DataFrame | None = None): self.component = component self.metadata = metadata + def _should_skip_output(self, output: Output) -> bool: + """Determines if an output should be skipped when creating tools. + + Args: + output (Output): The output to check. + + Returns: + bool: True if the output should be skipped, False otherwise. + + The output will be skipped if: + - tool_mode is False (output is not meant to be used as a tool) + - output name matches TOOL_OUTPUT_NAME + - output types contain any of the tool types in TOOL_TYPES_SET + """ + return not output.tool_mode or ( + output.name == TOOL_OUTPUT_NAME or any(tool_type in output.types for tool_type in TOOL_TYPES_SET) + ) + def get_tools( self, tool_name: str | None = None, @@ -178,7 +196,7 @@ def get_tools( ) -> list[BaseTool]: tools = [] for output in self.component.outputs: - if output.name == TOOL_OUTPUT_NAME or any(tool_type in output.types for tool_type in TOOL_TYPES_SET): + if self._should_skip_output(output): continue if not output.method: diff --git a/src/backend/base/langflow/custom/custom_component/component.py b/src/backend/base/langflow/custom/custom_component/component.py index 639dbc240f1e..b2ec3f2841d8 100644 --- a/src/backend/base/langflow/custom/custom_component/component.py +++ b/src/backend/base/langflow/custom/custom_component/component.py @@ -44,6 +44,7 @@ if TYPE_CHECKING: from collections.abc import Callable + from langflow.base.tools.component_tool import ComponentToolkit from langflow.events.event_manager import EventManager from langflow.graph.edge.schema import EdgeData from langflow.graph.vertex.base import Vertex @@ -1023,7 +1024,7 @@ def _get_fallback_input(self, **kwargs): return Input(**kwargs) async def to_toolkit(self) -> list[Tool]: - component_toolkit = _get_component_toolkit() + component_toolkit: type[ComponentToolkit] = _get_component_toolkit() tools = component_toolkit(component=self).get_tools(callbacks=self.get_langchain_callbacks()) if hasattr(self, TOOLS_METADATA_INPUT_NAME): tools = component_toolkit(component=self, metadata=self.tools_metadata).update_tools_metadata(tools=tools) diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompt Chaining.json b/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompt Chaining.json index fcdb8281d93a..dbff0dbbd44d 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompt Chaining.json @@ -213,6 +213,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -345,6 +346,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -639,6 +641,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -915,6 +918,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1041,6 +1045,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1251,6 +1256,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1266,6 +1272,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], @@ -1595,6 +1602,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1610,6 +1618,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], @@ -1939,6 +1948,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1954,6 +1964,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting.json b/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting.json index fb3d17c1a3b5..a33e1ef2f1cb 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting.json @@ -119,6 +119,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -400,6 +401,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -602,6 +604,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -888,6 +891,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -903,6 +907,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Blog Writer.json b/src/backend/base/langflow/initial_setup/starter_projects/Blog Writer.json index b6772b759538..cdeac485ef80 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Blog Writer.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Blog Writer.json @@ -171,6 +171,7 @@ "method": "parse_data", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -183,6 +184,7 @@ "method": "parse_data_as_list", "name": "data_list", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -327,6 +329,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -496,6 +499,7 @@ "method": "text_response", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -606,6 +610,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -987,6 +992,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1002,6 +1008,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], @@ -1322,6 +1329,7 @@ "method": "fetch_content", "name": "data", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -1334,6 +1342,7 @@ "method": "fetch_content_text", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1346,6 +1355,7 @@ "method": "as_dataframe", "name": "dataframe", "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Custom Component Maker.json b/src/backend/base/langflow/initial_setup/starter_projects/Custom Component Maker.json index ff968513c329..56c2bad9da01 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Custom Component Maker.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Custom Component Maker.json @@ -236,6 +236,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -537,6 +538,7 @@ "method": "retrieve_messages", "name": "messages", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -549,6 +551,7 @@ "method": "retrieve_messages_as_text", "name": "messages_text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -786,6 +789,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1032,6 +1036,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1371,6 +1376,7 @@ "method": "fetch_content", "name": "data", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -1383,6 +1389,7 @@ "method": "fetch_content_text", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1395,6 +1402,7 @@ "method": "as_dataframe", "name": "dataframe", "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], @@ -1524,6 +1532,7 @@ "method": "fetch_content", "name": "data", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -1536,6 +1545,7 @@ "method": "fetch_content_text", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1548,6 +1558,7 @@ "method": "as_dataframe", "name": "dataframe", "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], @@ -1683,6 +1694,7 @@ "method": "fetch_content", "name": "data", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -1695,6 +1707,7 @@ "method": "fetch_content_text", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1707,6 +1720,7 @@ "method": "as_dataframe", "name": "dataframe", "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], @@ -1847,6 +1861,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1862,6 +1877,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json b/src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json index 151cd42cd903..3b9ec55dd69b 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json @@ -169,6 +169,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -457,6 +458,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -733,6 +735,7 @@ "method": "parse_data", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -745,6 +748,7 @@ "method": "parse_data_as_list", "name": "data_list", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -952,6 +956,7 @@ "name": "data", "required_inputs": [], "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -1204,6 +1209,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1361,6 +1367,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1376,6 +1383,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Graph Vector Store RAG.json b/src/backend/base/langflow/initial_setup/starter_projects/Graph Vector Store RAG.json index 65e4796508e0..53bb2107affd 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Graph Vector Store RAG.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Graph Vector Store RAG.json @@ -354,6 +354,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -671,6 +672,7 @@ "openai_api_key" ], "selected": "Embeddings", + "tool_mode": true, "types": [ "Embeddings" ], @@ -1176,6 +1178,7 @@ "token" ], "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -1189,6 +1192,7 @@ "name": "dataframe", "required_inputs": [], "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], @@ -1687,6 +1691,7 @@ "method": "parse_data", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1699,6 +1704,7 @@ "method": "parse_data_as_list", "name": "data_list", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -1843,6 +1849,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2017,6 +2024,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2032,6 +2040,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], @@ -2334,6 +2343,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2605,6 +2615,7 @@ "method": "fetch_content", "name": "data", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -2617,6 +2628,7 @@ "method": "fetch_content_text", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2629,6 +2641,7 @@ "method": "as_dataframe", "name": "dataframe", "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], @@ -2794,6 +2807,7 @@ "token" ], "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -2807,6 +2821,7 @@ "name": "dataframe", "required_inputs": [], "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], @@ -3304,6 +3319,7 @@ "name": "data", "required_inputs": [], "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -3489,6 +3505,7 @@ "name": "data", "required_inputs": [], "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -3650,6 +3667,7 @@ "openai_api_key" ], "selected": "Embeddings", + "tool_mode": true, "types": [ "Embeddings" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json b/src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json index c40ad25ce5c2..cb28b7e0d9a7 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json @@ -198,6 +198,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -500,6 +501,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1042,6 +1044,7 @@ "method": "parse_data", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1054,6 +1057,7 @@ "method": "parse_data_as_list", "name": "data_list", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -1201,6 +1205,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1337,6 +1342,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1352,6 +1358,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json b/src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json index 8ad26dfc24de..b9574ef9c318 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json @@ -311,6 +311,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -602,6 +603,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -770,6 +772,7 @@ "method": "text_response", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -879,6 +882,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1033,6 +1037,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1331,6 +1336,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1893,6 +1899,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2560,6 +2567,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2575,6 +2583,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], @@ -2904,6 +2913,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2919,6 +2929,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Market Research.json b/src/backend/base/langflow/initial_setup/starter_projects/Market Research.json index e68ef4ad50b7..5139d539e2c1 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Market Research.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Market Research.json @@ -208,6 +208,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -502,6 +503,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1170,6 +1172,7 @@ "method": "parse_data", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1182,6 +1185,7 @@ "method": "parse_data_as_list", "name": "data_list", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -1349,6 +1353,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2266,6 +2271,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2281,6 +2287,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Memory Chatbot.json b/src/backend/base/langflow/initial_setup/starter_projects/Memory Chatbot.json index 3c385e7234cc..fdcbd2bac112 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Memory Chatbot.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Memory Chatbot.json @@ -144,6 +144,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -446,6 +447,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -792,6 +794,7 @@ "method": "retrieve_messages", "name": "messages", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -804,6 +807,7 @@ "method": "retrieve_messages_as_text", "name": "messages_text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1041,6 +1045,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1199,6 +1204,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1214,6 +1220,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json b/src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json index 3bfd8dbb0dbb..22e578b6a32c 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json @@ -303,6 +303,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -458,6 +459,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -752,6 +754,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1031,6 +1034,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1263,6 +1267,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1822,6 +1827,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1948,6 +1954,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2435,6 +2442,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2450,6 +2458,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], @@ -2779,6 +2788,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2794,6 +2804,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/SEO Keyword Generator.json b/src/backend/base/langflow/initial_setup/starter_projects/SEO Keyword Generator.json index 52b0a7d52f83..00dc345ac1e4 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/SEO Keyword Generator.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/SEO Keyword Generator.json @@ -120,6 +120,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -419,6 +420,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -551,6 +553,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -867,6 +870,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -882,6 +886,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json b/src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json index a2b2a0f3a4db..dfa832c941db 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json @@ -124,6 +124,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -371,6 +372,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -705,6 +707,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents .json b/src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents .json index a10859ef8ef2..4799245f2633 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents .json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents .json @@ -340,6 +340,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -639,6 +640,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1221,6 +1223,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1786,6 +1789,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1918,6 +1922,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2053,6 +2058,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2229,6 +2235,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2620,6 +2627,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json b/src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json index e7cdb085b7ab..9b7ad598e295 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json @@ -169,6 +169,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -726,6 +727,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1022,6 +1024,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json b/src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json index 49673f9412ed..d469abc12593 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json @@ -228,6 +228,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -522,6 +523,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -821,6 +823,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1403,6 +1406,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1985,6 +1989,7 @@ "method": "message_response", "name": "response", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Twitter Thread Generator.json b/src/backend/base/langflow/initial_setup/starter_projects/Twitter Thread Generator.json index 5a1f44acb788..fde3399b4a9d 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Twitter Thread Generator.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Twitter Thread Generator.json @@ -285,6 +285,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -569,6 +570,7 @@ "method": "text_response", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -682,6 +684,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -954,6 +957,7 @@ "method": "text_response", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1057,6 +1061,7 @@ "method": "text_response", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1160,6 +1165,7 @@ "method": "text_response", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1263,6 +1269,7 @@ "method": "text_response", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1366,6 +1373,7 @@ "method": "text_response", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1517,6 +1525,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1791,6 +1800,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1806,6 +1816,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], 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 362423db01a0..f115adda2381 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 @@ -301,6 +301,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -582,6 +583,7 @@ "method": "parse_data", "name": "text", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -594,6 +596,7 @@ "method": "parse_data_as_list", "name": "data_list", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -744,6 +747,7 @@ "method": "build_prompt", "name": "prompt", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -915,6 +919,7 @@ "method": "split_text", "name": "chunks", "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -927,6 +932,7 @@ "method": "as_dataframe", "name": "dataframe", "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], @@ -1160,6 +1166,7 @@ "method": "message_response", "name": "message", "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -1455,6 +1462,7 @@ "openai_api_key" ], "selected": "Embeddings", + "tool_mode": true, "types": [ "Embeddings" ], @@ -1989,6 +1997,7 @@ "openai_api_key" ], "selected": "Embeddings", + "tool_mode": true, "types": [ "Embeddings" ], @@ -2468,6 +2477,7 @@ "name": "data", "required_inputs": [], "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -2818,6 +2828,7 @@ "name": "text_output", "required_inputs": [], "selected": "Message", + "tool_mode": true, "types": [ "Message" ], @@ -2833,6 +2844,7 @@ "api_key" ], "selected": "LanguageModel", + "tool_mode": true, "types": [ "LanguageModel" ], @@ -3170,6 +3182,7 @@ "token" ], "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -3183,6 +3196,7 @@ "name": "dataframe", "required_inputs": [], "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], @@ -3663,6 +3677,7 @@ "token" ], "selected": "Data", + "tool_mode": true, "types": [ "Data" ], @@ -3676,6 +3691,7 @@ "name": "dataframe", "required_inputs": [], "selected": "DataFrame", + "tool_mode": true, "types": [ "DataFrame" ], diff --git a/src/backend/base/langflow/template/field/base.py b/src/backend/base/langflow/template/field/base.py index 808aee7efa50..e16a9fe7b07f 100644 --- a/src/backend/base/langflow/template/field/base.py +++ b/src/backend/base/langflow/template/field/base.py @@ -200,6 +200,9 @@ class Output(BaseModel): allows_loop: bool = Field(default=False) """Specifies if the output allows looping.""" + tool_mode: bool = Field(default=True) + """Specifies if the output should be used as a tool""" + def to_dict(self): return self.model_dump(by_alias=True, exclude_none=True) diff --git a/src/backend/tests/unit/test_schema.py b/src/backend/tests/unit/test_schema.py index 19f222cac44f..97fd930e37e2 100644 --- a/src/backend/tests/unit/test_schema.py +++ b/src/backend/tests/unit/test_schema.py @@ -139,6 +139,7 @@ def test_output_to_dict(self): "display_name": "test_output", "cache": True, "value": "__UNDEFINED__", + "tool_mode": True, } def test_output_validate_display_name(self):