From 29cef91e6ff214d6a415e58bebbcd4dfb12b58d8 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 23 Nov 2023 15:38:40 -0300 Subject: [PATCH] Add AgentInitializerComponent to initialize agents --- .../components/agents/AgentInitializer.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/backend/langflow/components/agents/AgentInitializer.py diff --git a/src/backend/langflow/components/agents/AgentInitializer.py b/src/backend/langflow/components/agents/AgentInitializer.py new file mode 100644 index 000000000..b0268892b --- /dev/null +++ b/src/backend/langflow/components/agents/AgentInitializer.py @@ -0,0 +1,32 @@ +from typing import List + +from langchain.agents import AgentExecutor, AgentType, initialize_agent, types +from langflow import CustomComponent +from langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool + + +class AgentInitializerComponent(CustomComponent): + def build_config(self): + agents = list(types.AGENT_TO_CLASS.keys()) + # field_type and required are optional + return { + "agent": {"options": agents, "value": agents[0], "display_name": "Agent Type"}, + "max_iterations": {"display_name": "Max Iterations", "value": 10}, + "memory": {"display_name": "Memory"}, + "tools": {"display_name": "Tools"}, + "llm": {"display_name": "Language Model"}, + } + + def build( + self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int + ) -> AgentExecutor: + agent = AgentType(agent) + return initialize_agent( + tools=tools, + llm=llm, + agent=agent, + memory=memory, + return_intermediate_steps=True, + handle_parsing_errors=True, + max_iterations=max_iterations, + )