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

前言

当我们在做项目开发时,数据库设计是项目早期的核心工作之一。我们要考虑业务需要用到的表、关联、索引,并预想出未来核心需求或易产生瓶颈的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%免费】🆓

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值