LangChain 25: SQL Agent通过自然语言查询数据库sqlite

LangChain系列文章

  1. LangChain 实现给动物取名字,
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
  4. LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
  5. LangChain 5易速鲜花内部问答系统
  6. LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
  7. LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
  8. LangChain 8 模型Model I/O:输入提示、调用模型、解析输出
  9. LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  10. LangChain 10思维链Chain of Thought一步一步的思考 think step by step
  11. LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain
  12. LangChain 12调用模型HuggingFace中的Llama2和Google Flan t5
  13. LangChain 13输出解析Output Parsers 自动修复解析器
  14. LangChain 14 SequencialChain链接不同的组件
  15. LangChain 15根据问题自动路由Router Chain确定用户的意图
  16. LangChain 16 通过Memory记住历史对话的内容
  17. LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理
  18. LangChain 18 LangSmith监控评估Agent并创建对应的数据库
  19. LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷
  20. LangChain 20 Agents调用google搜索API搜索市场价格 Reason Action:在语言模型中协同推理和行动
  21. LangChain 21 Agents自问自答与搜索 Self-ask with search
  22. LangChain 22 LangServe用于一键部署LangChain应用程序
  23. LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能
  24. LangChain 24 对本地文档的搜索RAG检索增强生成Retrieval-augmented generation
    在这里插入图片描述

1. LangChain提供与SQL数据库交互的工具:

  • 根据自然语言用户问题构建SQL查询
  • 使用链式查询创建和执行SQL数据库查询
  • 使用代理与SQL数据库交互,实现强大灵活的查询
    在这里插入图片描述
    企业数据通常存储在SQL数据库中。

LLM使得可以使用自然语言与SQL数据库进行交互。

LangChain提供SQL链和代理,以基于自然语言提示构建和运行SQL查询。

这些与SQLAlchemy支持的任何SQL方言兼容(例如MySQL、PostgreSQL、Oracle SQL、Databricks、SQLite)。

它们可以实现以下用例:

  • 生成基于自然语言问题运行的查询
  • 创建能够根据数据库数据回答问题的聊天机器人
  • 基于用户想要分析的见解构建自定义仪表板

2. 代码实现

以下示例将使用Chinook数据库的SQLite连接。

按照安装步骤在与此笔记本相同的目录中创建Chinook.db:

  • 将此文件保存到与Chinook_Sqlite.sql相同的目录中
  • 运行sqlite3 Chinook.db
  • 运行.read Chinook_Sqlite.sql
  • 测试SELECT * FROM Artist LIMIT 10;

运行过程如下

zgpeace@zgpeaces-MBP  ~/Workspace/LLM/langchain-llm-app ‹node-›  ‹› (develop*) 
╰─$ cd sql 

╭─zgpeace@zgpeaces-MBP  ~/Workspace/LLM/langchain-llm-app/sql ‹node-›  ‹› (develop*) 
╰─$ sqlite3 Chinook.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite> .read Chinook_Sqlite.sql
Error: near line 1: near "": syntax error
sqlite> SELECT * FROM Artist LIMIT 10;
1|AC/DC
2|Accept
3|Aerosmith
4|Alanis Morissette
5|Alice In Chains
6|Antônio Carlos Jobim
7|Apocalyptica
8|Audioslave
9|BackBeat
10|Billy Cobham

现在,Chinhook.db就在我们的目录中。
在这里插入图片描述

让我们创建一个SQLDatabaseChain来创建和执行SQL查询。

chain_sql.py在这段代码中,首先加载环境变量(可能用于数据库凭证或其他设置)。然后,从一个SQLite数据库创建一个SQLDatabase实例,这允许与该数据库进行交互。接着创建一个OpenAI模型实例,用于处理自然语言查询。最后,结合语言模型和数据库创建一个SQLDatabaseChain实例,用于执行自然语言形式的数据库查询。代码的最后一部分运行一个查询来获得数据库中员工的数量。

# 导入dotenv库,用于从.env文件加载环境变量
import dotenv

# 加载.env文件中的环境变量
dotenv.load_dotenv()

# 导入OpenAI模块,用于与OpenAI语言模型交互
from langchain.llms import OpenAI

# 导入SQLDatabase工具,用于与SQL数据库进行交互
from langchain.utilities import SQLDatabase

# 导入SQLDatabaseChain,用于创建一个结合了语言模型和数据库的处理链
from langchain_experimental.sql import SQLDatabaseChain

# 从指定的数据库URI创建SQL数据库实例,此处使用的是SQLite数据库
db = SQLDatabase.from_uri("sqlite:///Chinook.db")

# 创建OpenAI模型实例,设置temperature为0(完全确定性输出),并启用详细日志记录
llm = OpenAI(temperature=0, verbose=True)

# 创建SQL数据库链,结合了语言模型和数据库,用于处理基于数据库的查询
db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)

# 使用数据库链运行查询,此处查询“有多少员工?”
db_chain.run("How many employees are there?")

运行结果如下:

╭─zgpeace@zgpeaces-MBP  ~/Workspace/LLM/langchain-llm-app/sql ‹node-›  ‹› (develop*) 
╰─$ python chain_sql.py


> Entering new SQLDatabaseChain chain...
How many employees are there?
SQLQuery:SELECT COUNT(*) FROM "Employee";
SQLResult: [(8,)]
Answer:There are 8 employees.
> Finished chain.

代码

https://github.com/zgpeace/pets-name-langchain/tree/develop

参考

https://python.langchain.com/docs/use_cases/qa_structured/sql

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/242163.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多模态AI:技术深掘与应用实景解析

多模态AI:技术深掘与应用实景解析 在当今人工智能技术的快速发展中,多模态AI凭借其独特的数据处理能力,成为了科技创新的前沿。这项技术结合了视觉、听觉、文本等多种感知模式,开辟了人工智能处理和理解复杂信息的新纪元。本文旨…

NOIP2017提高组day2 - T2:宝藏

题目链接 [NOIP2017 提高组] 宝藏 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n n n 个深埋在地下的宝藏屋, 也给出了这 n n n 个宝藏屋之间可供开发的 m m m 条道路和它们的长度。 小明决心亲自前往挖掘所有宝藏屋中的宝藏。但…

HarmonyOS开发入门HelloWorld及工具安装

下载与安装DevEco Studio 在HarmonyOS应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio下载官网,单击“立即下载”进入下载页面。 DevEco Studio提供了Windows版本和…

DeCap DECODING CLIP LATENTS FOR ZERO-SHOT CAPTIONING VIA TEXT-ONLY TRAINING

DeCap: DECODING CLIP LATENTS FOR ZERO-SHOT CAPTIONING VIA TEXT-ONLY TRAINING 论文:https://arxiv.org/abs/2303.03032 代码:https://github.com/dhg-wei/DeCap OpenReview:https://openreview.net/forum?idLt8bMlhiwx2 TL; DR&#xff…

新版Spring Security6.2案例 - Basic HTTP Authentication

前言: 书接上文,翻译官网Authentication的Username/Password这页,接下来继续翻译basic的这页,因为官网说的都是原理性的,这边一个小案例关于basic http authentication。 Basic Authentication 本节介绍 HTTP 基本身…

项目总结-自主HTTP实现

终于是写完了,花费了2周时间,一点一点看,还没有扩展,但是基本功能是已经实现了。利用的是Tcp为网络链接,在其上面又写了http的壳。没有使用epoll,多路转接难度比较高,以后有机会再写&#xff0c…

【程序人生】还记得当初自己为什么选择计算机?

✏️ 初识计算机: 还记得人生中第一次接触计算机编程是在高中,第一门编程语言是Python(很可惜由于条件限制的原因,当时没能坚持学下去......现在想来有点后悔,没能坚持,唉......)。但是&#xf…

快速上手linux | 一文秒懂Linux各种常用目录命令(上)

🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 一 、命令提示符和命令的基本格式1.1 如何查看主机名称及修改 二、命令基本格式2.1 命令格式示例2.2 参数的作用…

电商类app如何进行软件测试?有必要进行第三方软件测试吗?

电商类app在开发过程中,软件测试是一个非常重要的环节。通过软件测试,可以确保app在发布和使用过程中的稳定性和安全性。那么,电商类app究竟如何进行软件测试?是否有必要进行第三方软件测试? 一、电商类app如何进行软件测试?   1. 内部…

【Linux】多线程编程

目录 1. 线程基础知识 2. 线程创建 3. 线程ID(TID) 4. 线程终止 5. 线程取消 6. 线程等待 7. 线程分离 8. 线程互斥 8.1 初始化互斥量 8.2 销毁互斥量 8.3 互斥量加锁和解锁 9. 可重入和线程安全 10. 线程同步之条件变量 10.1 初始化条件变…

Collecting Application Engine Performance Data 收集应用程序引擎性能数据

You can collect performance data of any specific SQL action of an Application Engine program to address any performance issue. 您可以收集应用程序引擎程序的任何特定SQL操作的性能数据,以解决任何性能问题。 You can collect performance data of the S…

IDEA中工具条中的debug按钮不能用了显示灰色

IDEA中工具条中的debug按钮不能用了显示灰色 1. 问题描述 IDEA上的DEBUG按钮突然变成了灰色: 2. 解决办法 一通搜索,终于找到解决办法 点击 File -> Project Structure如下图操作 3. 重启,解决 4. 参考 https://www.cnblogs.com…

【代码随想录】刷题笔记Day35

前言 日常学习,抵触心理5%;毫无指示的干活,抵触心理95% 122. 买卖股票的最佳时机 II - 力扣(LeetCode) 把整体利润拆分为每次利润,只要积上涨的就可以,so easy class Solution { public:int …

C++共享和保护——(2)生存期

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 生命如同寓言,其价值不在于…

lv12 uboot概述即SD卡制作

1 开发板启动过程 BL0环境初始化一下 查看拨码开关 BL0把SD卡里的内容复制到内存里面运行,因为直接在SD(uboot)里是无法运行的,属于外设。 uboot开始运行,初始化软硬件环境 把外存里的rootf、dtb、linux搬到内存&a…

xtu oj 1194 Recipient

题目描述 快递小哥每天都辛苦的送快递,今天他需要送N份快递给N个收件人,第i份快递需要送给第i个收件人。 请问其中发生恰好K个送错了的情况数是多少? 输入 存在多样例。 每行输入两个整数N和K,1≤N≤1000,0≤K≤N。 如果两个都…

SQL必会的常用函数

目录 条件函数 if IF(条件表达式,值1,值2) 如果条件表达式为True,返回值1,为False,返回值2. 返回值可以是任何值,比如:数值,文本,日期,空值,NULL,数学表达式&#xff…

Github入门

简介 github是一个基于git的代码仓库,可以通过git来上传和下载代码。国内类似的有gitee。 开源项目一般会申明开源协议。我们可以基于可商用的代码开发我们自己的项目,以期进行快速开发。 一般情况下gitee上的项目基本都够我们使用了。 git基础 Git…

Java笔记草稿——已完成

导航: 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客 推荐学习视频: 黑马程序员全套Java教程_哔哩哔哩 尚硅谷Java入门视频教程_哔哩哔哩 目录 零…

SOLIDWORKS CSWE认证考试报名

​ SOLIDWORKS CSWE是高级别的SOLIDWORKS认证,是一项充满挑战性的艰巨任务。CSWE测试不是简单注册就可以的,是要有一定资格才能参加考试,您首先需要获得CSWP证书,然后还得通过5个CSWPA系列主题考试中的至少4个主题(钣金…