langchain.chains.sql_database.query
.create_sql_query_chain¶
- langchain.chains.sql_database.query.create_sql_query_chain(llm: BaseLanguageModel, db: SQLDatabase, prompt: Optional[BasePromptTemplate] = None, k: int = 5) Runnable[Union[SQLInput, SQLInputWithTables, Dict[str, Any]], str] [source]¶
创建一个生成SQL查询的链。
安全提示: 此链为给定数据库生成SQL查询。
SQLDatabase类提供了一个get_table_info方法,可用于获取表的列信息以及示例数据。
为了减少泄露敏感数据的风险,限制权限为只读,并范围限定在所需的表中。
可选地,使用SQLInputWithTables输入类型指定允许访问的表。
控制谁可以向此链提交请求的访问权限。
有关更多信息,请参见 https://python.langchain.com/docs/security。
- 参数:
llm: 要使用的语言模型。 db: 用于生成查询的SQLDatabase。 prompt: 要使用的提示。如果未提供任何提示,将根据方言选择一个。默认为None。有关更多信息,请参见下面的Prompt部分。 k: 每个select语句返回的结果数量。默认为5。
- 返回:
一个接受问题并生成SQL查询以回答该问题的链。
示例:
# pip install -U langchain langchain-community langchain-openai from langchain_openai import ChatOpenAI from langchain.chains import create_sql_query_chain from langchain_community.utilities import SQLDatabase db = SQLDatabase.from_uri("sqlite:///Chinook.db") llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0) chain = create_sql_query_chain(llm, db) response = chain.invoke({"question": "How many employees are there"})
- 提示:
- 如果未提供提示,则根据SQLDatabase方言选择默认提示。如果提供了提示,则必须支持输入变量:
input: 用户问题加后缀”SQLQuery: “传递到这里。
top_k: 每个select语句返回的结果数量(传递给此函数的`k`参数)在此处传递。
table_info: 表定义和示例行在此处传递。如果用户在调用链时指定了”table_names_to_use”,则只包括这些表。否则,将包括所有表。
dialect(可选): 如果提示中包含方言输入变量,则db方言将传递到这里。
这是一个示例提示:
from langchain_core.prompts import PromptTemplate template = '''给定一个输入问题,首先创建一个语法正确的{dialect}查询来运行,然后查看查询的结果并返回答案。 使用以下格式: 问题: "这里是问题" SQL查询: "要运行的SQL查询" SQL结果: "SQL查询的结果" 答案: "这里是最终答案" 仅使用以下表: {table_info}. 问题: {input}''' prompt = PromptTemplate.from_template(template)
- Parameters
llm (BaseLanguageModel) –
db (SQLDatabase) –
prompt (Optional[BasePromptTemplate]) –
k (int) –
- Return type
Runnable[Union[SQLInput, SQLInputWithTables, Dict[str, Any]], str]