Spaces:
Running
Running
| import os | |
| import pytest | |
| from langflow.base.tools.component_tool import ComponentToolkit | |
| from langflow.components.langchain_utilities import ToolCallingAgentComponent | |
| from langflow.components.models import OpenAIModelComponent | |
| from langflow.components.outputs import ChatOutput | |
| from langflow.components.tools.calculator import CalculatorToolComponent | |
| from langflow.graph import Graph | |
| from langflow.schema.data import Data | |
| from langflow.services.settings.feature_flags import FEATURE_FLAGS | |
| from pydantic import BaseModel | |
| def _add_toolkit_output(): | |
| FEATURE_FLAGS.add_toolkit_output = True | |
| yield | |
| FEATURE_FLAGS.add_toolkit_output = False | |
| async def test_component_tool(): | |
| calculator_component = CalculatorToolComponent() | |
| component_toolkit = ComponentToolkit(component=calculator_component) | |
| component_tool = component_toolkit.get_tools()[0] | |
| assert component_tool.name == "CalculatorTool-run_model" | |
| assert issubclass(component_tool.args_schema, BaseModel) | |
| # TODO: fix this | |
| # assert component_tool.args_schema.model_json_schema()["properties"] == { | |
| # "input_value": { | |
| # "default": "", | |
| # "description": "Message to be passed as input.", | |
| # "title": "Input Value", | |
| # "type": "string", | |
| # }, | |
| # } | |
| assert component_toolkit.component == calculator_component | |
| result = component_tool.invoke(input={"expression": "1+1"}) | |
| assert isinstance(result[0], Data) | |
| assert "result" in result[0].data | |
| assert result[0].result == "2" | |
| def test_component_tool_with_api_key(): | |
| chat_output = ChatOutput() | |
| openai_llm = OpenAIModelComponent() | |
| openai_llm.set(api_key=os.environ["OPENAI_API_KEY"]) | |
| tool_calling_agent = ToolCallingAgentComponent() | |
| tool_calling_agent.set( | |
| llm=openai_llm.build_model, tools=[chat_output], input_value="Which tools are available? Please tell its name." | |
| ) | |
| g = Graph(start=tool_calling_agent, end=tool_calling_agent) | |
| assert g is not None | |
| results = list(g.start()) | |
| assert len(results) == 4 | |
| assert "message_response" in tool_calling_agent._outputs_map["response"].value.get_text() | |