LangChain 实战案例:老喻干货店的 TextToSql 应用解析

news2024/11/15 11:29:47

前言

当我们在做项目开发时,数据库设计是项目早期的核心工作之一。我们要考虑业务需要用到的表、关联、索引,并预想出未来核心需求或易产生瓶颈的SQL。当这些事情做完,就可以喝杯咖啡,到前台摸鱼会儿了…

如果你是刚入门数据库学习,也许掌握并熟练使用结构化查询语言SQL有些难度。然而在AIGC时代,我们拥有了一个全新的编程范式, NLP和大模型作为编程助理,让我们可以快介入复杂数据库业务。我们只需要设计好相应的Prompt,LLM就能理解,并给出SQL,让我们去执行。现在在github 上有挺多的TextToSQL的AIGC项目,大家去看看。

对于现在入门学编程的同学来说,AIGC是提升学习力的好工具。在学习每一项编程技能时,我们都可以去想想,去找找,AIGC优化学习路线或工作思路的方法。

AIGC 新的数据库查询范式

image.png

上图将是本文的核心,是AIGC重构传统数据库查询业务的流程图。

首先,数据库查询业务的开始端回归文本表达,这得益于LLM的自然语言处理能力。这非常重要,随着大模型能力的提升和Agent的产品力,未来与数据库交互,甚至管理,会由销售、经理等非技术人员来做,极大降低了门槛,AIGC也是通过这种方式进入一切行业。接着,LLM在理解了Question的数据需求后,生成SQL, 并通过LangChain等开发的SQL Agent交给数据库执行,执行结果再由LLM进行处理(比如output格式),最后,用户得到了结果。这就是现在非常流行的Agent概念,这里是SQL Agent,重构原来比较专业,复杂的数据库流程。

  • SQL Agent

AI应用的开发,就是把之前的业务转成AI Agent来实现。简单非常多,将LLM能力发挥好。使用SQL Agent, 用户既不需要知道数据库的结构,也不需要会写SQL。我们只需要talk with 我们的SQL Agent, 就可以得到所需的结果。

创建数据表

假设我们想做一个老喻干货的项目。我们选用SQLite,因为它是轻量级的磁盘文件数据库,没有复杂的服务器布署,非常适合初创项目使用。虽然SQLite是轻量级的,但它支持大部分SQL特性,如事务、触发器和视图等。因此,它非常适合我们需要保存数据但不需要大型数据库系统的移动应用或Web应用。

Python内置了sqlite3模块,可以直接使用。

# 导入sqlite3库, python 内置
import sqlite3

# 连接到数据库
conn = sqlite3.connect('DryGood.db')
cursor = conn.cursor()

# 执行SQL命令来创建Flowers表
cursor.execute('''
        CREATE TABLE DryGoods (
            ID INTEGER PRIMARY KEY, 
            Name TEXT NOT NULL, 
            Type TEXT NOT NULL, 
            Source TEXT NOT NULL, 
            PurchasePrice REAL, 
            SalePrice REAL
        );
    ''')

# 插入5种干货的数据
dry_goods = [
    ('海带', 'DryFood', '辽宁', 5.2, 8.9),
    ('香菇', 'DryFood', '广东', 26.5, 33.2),
    ('木耳', 'DryFood', '山东', 34.6, 44.2)
]

for item in dry_goods:
    cursor.execute('''
        INSERT INTO DryGoods (Name, Type, Source, PurchasePrice, SalePrice) 
        VALUES (?, ?, ?, ?, ?);
    ''', item)

# 提交更改
conn.commit()

# 关闭数据库连接
conn.close()

image.png

首先,我们连接到数据库DryGood,接着创建了一个数据表,DryGoods, 包启ID、类型、产地、进价、货价等字段,还可以有其它的, 此处省略。接着准备了一些初始化数据,循环插入数据表。完成后,关闭数据库的连接。

LangChain来接管数据库

LangChain数据库查询功能还处于实验阶段,我们需要安装langchain-experimental,相应代码:

pip install langchain-experimental

好,神奇的一刻要开始了,LangChain为我们准备了SQLDatabaseChain来完成该工作。

# SQLDatabase可以让我们连接数据库
from langchain.utilities import SQLDatabase
# 使用OpenAI大模型
from langchain.llms import OpenAI
# SQLDatabaseChain chain 任务
from langchain_experimental.sql import SQLDatabaseChain

# 连接到DryGood数据库
db = SQLDatabase.from_uri("sqlite:///DryGood.db")

# 创建llm 实例
llm = OpenAI(temperature=0, verbose=True)

# 创建SQLChain实例,目前还在实验阶段
db_chain = SQLDatabaseChain.from_llm(llm, db, api_key='' verbose=True)

# 运行与干货运营相关的问题
response = db_chain.run("有多少种不同的干货?")
print(response)

response = db_chain.run("平均销售价格是多少?")
print(response)


db_chain.run() 查询了一些与干货运营相关的问题,Chain会将这些自然语言转换成SQL语句,并查询数据库,拿到查询结果后,又转换成自然语言输出。下图看输出即可理解。

image.png

上Agent

除了通过SQLDatabaseChain完成数据库LLM查询,LangChain还提供了SQL Agent也能完成。在早期,我是这样理解的,LangChain里的Chain是将某种具体任务和LLm结合的工作方式,当某些工作成为一个产品或业务场景使用比较频繁时,LangChain就会推出相应的Agent,来展现魔法。

相比较Chain, SQL Agent 有更强大的能力,比如它肯有更强的纠错能力,数据库操作出错时,它会重新生成并执行新的查询。

from langchain.utilities import SQLDatabase
from langchain.llms import OpenAI
# sql agent 
from langchain.agents import create_sql_agent
# 工具包,可以创建并执行查询 检索语法  等
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.agents.agent_types import AgentType

# 连接到FlowerShop数据库
db = SQLDatabase.from_uri("sqlite:///DryGood.db")
llm = OpenAI(temperature=0, verbose=True, openai_sdk='')

# 创建SQL Agent
agent_executor = create_sql_agent(
    llm=llm,
    toolkit=SQLDatabaseToolkit(db=db, llm=llm),
    verbose=True,
    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
)

# 使用Agent执行SQL查询

questions = [
    "有多少种干货?",
    "平均销售价格是多少?",
]

for question in questions:
    response = agent_executor.run(question)
    print(response)

image.png

输出以agent的感觉来了,让我想起来了AutoGen。

总结

  • LangChain通过SQLDatabaseChain,调用大模型,神奇地完成了从自然语言查询任务描述到自然语言的新型SQL查询范式。
  • LangChain Agent 实力强大, textToSQL, 可以开启这个场景的深度学习了。

在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

出海笔记精华问答 | 第四期

更新出海问答第四期,希望可以继续帮助大家解决问题哈。 Q1:当stripe把资金全退给客户但是货又发了,这是什么情况? A1: 这种情况一般是stripe不跟你合作了或者发生了争议。 Q2:如何知道stripe回复你的邮件是人工回复还是机器人回复&#xff…

Matlab自学笔记三十三:表table类型数据的创建、索引和自身属性的用法

1.表类型的概念 表(table)具有容器特性的数据类型,可以方便的存储混合类型的数据,可以使用数字或命名索引访问数据以及元数据(例如变量名称,行名称,描述和变量单位等); …

Java版自动化测试之Selenium

1. 准备 编程语言:Java JDK版本:17 Maven版本:3.6.1 2. 开始 声明:本次只测试Java的Selenium自动化功能 本次示例过程:打开谷歌游览器,进入目标网址,找到网页的输入框元素,输入指…

基于Java+SpringBoot+Vue的网上租赁系统设计与实现

基于JavaSpringBootVue的网上租赁系统设计与实现 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式&#x1…

2024硅谷微软和OPENAI的CTO对人工智能发展的最新预测

2024硅谷微软和OPENAI的CTO对人工智能发展的最新预测 微软首席技术官凯文斯科特 在红杉资本(Sequoia Capital)发布的《Training Data》播客中,微软首席技术官凯文斯科特(Kevin Scott)坚定地重申了他对大语言模型&…

从文字到多媒体:GPT如何彻底革新内容创作

近年来,OpenAI开发的GPT(生成预训练变换器)模型在自然语言处理领域引起了广泛关注,尤其是GPT-3的推出,更是掀起了一场技术革新浪潮。然而,GPT模型不仅限于自然语言处理,其多模态应用前景同样令人…

AI大模型领域入门:AI产品经理必备知识指南

随着大模型技术的快速发展,市面上涌现出了大量的大模型产品岗位,那么想要进入AI行业的产品经理同学,需要提前做好哪些准备工作呢?这篇文章里,作者总结了入行AI的必备知识,包括市场调研、产品底层逻辑等内容…

打工人必备工具箱

下载地址:https://pan.quark.cn/s/356d7f201d7a 图片工具 图片格式转换图片转ICO图片压缩图片批量转换图片编辑图片分割 视频工具 视频格式转换视频翻转视频提取音频视频倒放视频静音视频分辨率转换视频旋转视频拼接视频调整音量视频取帧 文档工具 PDF合并PDF提…

Kubernetes--命令行工具 kubectl

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、在任意节点使用 kubectl 1、将 master 节点中 /etc/kubernetes/admin.conf 拷贝到需要运行的服务器的 /etc/kubernetes 目录中 [rootk8s-master…

系列:水果甜度个人手持设备检测-前沿方案、论文和思路(一)

系列:水果甜度个人手持设备检测 -- 前沿方案、论文和思路(一) 背景 我们检索最新前沿领域的论文和思路,一般都不会去GitHub、专利官网这种地方,大家都是正常的人类,我们通常会想到中国知网CNKI、中国国家数字图书馆…

【刷题笔记】二叉树3

之前已经介绍过了二叉树的前中后序遍历及层序遍历,这是解决所有二叉树问题的手段。上一期也提到过,很多题既可以用前中后序遍历去做也可以用层序遍历去做。本期就介绍一下例题,分别展示两种做法。 1. 二叉树的右视图 199. 二叉树的右视图 给…

使用 preloadComponents 进行组件预加载

title: 使用 preloadComponents 进行组件预加载 date: 2024/8/18 updated: 2024/8/18 author: cmdragon excerpt: 摘要:本文介绍Nuxt 3中的preloadComponents功能,用于预加载全局注册的组件以减少首次渲染阻塞时间,通过实例演示如何设置并…

EmguCV学习笔记 C# 4.2 二值化

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 教程VB.net版本请访问:EmguCV学习笔记 VB.Net 目录-CSDN博客 教程C#版本请访问:EmguCV学习笔记 C# 目录-CSD…

WebRTC音视频开发读书笔记(五)

WebRTC既可以收发音频和视频,还可以传输其它数据,如短消息、二进制数据、文本数据等。可以实现文本聊天、文件传输等场景。 八、数据通道 1、基本概念 WebRTC的数据通道好比高速公路、文本、文件、图像以及其它数据 好比货物,通道打通 &am…

SpringBoot Web请求、响应

一、文章概述 请求方面主要讲,当前端向后端发出请求时,对于不同类型的参数后端都如何接收;对于响应,文章会讲解后端如何向前端响应数据以及如何使返回的数据具有统一的格式。 二、请求 2.1接收简单参数 Controller方法&#xf…

sqlserver的openquery配置

1.命令Demo ---openquery--开启Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句exec sp_configure show advanced options,1reconfigureexec sp_configure Ad Hoc Distributed Queries,1reconfigure--关闭Ad Hoc Distributed Queries组件&#xff0…

10、stm32实现adc读取数据

一、配置 二、代码 /* USER CODE BEGIN 2 */OLED_Init();OLED_Clear();OLED_ShowString(0,0,"Hello adc",12,0);uint16_t adc_number 0;/* USER CODE END 2 *//* USER CODE BEGIN WHILE */while (1){HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1…

2分钟搭建一个简单的WebSocket服务器

你好同学,我是沐爸,欢迎点赞、收藏和关注。个人知乎 如何用2分钟在本地搭建一个简单的 WebSocket 服务器?其实使用 Node.js,加上一些流行的库,是很容易实现的。前端同学通过自己搭建 WebSocket 服务器,对于…

PyTorch深度学习快速入门教程--学习笔记

目录 P4 PyCharm和Jupyter的对比 P5 PyTorch加载数据 P6 Dataset类代码实现 P7 Tensorboard 写日志 读取日志文件 Tensorboard 读图片 P10 Transforms使用 Transforms用途 常见的Transforms工具 P14 torchvision数据集使用 P15 Dataloader使用 P16 nn.Module模块使…

政务大数据解决方案(三)

政务大数据解决方案致力于通过整合来自不同部门和领域的海量数据,采用先进的数据分析技术与人工智能算法,建立一个全面、高效的数据管理平台,从而优化政府决策过程,提高政策制定的科学性与精准性。该方案涵盖数据采集、存储、处理…