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

打印 上一主题 下一主题

主题 766|帖子 766|积分 2298

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

  1. SQL:
  2. https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sql
  3. Shell:
  4. pip install --upgrade --quiet  langchain-core langchain-community langchain-openai
复制代码
导入数据

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

编写代码

这里我使用了 GPR 3.5 Turbo,效果不抱负的话可以试试GPT 4 大概 GPT 4 Turbo
  1. from langchain_core.prompts import ChatPromptTemplate
  2. from langchain_community.utilities import SQLDatabase
  3. from langchain_core.output_parsers import StrOutputParser
  4. from langchain_core.runnables import RunnablePassthrough
  5. from langchain_openai import ChatOpenAI
  6. template = """Based on the table schema below, write a SQL query that would answer the user's question:
  7. {schema}
  8. Question: {question}
  9. SQL Query:"""
  10. prompt = ChatPromptTemplate.from_template(template)
  11. db = SQLDatabase.from_uri("sqlite:///./Chinook.db")
  12. def get_schema(_):
  13.     return db.get_table_info()
  14. def run_query(query):
  15.     return db.run(query)
  16. model = ChatOpenAI(
  17.     model="gpt-3.5-turbo",
  18. )
  19. sql_response = (
  20.     RunnablePassthrough.assign(schema=get_schema)
  21.     | prompt
  22.     | model.bind(stop=["\nSQLResult:"])
  23.     | StrOutputParser()
  24. )
  25. message = sql_response.invoke({"question": "How many employees are there?"})
  26. print(f"message: {message}")
复制代码
运行结果

  1. ➜ python3 test08.py
  2. message: SELECT COUNT(*) AS totalEmployees
  3. FROM Employee;
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表