Spaces:
Running
Running
| from langchain.agents import create_tool_calling_agent | |
| from langchain_core.prompts import ChatPromptTemplate | |
| from langflow.base.agents.agent import LCToolsAgentComponent | |
| from langflow.inputs import MessageTextInput | |
| from langflow.inputs.inputs import DataInput, HandleInput | |
| from langflow.schema import Data | |
| class ToolCallingAgentComponent(LCToolsAgentComponent): | |
| display_name: str = "Tool Calling Agent" | |
| description: str = "An agent designed to utilize various tools seamlessly within workflows." | |
| icon = "LangChain" | |
| name = "ToolCallingAgent" | |
| inputs = [ | |
| *LCToolsAgentComponent._base_inputs, | |
| HandleInput( | |
| name="llm", | |
| display_name="Language Model", | |
| input_types=["LanguageModel"], | |
| required=True, | |
| info="Language model that the agent utilizes to perform tasks effectively.", | |
| ), | |
| MessageTextInput( | |
| name="system_prompt", | |
| display_name="System Prompt", | |
| info="System prompt to guide the agent's behavior.", | |
| value="You are a helpful assistant that can use tools to answer questions and perform tasks.", | |
| ), | |
| DataInput( | |
| name="chat_history", | |
| display_name="Chat Memory", | |
| is_list=True, | |
| advanced=True, | |
| info="This input stores the chat history, allowing the agent to remember previous conversations.", | |
| ), | |
| ] | |
| def get_chat_history_data(self) -> list[Data] | None: | |
| return self.chat_history | |
| def create_agent_runnable(self): | |
| messages = [ | |
| ("system", "{system_prompt}"), | |
| ("placeholder", "{chat_history}"), | |
| ("human", "{input}"), | |
| ("placeholder", "{agent_scratchpad}"), | |
| ] | |
| prompt = ChatPromptTemplate.from_messages(messages) | |
| self.validate_tool_names() | |
| try: | |
| return create_tool_calling_agent(self.llm, self.tools or [], prompt) | |
| except NotImplementedError as e: | |
| message = f"{self.display_name} does not support tool calling. Please try using a compatible model." | |
| raise NotImplementedError(message) from e | |