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 | |