当前位置: 首页 > news >正文

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=["\nSQLResult:"])
    | 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;

在这里插入图片描述

相关文章:

  • Phpstorm配置Xdebug
  • Android BLE蓝牙扫描系统源码解析学习笔记
  • 【Servlet】Servlet入门
  • php开发实战分析(11):mysql中使用update语句使用CASE WHEN
  • 【快捷部署】011_PostgreSQL(16)
  • Liunx进程信号
  • Tuxera NTFS for Mac2023绿色免费版 免费的ntfs for mac 免费读写硬盘U盘工具
  • Linux存储的基本管理
  • 什么是Redis数据一致性?如何解决?
  • 操作系统① —— 进程管理
  • 单细胞RNA测序(scRNA-seq)SRA数据下载及fastq-dumq数据拆分
  • 设计模式:工厂模式和抽象工厂模式的区别
  • 每日面经分享(pytest测试案例,接口断言,多并发断言)
  • 第16章 网络编程
  • Oracle 数据库工作中常用知识点:sql语法与常用函数
  • 第五章 即速运用
  • AD20全流程的使用笔记
  • 【随笔】Git 高级篇 -- 相对引用2(十三)
  • 微信小程序怎么制作?制作一个微信小程序需要多少钱?
  • vue3表单参数校验+正则表达式
  • 78家公募年度业绩比拼:23家营收净利双升,十强座次微调
  • 北京发布今年第四轮拟供商品住宅用地清单,共计5宗22公顷
  • 83岁连丽如每周登台说书,还上了15堂连派评书课
  • 美情报机构攻击中国大型商用密码产品提供商,调查报告公布
  • 央行副行长:增强外汇市场韧性,坚决对市场顺周期行为进行纠偏
  • 学校食堂饭菜有蛆?举报人遭值班人员辱骂?四川苍溪县教育局回应