langchain.tools.sql_database.tool.QuerySQLCheckerTool¶

class langchain.tools.sql_database.tool.QuerySQLCheckerTool(*, name: str = 'sql_db_query_checker', description: str = '\n    Use this tool to double check if your query is correct before executing it.\n    Always use this tool before executing a query with query_sql_db!\n    ', args_schema: Optional[Type[BaseModel]] = None, return_direct: bool = False, verbose: bool = False, callbacks: Optional[Union[List[BaseCallbackHandler], BaseCallbackManager]] = None, callback_manager: Optional[BaseCallbackManager] = None, tags: Optional[List[str]] = None, metadata: Optional[Dict[str, Any]] = None, handle_tool_error: Optional[Union[bool, str, Callable[[ToolException], str]]] = False, db: SQLDatabase, template: str = '\n{query}\nDouble check the {dialect} query above for common mistakes, including:\n- Using NOT IN with NULL values\n- Using UNION when UNION ALL should have been used\n- Using BETWEEN for exclusive ranges\n- Data type mismatch in predicates\n- Properly quoting identifiers\n- Using the correct number of arguments for functions\n- Casting to the correct data type\n- Using the proper columns for joins\n\nIf there are any of the above mistakes, rewrite the query. If there are no mistakes, just reproduce the original query.\n\nOutput the final SQL query only.\n\nSQL Query: ', llm: BaseLanguageModel, llm_chain: LLMChain)[source]¶

Bases: BaseSQLDatabaseTool, BaseTool

Use an LLM to check if a query is correct. Adapted from https://www.patterns.app/blog/2023/01/18/crunchbot-sql-analyst-gpt/

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

param args_schema: Optional[Type[BaseModel]] = None¶

Pydantic model class to validate and parse the tool’s input arguments.

param callback_manager: Optional[BaseCallbackManager] = None¶

Deprecated. Please use callbacks instead.

param callbacks: Callbacks = None¶

Callbacks to be called during tool execution.

param db: SQLDatabase [Required]¶
param description: str = '\n    Use this tool to double check if your query is correct before executing it.\n    Always use this tool before executing a query with query_sql_db!\n    '¶

Used to tell the model how/when/why to use the tool.

You can provide few-shot examples as a part of the description.

param handle_tool_error: Optional[Union[bool, str, Callable[[ToolException], str]]] = False¶

Handle the content of the ToolException thrown.

param llm: langchain.schema.language_model.BaseLanguageModel [Required]¶
param llm_chain: langchain.chains.llm.LLMChain [Required]¶
param metadata: Optional[Dict[str, Any]] = None¶

Optional metadata associated with the tool. Defaults to None This metadata will be associated with each call to this tool, and passed as arguments to the handlers defined in callbacks. You can use these to eg identify a specific instance of a tool with its use case.

param name: str = 'sql_db_query_checker'¶

The unique name of the tool that clearly communicates its purpose.

param return_direct: bool = False¶

Whether to return the tool’s output directly. Setting this to True means

that after the tool is called, the AgentExecutor will stop looping.

param tags: Optional[List[str]] = None¶

Optional list of tags associated with the tool. Defaults to None These tags will be associated with each call to this tool, and passed as arguments to the handlers defined in callbacks. You can use these to eg identify a specific instance of a tool with its use case.

param template: str = '\n{query}\nDouble check the {dialect} query above for common mistakes, including:\n- Using NOT IN with NULL values\n- Using UNION when UNION ALL should have been used\n- Using BETWEEN for exclusive ranges\n- Data type mismatch in predicates\n- Properly quoting identifiers\n- Using the correct number of arguments for functions\n- Casting to the correct data type\n- Using the proper columns for joins\n\nIf there are any of the above mistakes, rewrite the query. If there are no mistakes, just reproduce the original query.\n\nOutput the final SQL query only.\n\nSQL Query: '¶
param verbose: bool = False¶

Whether to log the tool’s progress.

__call__(tool_input: str, callbacks: Optional[Union[List[BaseCallbackHandler], BaseCallbackManager]] = None) str¶

Make tool callable.

async ainvoke(input: Union[str, Dict], config: Optional[RunnableConfig] = None, **kwargs: Any) Any¶
async arun(tool_input: Union[str, Dict], verbose: Optional[bool] = None, start_color: Optional[str] = 'green', color: Optional[str] = 'green', callbacks: Optional[Union[List[BaseCallbackHandler], BaseCallbackManager]] = None, *, tags: Optional[List[str]] = None, metadata: Optional[Dict[str, Any]] = None, **kwargs: Any) Any¶

Run the tool asynchronously.

validator initialize_llm_chain  »  all fields[source]¶
invoke(input: Union[str, Dict], config: Optional[RunnableConfig] = None, **kwargs: Any) Any¶
validator raise_deprecation  »  all fields¶

Raise deprecation warning if callback_manager is used.

run(tool_input: Union[str, Dict], verbose: Optional[bool] = None, start_color: Optional[str] = 'green', color: Optional[str] = 'green', callbacks: Optional[Union[List[BaseCallbackHandler], BaseCallbackManager]] = None, *, tags: Optional[List[str]] = None, metadata: Optional[Dict[str, Any]] = None, **kwargs: Any) Any¶

Run the tool.

property args: dict¶
property is_single_input: bool¶

Whether the tool only accepts a single input.

model Config¶

Bases: Config

Configuration for this pydantic object.

arbitrary_types_allowed = True¶
extra = 'forbid'¶