langchain_community.agent_toolkits.sql.base.create_sql_agent(llm: BaseLanguageModel, toolkit: Optional[SQLDatabaseToolkit] = None, agent_type: Optional[Union[AgentType, Literal['openai-tools', 'tool-calling']]] = None, callback_manager: Optional[BaseCallbackManager] = None, prefix: Optional[str] = None, suffix: Optional[str] = None, format_instructions: Optional[str] = None, input_variables: Optional[List[str]] = None, top_k: int = 10, max_iterations: Optional[int] = 15, max_execution_time: Optional[float] = None, early_stopping_method: str = 'force', verbose: bool = False, agent_executor_kwargs: Optional[Dict[str, Any]] = None, extra_tools: Sequence[BaseTool] = (), *, db: Optional[SQLDatabase] = None, prompt: Optional[BasePromptTemplate] = None, **kwargs: Any) AgentExecutor[source]

Construct a SQL agent from an LLM and toolkit or database.

  • llm (BaseLanguageModel) – Language model to use for the agent. If agent_type is “tool-calling” then llm is expected to support tool calling.

  • toolkit (Optional[SQLDatabaseToolkit]) – SQLDatabaseToolkit for the agent to use. Must provide exactly one of ‘toolkit’ or ‘db’. Specify ‘toolkit’ if you want to use a different model for the agent and the toolkit.

  • agent_type (Optional[Union[AgentType, Literal['openai-tools', 'tool-calling']]]) – One of “tool-calling”, “openai-tools”, “openai-functions”, or “zero-shot-react-description”. Defaults to “zero-shot-react-description”. “tool-calling” is recommended over the legacy “openai-tools” and “openai-functions” types.

  • callback_manager (Optional[BaseCallbackManager]) – DEPRECATED. Pass “callbacks” key into ‘agent_executor_kwargs’ instead to pass constructor callbacks to AgentExecutor.

  • prefix (Optional[str]) – Prompt prefix string. Must contain variables “top_k” and “dialect”.

  • suffix (Optional[str]) – Prompt suffix string. Default depends on agent type.

  • format_instructions (Optional[str]) – Formatting instructions to pass to ZeroShotAgent.create_prompt() when ‘agent_type’ is “zero-shot-react-description”. Otherwise ignored.

  • input_variables (Optional[List[str]]) – DEPRECATED.

  • top_k (int) – Number of rows to query for by default.

  • max_iterations (Optional[int]) – Passed to AgentExecutor init.

  • max_execution_time (Optional[float]) – Passed to AgentExecutor init.

  • early_stopping_method (str) – Passed to AgentExecutor init.

  • verbose (bool) – AgentExecutor verbosity.

  • agent_executor_kwargs (Optional[Dict[str, Any]]) – Arbitrary additional AgentExecutor args.

  • extra_tools (Sequence[BaseTool]) – Additional tools to give to agent on top of the ones that come with SQLDatabaseToolkit.

  • db (Optional[SQLDatabase]) – SQLDatabase from which to create a SQLDatabaseToolkit. Toolkit is created using ‘db’ and ‘llm’. Must provide exactly one of ‘db’ or ‘toolkit’.

  • prompt (Optional[BasePromptTemplate]) – Complete agent prompt. prompt and {prefix, suffix, format_instructions, input_variables} are mutually exclusive.

  • **kwargs (Any) – Arbitrary additional Agent args.


An AgentExecutor with the specified agent_type agent.

Return type



from langchain_openai import ChatOpenAI from langchain_community.agent_toolkits import create_sql_agent from langchain_community.utilities import SQLDatabase

db = SQLDatabase.from_uri(“sqlite:///Chinook.db”) llm = ChatOpenAI(model=”gpt-3.5-turbo”, temperature=0) agent_executor = create_sql_agent(llm, db=db, agent_type=”tool-calling”, verbose=True)

Examples using create_sql_agent