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