Spaces:
Running
Running
from langchain.agents import AgentExecutor | |
from langchain_community.agent_toolkits import SQLDatabaseToolkit | |
from langchain_community.agent_toolkits.sql.base import create_sql_agent | |
from langchain_community.utilities import SQLDatabase | |
from langflow.base.agents.agent import LCAgentComponent | |
from langflow.inputs import HandleInput, MessageTextInput | |
class SQLAgentComponent(LCAgentComponent): | |
display_name = "SQLAgent" | |
description = "Construct an SQL agent from an LLM and tools." | |
name = "SQLAgent" | |
icon = "LangChain" | |
inputs = [ | |
*LCAgentComponent._base_inputs, | |
HandleInput(name="llm", display_name="Language Model", input_types=["LanguageModel"], required=True), | |
MessageTextInput(name="database_uri", display_name="Database URI", required=True), | |
HandleInput( | |
name="extra_tools", | |
display_name="Extra Tools", | |
input_types=["Tool", "BaseTool"], | |
is_list=True, | |
advanced=True, | |
), | |
] | |
def build_agent(self) -> AgentExecutor: | |
db = SQLDatabase.from_uri(self.database_uri) | |
toolkit = SQLDatabaseToolkit(db=db, llm=self.llm) | |
agent_args = self.get_agent_kwargs() | |
agent_args["max_iterations"] = agent_args["agent_executor_kwargs"]["max_iterations"] | |
del agent_args["agent_executor_kwargs"]["max_iterations"] | |
return create_sql_agent(llm=self.llm, toolkit=toolkit, extra_tools=self.extra_tools or [], **agent_args) | |