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

embedded/2025/3/6 17:04:57/

我们需要下载一个 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 ChatOpenAItemplate = """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;

在这里插入图片描述


http://www.ppmy.cn/embedded/170527.html

相关文章

[内网安全] Windows 本地认证 — NTLM 哈希和 LM 哈希

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01:SAM 文件 & Windows 本地认证流程 0x0101:SAM 文件简介 Windows 本地账户的登录密码是存储在系统本地的 SAM 文件中的,在登录 Windows 的时候&am…

GCC RISCV 后端 -- cc1 入口

GCC编译工具链中的 gcc 可执行程序,实际上是个驱动程序(Driver),其根据输入的参数,然后调用其它不同的程序,对输入文件进行处理,包括编译、链接等。可以通过以下命令查看: gcc -v h…

UV安装GPU版本PyTorch

经过同事推荐,开始尝试使用uv管理Python环境,效果相当不错。 安装PyTorch遇到的问题 但在安装PyTorch时,采用默认的uv add方式会报错,而使用uv pip install安装PyTorch的cuda版本,虽然没有问题,但并不能同…

C++(蓝桥杯常考点)

前言:这个是针对于蓝桥杯竞赛常考的C内容,容器这些等下棋期再讲 C 在DEVC中注释和取消注释的方法:ctrl/ ASCII值(常用的): A-Z:65-90 a-z:97-122 0-9:48-57 换行/n:10科学计数法:eg&#xff1a…

10.RabbitMQ集群

十、集群与高可用 RabbitMQ 的集群分两种模式,一种是默认集群模式,一种是镜像集群模式; 在RabbitMQ集群中所有的节点(一个节点就是一个RabbitMQ的broker服务器) 被归为两类:一类是磁盘节点,一类是内存节点; 磁盘节点会把集群的所有信息(比如交换机、绑…

vscode远程连接ubuntu/Linux(虚拟机同样适用)

前言 在现代开发环境中,远程工作和跨平台开发变得越来越普遍。Visual Studio Code(VSCode)作为一个流行的代码编辑器,提供了强大的远程开发功能,使得开发者能够高效地连接和管理远程 Linux 服务器上的项目。通过 VSCod…

【MySQL】索引|作用|底层数据结构|常见问题

目录 1.概念 2.为何引入 3.使用 (1)查看索引 (2)创建索引(危险操作) (3)删除索引(危险操作) 4.使用场景 🔥5.底层数据结构(核…

使用300M带宽是否可以流畅地玩原神

本文来自腾讯元宝 ps:搬家了,需要装个路由器打游戏。 根据搜索结果,300M的网络带宽完全可以满足《原神》的流畅游玩需求。以下是具体分析及优化建议: 一、带宽需求与300M网络的适配性 ​带宽要求较低​ 《原神》作为一款开放世界…