使用Langchain构建简单的数据库Agent

news2025/1/11 23:41:10

这篇文章我们介绍一个使用LangChain实现SQLagent的方法,LangChain直接内置了自己的SQLagent实现-—SQLDatabaseChain。这个方法使用 SQL Alchemy 与数据库交互。感兴趣的可以考虑一下这两个方案是否可以融合,这样保证SQL的准确性从而提升最终结果的准确率。下面将介绍今天主要内容的实现步骤:

实现步骤

首先,我们得有一个数据库。这里我们用的是ClickHouse,一个开源的、面向列的SQL数据库管理系统,特别适合大数据分析。安装起来超级简单,一行命令就搞定。

接下来,我们得让Agent学会和ClickHouse交流。这里就需要用到clickhouse-sqlalchemy这个包了。安装它之后,我们就可以建立数据库连接,然后初始化我们的Toolkit。这个Toolkit就像是我们的Agent的工具箱,里面装满了有用的工具。

现在,让我们来创建一个SQLDatabaseChain的Agent。这个Agent可以直接和数据库交互,回答问题。我们只需要定义一些工具,比如查询表结构、执行SQL查询等。然后,我们就可以快速创建并运行这个Agent了。

环境搭建

今天用到的主要安装包如下,其它可以根据提示安装:

# 安装 clickhouse-sqlalchemy 包来连接 ClickHouse``pip install clickhouse-sqlalchemy langchain

运行代码

代码大概是这样的:

from langchain.agents import AgentExecutor, AgentType``from langchain.sql_database_toolkit import SQLDatabaseToolkit``   ``   ``# 设置数据库连接``uri = 'clickhouse+native://localhost/ecommerce'``db = SQLDatabase.from_uri(uri)``   ``   ``# 初始化工具箱``toolkit = SQLDatabaseToolkit(db=db, llm=OpenAI(temperature=0))``   ``   ``# 创建并运行基于 OpenAI 函数的 Agent``agent_executor = create_sql_agent(`    `llm=ChatOpenAI(temperature=0.1, model='gpt-4-1106-preview'),`    `toolkit=toolkit,`    `verbose=True,`    `agent_type=AgentType.OPENAI_FUNCTIONS``)``# 运行 Agent,回答数据相关问题``agent_executor.run("我们有多少来自上海的活跃客户?")

运行这段代码后,Agent就会根据我们的问题去数据库里找到答案,然后告诉我们。比如,它会告诉我们有多少来自上海的活跃客户。这个Agent的好处在于,它可以直接理解我们的问题,然后去数据库里找到答案。我们不需要自己写SQL查询,也不需要担心查询的语法问题。Agent会帮我们搞定一切。

那么,如何系统的去学习大模型LLM?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
在这里插入图片描述

篇幅有限,部分资料如下:
👉LLM大模型学习指南+路线汇总👈

💥大模型入门要点,扫盲必看!
在这里插入图片描述
💥既然要系统的学习大模型,那么学习路线是必不可少的,这份路线能帮助你快速梳理知识,形成自己的体系。
在这里插入图片描述

👉大模型入门实战训练👈

💥光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉国内企业大模型落地应用案例👈

💥《中国大模型落地应用案例集》 收录了52个优秀的大模型落地应用案例,这些案例覆盖了金融、医疗、教育、交通、制造等众多领域,无论是对于大模型技术的研究者,还是对于希望了解大模型技术在实际业务中如何应用的业内人士,都具有很高的参考价值。 (文末领取)
在这里插入图片描述
💥《2024大模型行业应用十大典范案例集》 汇集了文化、医药、IT、钢铁、航空、企业服务等行业在大模型应用领域的典范案例。

在这里插入图片描述

👉LLM大模型学习视频👈

💥观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 (文末领取)
在这里插入图片描述

👉640份大模型行业报告👈

💥包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

👉获取方式:
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓
在这里插入图片描述

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

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

相关文章

修改依赖库

修改依赖库 在开发时,当我们发现使用的依赖库有 bug,需要修改,一般都有这几种处理方式: fork 源码,修复 bug 然后提交 pr,等待作者合并,发布新版本提 issue 等待作者修复(跟方式1类…

从物理学到电气工程:如何自学PLC进入工厂担任助理工程师?

本科物理专业自学 PLC 方向,有机会进厂担任助理电气工程师,但可能会面临一些挑战。在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「PLC的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“…

reactive函数

承上启下 在上一节 ref() 函数中,我们大致理解了 ref() 函数的作用是用来将数据转化为响应式的。但是对于基本类型和引用类型,Vue3底层做的转换不一致:对于基本类型,Vue3 通过 ref() 函数将变量转化为了 RefImpl引用对象从而实现响…

NVIDIA把Llama-3的上下文长度扩展16倍,长上下文理解能力超越GPT-4

在 Llama-3.1 模型发布之前,开源模型与闭源模型的性能之间一直存在较大的差距,尤其是在长上下文理解能力上。 大模型的上下文处理能力是指模型能够处理的输入和输出 Tokens 的总数。这个长度有一个限制,超过这个限制的内容会被模型忽略。一般…

Power功效分析之均值差原理及案例实操分析

Power功效分析常用于实验研究时样本量的计算(或功效值计算),实验研究中均值差的使用较多,具体包括单样本t检验、独立样本t检验、配对t检验、单样本z检验、Mann-whitey检验和配对符号秩和检验等,具体如下表格所述&#…

最新版的,SpringBoot整合Sharding-Jdbc实现读写分离

Sharding-Jdbc实现读写分离 Hello,兄弟们好,我是Feri,最近整理了最新的基于Seata-Server2.0实现分布式事务的demo,希望对你有所帮助,有任何问题,可以随时沟通交流,在成为技术大牛的路上&#xf…

校园点餐系统

1 项目介绍 1.1 摘要 在这个被海量信息淹没的数字化时代,互联网技术以惊人的速度迭代,信息的触角无处不在,社会的脉动随之加速。每一天,我们都被汹涌而至的数据浪潮包裹,生活在一个全方位的数字信息矩阵中。互联网的…

vue3解析markdown文件为html并且高亮显示代码块

前言: 很多时候我们程序员写的文档都是以markdown为主,但是我们每次找相关资料极为不便,如果能直接把markdown文档引进vue项目里,解析成html并且展示出来,然后部署在服务器上,查看是不是极为方便呢。&…

3D打印随形透气钢:模具困气终结者

困气是模具经常遇到的问题,是制约生产效率与产品质量的关键因素之一。传统透气钢材料虽有所助益,但其在加工复杂度、形状适应性及性能均衡性上的局限性明显。在此背景下,3D打印技术的革新性应用——随形透气钢应运而生,为困气、排…

view 和 reshape的区别 及 测试对一个数据执行view 和 reshape之后得到的数据还一样吗

一、测试对一个数据执行view 和 reshape之后得到的数据还一样吗 问题: x torch.randn(2, 3, 4) y_view x.view(12, 2) y_reshape y_view.reshape(2,3, 4)得到的结果一样吗 import torch# 创建一个张量 x torch.randn(2, 3, 4)# 使用 …

Datawhale夏令营AI for Science(AI+气象)学习笔记1

如何针对降水预测问题搭建模型 回顾baseline, 我们可以大致将搭建模型并解决问题分为以下几个步骤: 定义数据集, 建立起训练数据和标签之间的关系;定义数据加载器(DataLoader), 方便取数据进行训练 定义模型, 利用PyTorch搭建网络,根据输入…

关于DynamoRIO处理多线程程序时候的问题

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

【天机学堂】面试总结

写在前面,首先要将天机学堂包装一下,智慧教育平台》,暂时就想到这个。天机学堂文档 1.包装简历 待更新。。。

持续集成09--Jenkins配置Sonar代码漏洞扫描工具

专栏内容 持续集成01--Git版本管理及基础应用实践_持续集成下的git分支-CSDN博客 持续集成02--Linux环境更新/安装Java新版本-CSDN博客 持续集成03--Jenkins的安装与配置-CSDN博客 持续集成04--Jenkins结合Gitee创建项目_jenkins集成gitee-CSDN博客 持续集成05--Gogs的安装与使…

Ubuntu运行深度学习代码,代码随机epoch中断没有任何报错

深度学习运行代码直接中断 文章目录 深度学习运行代码直接中断问题描述设备信息问题补充解决思路问题发现及正确解决思路新问题出现最终问题:ubuntu系统,4090显卡安装英伟达驱动535.x外的驱动会导致开机无法进入桌面问题记录 问题描述 运行深度学习代码…

MySQL--表完整性约束

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 作用:用于保证数据的完整性和一致性 约束条件说明PRIMARY KEY (PK)该字段为该表的主键,可以唯一的标识记录,不可以…

【Python 逆向滑块】(实战三)逆向滑块,并实现用Python+Node.js 生成滑块、识别滑块、验证滑块、发送短信

逆向日期:2024.08.01 使用工具:Node.js 本章知识:逆向网易易盾【cb】参数 文章难度:中等(没耐心的请离开) 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理…

乐鑫ESP32-S3语音唤醒和命令词识别,XIAO ESP32 S3 Sense开发套件应用

在这个数字化飞速发展的时代,小型化、智能化已成为技术发展的趋势。ESP32-S3芯片在物联网和嵌入式机器学习领域的应用潜力,让我们对智能设备的未来充满了无限遐想。 OpenGlass项目中的Seeed Studio XIAO ESP32 S3 Sense开发套件,以其小巧的体…

【kali靶机之serial】--反序列化漏洞实操

kali靶机配置 【我图片里没有截图的默认配置即可】需要改的地方图片里面都有。 使用kali扫描网关的主机。 扫到一个开放了80端口HTTP协议的主机ip 访问80端口 会看到一个文本页面,翻译一下看是什么意思。。 F12查看cookie,是一个base64编码了的东西 使…