news 2026/6/10 17:50:05

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 9:53:56

knife4j+springboot3.4异常无法正确展示文档

场景复现: knife4j-openapi3-jakarta-spring-boot-starter版本 com.github.xiaoymin knife4j-openapi3-jakarta-spring-boot-starter 4.5.0 原来使用springboot3.3.5版本,先升级到3.4.0版本 通过http://ip:port/doc.html访问接口文档发现访问/v3/api-d…

作者头像 李华
网站建设 2026/6/10 11:21:00

MS SQL Server 实战 统计与汇总重复记录

目录 需求 范例运行环境 数据样本设计 功能实现 上传EXCEL文件到数据库 分组统计 SQL 语句 分组汇总 SQL 语句 having 语句过滤最终统计结果 小结 需求 在日常的数据管理应用中,统计和汇总重复记录的情况是经常遇到的一个问题,然后我们会根据统…

作者头像 李华
网站建设 2026/6/10 13:41:53

Modbus报文详解

Modbus是一种串行通信协议,最初由Modicon公司(现为施耐德电气的一部分)在1979年为使用其PLC(可编程逻辑控制器)而开发。Modbus已成为工业领域内广泛使用的一种通信协议,特别是对于监控和控制系统。Modbus协…

作者头像 李华
网站建设 2026/6/10 11:26:26

Java进阶,时间与日期,包装类,正则表达式

Java时间与日期,包装类,正则表达式 一.时间与日期 1.Date Date类概述 Date类代表当前所在系统的日期时间信息。 Date的构造器 名称 说明 public Date() 创建一个Date对象,代表的是系统当前此刻日期时间。 Date的常用方法 名称 说明 public lo…

作者头像 李华
网站建设 2026/6/10 13:19:57

LeetCode动态规划经典题:Unique Paths 网格路径计数详解

这道题是典型的动态规划入门题,非常适合练习二维 DP 的建模思路。leetcode1 题目概述 在一个 mn 的网格上,有一个机器人从左上角 (0,0) 出发,只能向右或向下移动一步。leetcode 目标是到达右下角 (m−1,n−1),要求计算一共有多…

作者头像 李华
网站建设 2026/6/10 13:35:48

【课程设计/毕业设计】基于深度学习机器学习的土豆疾病识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华