LangChain-08 Query SQL DB 通过GPT自动查询SQL

我们需要下载一个 LangChain 官方提供的本地小数据库。

安装依赖

复制代码
SQL:
https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sql
Shell:
pip install --upgrade --quiet  langchain-core langchain-community langchain-openai

导入数据

我这里使用 Navicat 导入数据,你也可以通过别的方式导入(当然你有现成的数据库也可以,但是不要太大了,不然会消耗很多Token)。

编写代码

这里我使用了 GPR 3.5 Turbo,效果不理想的话可以试试GPT 4 或者 GPT 4 Turbo

复制代码
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.utilities import SQLDatabase
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI


template = """Based on the table schema below, write a SQL query that would answer the user's question:
{schema}

Question: {question}
SQL Query:"""
prompt = ChatPromptTemplate.from_template(template)

db = SQLDatabase.from_uri("sqlite:///./Chinook.db")


def get_schema(_):
    return db.get_table_info()


def run_query(query):
    return db.run(query)


model = ChatOpenAI(
    model="gpt-3.5-turbo",
)

sql_response = (
    RunnablePassthrough.assign(schema=get_schema)
    | prompt
    | model.bind(stop=["
SQLResult:"])
    | StrOutputParser()
)

message = sql_response.invoke({"question": "How many employees are there?"})
print(f"message: {message}")

运行结果

复制代码
? python3 test08.py
message: SELECT COUNT(*) AS totalEmployees
FROM Employee;
相关推荐
2401_883600251 分钟前
SQL视图名称冲突如何避免_建立规范化的命名空间与管理
jvm·数据库·python
殷紫川1 分钟前
PostgreSQL vs MySQL:Java 选型指南与实战避坑
数据库·mysql·postgresql
Treh UNFO3 分钟前
SQL 注入详解:原理、危害与防范措施
数据库·sql·oracle
m0_640309304 分钟前
CSS中如何让浮动元素撑开父容器_深度解析清除浮动
jvm·数据库·python
2301_816660214 分钟前
Golang bufio怎么读取用户输入_Golang标准输入读取教程【详解】
jvm·数据库·python
hsjcjh7 分钟前
PostgreSQL 查看数据库及表中数据占用空间大小
数据库·postgresql·oracle
解救女汉子8 分钟前
Golang如何创建和删除目录_Golang目录操作教程【完整】
jvm·数据库·python
小猿姐9 分钟前
数据库漏洞自动同步,KubeBlocks Addon 安全能力再升级
数据库·安全
ClouGence10 分钟前
从 Spanner 到 StarRocks:把云账单砍掉 80%
数据库·dba
m0_5887584811 分钟前
CSS如何修复Safari下边框圆角溢出问题_利用background-clip属性修正
jvm·数据库·python