Spaces:
Running
Running
from langchain.agents import create_openai_tools_agent | |
from langchain_core.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, PromptTemplate | |
from langflow.base.agents.agent import LCToolsAgentComponent | |
from langflow.inputs import MultilineInput | |
from langflow.inputs.inputs import DataInput, HandleInput | |
from langflow.schema import Data | |
class OpenAIToolsAgentComponent(LCToolsAgentComponent): | |
display_name: str = "OpenAI Tools Agent" | |
description: str = "Agent that uses tools via openai-tools." | |
icon = "LangChain" | |
name = "OpenAIToolsAgent" | |
inputs = [ | |
*LCToolsAgentComponent._base_inputs, | |
HandleInput( | |
name="llm", | |
display_name="Language Model", | |
input_types=["LanguageModel", "ToolEnabledLanguageModel"], | |
required=True, | |
), | |
MultilineInput( | |
name="system_prompt", | |
display_name="System Prompt", | |
info="System prompt for the agent.", | |
value="You are a helpful assistant", | |
), | |
MultilineInput( | |
name="user_prompt", display_name="Prompt", info="This prompt must contain 'input' key.", value="{input}" | |
), | |
DataInput(name="chat_history", display_name="Chat History", is_list=True, advanced=True), | |
] | |
def get_chat_history_data(self) -> list[Data] | None: | |
return self.chat_history | |
def create_agent_runnable(self): | |
if "input" not in self.user_prompt: | |
msg = "Prompt must contain 'input' key." | |
raise ValueError(msg) | |
messages = [ | |
("system", self.system_prompt), | |
("placeholder", "{chat_history}"), | |
HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=["input"], template=self.user_prompt)), | |
("placeholder", "{agent_scratchpad}"), | |
] | |
prompt = ChatPromptTemplate.from_messages(messages) | |
return create_openai_tools_agent(self.llm, self.tools, prompt) | |