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

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

相关文章:

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

LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…...

Redis生产实战-热key、大key解决方案、数据库与缓存最终一致性解决方案

生产环境中热 key 处理 热 key 问题就是某一瞬间可能某条内容特别火爆,大量的请求去访问这个数据,那么这样的 key 就是热 key,往往这样的 key 也是存储在了一个 redis 节点中,对该节点压力很大 那么对于热 key 的处理就是通过热…...

可惜+悲伤+唉=emmo...

拟合曲线: 参考论文:黄河清.NURBS曲面逆向造型关键算法的研究与应用 [D].西北工业大学,2004 三次NURBS曲线控制点的计算 首先给出拟合曲线的具体步骤: 1、节点矢量的求解方法为: 采用积累弦长参数化法,即&#xff1…...

[gRPC实现go调用go]

1什么是RPC RPC:Remote Procedure Call,远程过程调用。简单来说就是两个进程之间的数据交互。正常服务端的接口服务是提供给用户端(在Web开发中就是浏览器)或者自身调用的,也就是本地过程调用。和本地过程调用相对的就是:假如两个…...

uniapp使用v-html调用接口,富文本图片 视频自适应大小

前端获取到后台数据 不做处理 就会出现下面问题 图片 视频超出视图显示不全 处理 //info 是富文本 <view v-ifinfo v-htmlreplaceWhite(info)></view>调用下面方法 replaceWhite(html) { // 处理富文本默认图片&#xff0c;视频大小let newContent html.replace…...

安卓MediaRecorder(2)录制源码分析

文章目录 前言JAVA new MediaRecorder() 源码分析android_media_MediaRecorder.cpp native_init()MediaRecorder.java postEventFromNativeandroid_media_MediaRecorder.cpp native_setup() MediaRecorder 参数设置MediaRecorder.prepare 分析MediaRecorder.start 分析MediaRec…...

MySql数据库全量备份脚本

#!/bin/bash# 设置数据库连接信息 DB_HOST"localhost" DB_USER"root" DB_PASS"密码" DB_NAMES("db1" "db2" "db3" "db4")# 设置备份目录 BACKUP_DIR"/home/mysql/mysql-back/everyday" # 每天…...

windows10下jdk安装

文章目录 windows10下jdk安装说明what安装包下载执行安装包验证是否安装成功 windows10下jdk安装 说明 操作系统&#xff1a;windows10 版本&#xff1a;1.8 what JDK(Java Development Kit) 是 Java 语言的软件开发工具包 安装包下载 https://www.oracle.com/java/techn…...

Centos7防火墙及端口开启

1、防火墙 1.1、查看防火墙是否开启 systemctl status firewalld 1.2、开启防火墙 firewall-cmd --list-ports 1.3、重启防火墙 firewall-cmd --reload 2、端口 2.1、查看所有已开启的端口号 firewall-cmd --list-ports 2.2、手动开启端口 启动防火墙后&#xff0c;默认没有开…...

vue开发,axios网络请求框架基本用法和封装

axios安装 npm install axiosaxios基本用法 默认的get请求&#xff0c;参数用params追加&#xff0c;多个参数通过json对象的方式&#xff0c;例如params:‘{type:“home”,page:1}’ axios({url: https://api.videolog.net.cn/baidu/token,params: }).then(value > {co…...

对比SPI、UART、I2C通信的区别与应用

SPI、UART、I2C通信是常用的数字通信协议&#xff0c;它们在不同的场景下有不同的应用。下面&#xff0c;我将分别介绍它们的特点、区别与应用。 SPI通信 SPI通信是一种串行同步通信协议&#xff0c;它的全称为“Serial Peripheral Interface”。SPI通信是一种单主多从的通信方…...

CentOS7安装MySQL8.0

一、使用Yum安装 1. 使用wget下载MySQL的rpm包 wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm2. 安装下载好的rpm包 yum localinstall mysql80-community-release-el7-3.noarch.rpm 3. 安装mysql&#xff08;该步可能出现问题&#xff09; yum…...

【Go<—>Java】gRPC测试注意事项

在做go和Java之间gRPC调用之前需要完成以下两项工作&#xff1a; go语言版本的gRPC调用&#xff0c;实现server端和client端Java语言版本的gRPC调用&#xff0c;实现server端和client端 由于gRPC是跨语言的通信协议&#xff0c;所以我们可以相互调用&#xff0c;有以下2种调用…...

java面试题整合

1.Java数据类型 ✅ Java是一种静态类型语言&#xff0c;它具有丰富的数据类型用于声明变量和方法返回类型。Java中的数据类型分为两类&#xff1a;原始数据类型&#xff08;Primitive Data Types&#xff09;和引用数据类型&#xff08;Reference Data Types&#xff09;。 原…...

2023年12月7日:QT实现登陆界面

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口设置this->resize(600,500);//重新设置窗口大小this->setWindowTitle("QQ-盗版");//设置窗口名为QQ-盗版this->setWindowIcon(QIcon("D:\\Qt\\funny\\pi…...

常用的测试用例大全

登录、添加、删除、查询模块是我们经常遇到的&#xff0c;这些模块的测试点该如何考虑 1)登录 ① 用户名和密码都符合要求(格式上的要求) ② 用户名和密码都不符合要求(格式上的要求) ③ 用户名符合要求&#xff0c;密码不符合要求(格式上的要求) ④ 密码符合要求&#xf…...

《python每天一小段》--12 数据可视化《1》

欢迎阅读《Python每天一小段》系列&#xff01;在本篇中&#xff0c;将使用Python Matplotlib实现数据可视化的简单图形。 文章目录 一、概念&#xff08;1&#xff09;安装matplotlib&#xff08;2&#xff09;数据可视化实现步骤 二、绘制简单的折线图&#xff08;1&#xff…...

分类预测 | Matlab实现HPO-GRU【23年新算法】基于猎食者优化算法优化门控循环单元的数据分类预测

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】 目录 分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.HPO-GRU【23年新算法】基于猎食者优化算法优…...

【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式

pytorch 官方文档 Tensor基础&#xff0c;数据类型&#xff0c;及其多种创建方式 1. 创建 Creating Tensor&#xff1a; 标量、向量、矩阵、tensor2. 三种方法可以创建张量&#xff0c;一是通过列表(list)&#xff0c;二是通过元组(tuple)&#xff0c;三是通过Numpy的数组(arra…...

实验7:索引和视图定义

【实验目的】 1、了解索引和视图的含义 2、熟悉索引和视图的创建规则 3、掌握索引和视图的创建和管理 【实验设备及器材】 1、硬件&#xff1a;PC机&#xff1b; 2、软件&#xff1a;(1)Windows7; (2)Microsoft SQL Server 2012。 【主要内容】 索引的创建、删除、重建…...

NotebookLM赋能电影学研究(2024年唯一经实证验证的学术工作流)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;NotebookLM赋能电影学研究&#xff08;2024年唯一经实证验证的学术工作流&#xff09; NotebookLM 是 Google 推出的基于用户上传文档进行语义理解与推理的 AI 助手&#xff0c;其“引用溯源”与“片段锚定”…...

处理智能体的不确定性:重试、回退与人工介入

一个让AI“不任性”的实战手册——该认错时认错&#xff0c;该求助时求助先讲一个让我至今心有余悸的事。 去年做的一个金融Agent&#xff0c;任务是每天自动从十几家券商网站抓取研报&#xff0c;提取关键的投资评级和目标价&#xff0c;然后汇总成一张表发给基金经理。上线跑…...

NotebookLM摘要质量断崖式下滑?揭秘92%用户忽略的3个语义锚点校准技巧

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM摘要质量断崖式下滑的真相溯源 近期大量用户反馈 NotebookLM 生成的摘要出现关键信息遗漏、逻辑断裂与事实扭曲等现象&#xff0c;部分案例中摘要准确率较 2023 年底下降超 40%。这一退化并非…...

基础知识丨JAVA序列化与反序列化漏洞

今天在学习的时候又接触到了JAVA反序列化漏洞。一直只知道JAVA反序列化就是利用反序列化工具进行攻击&#xff0c;在目标系统中执行命令&#xff0c;利用的就是传输对象时采用JAVA序列化。但是也只知道这么多了。所以&#xff0c;就想着今天再了解一下反序列化漏洞。顺便&#…...

宽带卫星通信系统同步与大规模阵列波束成形技术【附程序】

✨ 长期致力于符号定时恢复、频率估计、可变分数延迟滤波器、时延估计、真时延阵列研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;基于迭代短卷积的多…...

数据投毒太多,尝试把资料搬进本地知识库

说实话&#xff0c;这几天没睡好。上周翻到一个新闻&#xff0c;看得我后背发凉——谷歌首次发现攻击者用AI开发“零日漏洞”攻击工具。不是概念验证&#xff0c;是真实案例。攻击者拿AI绕过双重认证&#xff0c;代码写得跟教科书似的&#xff0c;还带“幻觉”出来的CVSS评分。…...

独立开发者如何利用 Taotoken 模型广场低成本试错选型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何利用 Taotoken 模型广场低成本试错选型 对于资源有限的独立开发者或小型团队而言&#xff0c;在产品开发初期选择合…...

别再手动写上传了!用Layui Upload组件+PHP后端,10分钟搞定带进度条的文件上传功能

10分钟极速集成&#xff1a;Layui UploadPHP打造高体验文件上传模块 每次看到项目里又需要实现文件上传功能时&#xff0c;你是不是已经开始头疼那些重复的代码和调试过程&#xff1f;从进度条显示到文件类型校验&#xff0c;再到后端安全处理&#xff0c;每个环节都可能藏着意…...

Elk内存管理深度解析:如何在100字节RAM上运行JavaScript

Elk内存管理深度解析&#xff1a;如何在100字节RAM上运行JavaScript 【免费下载链接】elk A low footprint JavaScript engine for embedded systems 项目地址: https://gitcode.com/gh_mirrors/elk/elk Elk是一个为嵌入式系统设计的超轻量级JavaScript引擎&#xff0c;…...

利用coze使用无代码平台搭建图片识别机器人

利用coze使用无代码平台搭建图片识别机器人 无代码平台允许用户通过可视化界面快速创建聊天机器人&#xff0c;无需编程基础。例如&#xff0c;扣子&#xff08;Coze&#xff09; 是一个由字节跳动开发的智能体应用开发平台&#xff0c;支持集成多种大语言模型&#xff08;如 …...