langGraph从入门到精通(七)——基于 LangGraph 的结构化数据AI 代理自动入库实战

基于 LangGraph 的结构化数据AI 代理自动入库实战

1 导语

在企业级 AI 应用中,仅能“聊天”的 Agent 远远不够,如何将对话中的关键信息自动识别并精准持久化到业务数据库,是实现业务闭环的关键。本文将带你通过一个亲测有效的实战案例,掌握利用LangGraph的条件边(Conditional Edges)与SQLAlchemyORM 框架,构建一个能够自动识别用户信息并将其存储至 MySQL 数据库的智能代理系统。

2 技术栈清单

  • Python== 3.11.14
  • langgraph== 1.0.5
  • langchain-core== 1.2.7
  • SQLAlchemy== 2.0.x
  • PyMySQL== 1.1.x
  • MySQL== 8.0/5.7

3 项目核心原理

本项目核心在于利用 LangGraph 的StateGraph进行工作流编排。系统通过 LLM 的Structured Output(结构化输出)能力将非结构化对话转化为 Pydantic 模型对象。随后,通过Conditional Edges(条件边)进行逻辑分流:若提取到有效用户信息,则流转至数据库操作节点;否则执行普通对话回复。

4 实战步骤

4.1 环境准备

首先需要配置数据库连接信息,并安装必要的数据库驱动与 ORM 框架。

# 安装数据库连接相关依赖pipinstallsqlalchemy==2.0.31pymysql==1.1.1langgraph==1.0.5

4.2 代码实现

4.2.1 数据库模型与会话配置

使用 SQLAlchemy 定义User模型,映射至数据库中的users表。

fromsqlalchemyimportcreate_engine,Column,Integer,Stringfromsqlalchemy.ormimportdeclarative_base,sessionmaker Base=declarative_base()classUser(Base):# 定义 ORM 模型__tablename__='users'id=Column(Integer,primary_key=True)name=Column(String(50))age=Column(Integer)email=Column(String(100))phone=Column(String(15))# 数据库连接 URI (需替换为实际配置)DATABASE_URI='mysql+pymysql://user:pass@localhost:3306/db'engine=create_engine(DATABASE_URI)Session=sessionmaker(bind=engine)

4.2.2 核心节点逻辑

编写数据库插入节点,利用Session将 AI 提取的数据写入。

definsert_db(state):# 数据库存储节点session=Session()try:output=state['messages'][-1].final_output# 获取上一个节点的结构化输出user=User(name=output.name,age=output.age,email=output.email,phone=output.phone)session.add(user)# 添加记录session.commit()# 提交事务return{"messages":["数据已成功存储至数据库。"]}exceptExceptionase:session.rollback()# 异常回滚return{"messages":[f"存储失败:{e}"]}finally:session.close()# 关闭会 fancy 话
4.2.3 图编排与条件路由

通过add_conditional_edges实现根据 AI 输出类型自动选择路径。

# 构建状态图graph=StateGraph(AgentState)graph.add_node("chat_with_model",chat_with_model)graph.add_node("insert_db",insert_db)graph.add_conditional_edges("chat_with_model",generate_branch,# 路由决策函数{True:"insert_db",False:"final_answer"}# 路径映射)

4.3 功能测试

输入包含个人信息的语句,验证系统是否能够自动识别并完成入库。

query="我叫奥特曼,今年38岁,邮箱地址是aoteman@qq.com"result=graph.invoke({"messages":[HumanMessage(content=query)]})

5 核心代码解析

5.1 条件边路由逻辑解析

划重点:这是实现复杂业务逻辑的核心。

defgenerate_branch(state):output=state['messages'][-1].final_outputreturnisinstance(output,UserInfo)
  • 核心作用:作为图的“指挥官”,判断 LLM 的输出是属于用户信息还是普通聊天。
  • 为何这样实现:通过isinstance检查对象类型,实现了业务逻辑的硬编码控制与 AI 生成能力的完美解耦。

5.2 SQLAlchemy 会话管理设计

session=Session()# 确保为每次操作创建新的会话
  • 核心作用:保证数据库连接的线程安全性。
  • 关键参数Session配合try...except...finally结构,确保了即使在分布式环境下,数据库事务也能正确提交或回滚,避免连接泄露。

6 效果验证

执行后,控制台会输出echo=True的 SQL 语句,同时数据库users表中会新增对应记录。

7 踩坑记录

7.1 DATABASE_URI 格式错误

  • 错误现象NoSuchModuleError: Can't load plugin: sqlalchemy.dialects.mysql.pymysql
  • 根因分析:未安装pymysql驱动或连接串拼写错误。
  • 解决方案亲测有效的连接串格式为mysql+pymysql://user:pass@host:port/db?charset=utf8mb4

7.2 Session 提交后未关闭

  • 错误现象:数据库连接池溢出,后续检测任务挂起。
  • 根因分析:在节点函数中打开了 Session 但未在finally中关闭。
  • 解决方案:严格执行“打开-使用-关闭”的生命周期管理。

7.3 Structured Output 类型判断失效

  • 错误现象:总是跳转到final_answer节点。
  • 根因分析:模型输出的 Pydantic 对象与generate_branch中判断的类型不一致。
  • 解决方案:检查with_structured_output绑定的类定义,确保路由函数识别准确。

8 总结与扩展

本文通过LangGraph + SQLAlchemy实现了从语义理解到持久化存储的全自动化。核心收获在于理解了如何通过条件边来管理 Agent 的执行路径。未来我们可以进一步扩展,在insert_db节点之前加入人工确认节点(Human-in-the-loop),确保入库数据的 100% 准确。

欢迎评论区留言讨论核心主题相关的问题~

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

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

相关文章

AI性能测试工具的认知盲区与误判机制解析

一、症结案例:典型误判场景还原 graph LR A[AI报告“系统吞吐量达标”] --> B[线上爆发数据库死锁] C[工具显示响应时间正常] --> D[用户投诉支付卡顿] E[压力测试通过] --> F[秒杀场景库存超卖] 某金融系统使用AI测试工具执行万级并发测试,工…

使用C#代码从工作簿中删除工作表

精简 Excel 工作簿、删除多余或不再使用的工作表,是一种非常有效的整理方式。通过移除无关内容,可以减少冗余信息,使文件结构更加清晰,只保留最有价值的数据。删除不必要的工作表不仅有助于释放存储空间,还能让工作簿的…

esp32,使用esp-idf链接mqtt服务器,消息接收

本次连接使用的是mqtt的官方公共服务器,前提是要先链接wifi注意:1.mqtt服务器发给esp32的消息,中间没有/0,使用“%s”这种格式打印的数据会自动往后打印,直到遇见/0,解决方法是ESP_LOGI(TAG_MQTT,"topic->%.*s",mqtt…

‌古文明密码测试:用AI破译玛雅历法的漏洞‌

当测试思维遇见千年碑文 在帕伦克遗址斑驳的石碑前,AI算法正在执行一场跨越两千年的特殊测试任务。玛雅历法系统作为人类最早的复杂时间计算体系之一,其长计历(Long Count)模块曾因2012末日预言引发全球误读。本文将以软件测试工…

从理论到代码:Agentic AI实时响应优化的提示工程实现与调试技巧

Agentic AI实时响应优化:提示工程从理论到代码的实战指南 引言:为什么你的Agent响应总是“慢半拍”? 你有没有遇到过这样的场景: 用Agent做客服,用户问“我的订单什么时候到”,Agent磨磨蹭蹭10秒才回复&…

腾讯云的IP是原生IP吗?

腾讯云的公网IP(普通公网IP、EIP)均为运营商原生路由IP,具备真实路由属性,归属地清晰,可被正常路由与解析 。内网IP为私有网段(如10.0.0.0/8等),不属于原生公网IP范畴 。以下是核心要…

DeploySharp 全面支持 YOLO26 系列,助力开发者快速部署落地应用

DeploySharp是一个专为C#开发者设计的跨平台模型部署框架,全面支持YOLOv26系列模型,包括目标检测、实例分割、姿态估计和旋转框检测。该框架提供多引擎支持(OpenVINO/ONNX Runtime/TensorRT)、两种图像处理库选择(Im…

设备维修班的惊喜发现,CAXA三维球比扳手还好用

我们维修班日常工作中最盼望的,就是设备图纸能够清晰易懂,这样才能快速准确地判断故障、开展维修工作。以前使用二维图纸时,经常会因为视角限制看走眼,导致拆装过程中多拧坏好几个螺栓,不仅增加了维修成本,…

02.01.05.菲力尔FLIR GigE相机 环境搭建篇(CentOS9系统下 areaDetector的aravis安装配置)

本页目录 1、下载安装2、配置3、测试 基础知识:02.01.04.菲力尔FLIR GigE相机 环境搭建篇(CentOS9系统下 areaDetector安装配置) 下载安装 yum install -y ninja-build meson glib2-devel gtk-doc libxml2-devel gtk3-devel gstreamer1 …

CAXA用一年省下六万外包费

我们是一家只有三个人的小作坊,平时主要承接一些小型设计项目。接大单时最发愁的就是设计能力不足,以前没有合适的软件支持,复杂的设计项目只能外包出去,不仅成本高,而且沟通起来很麻烦,还难以保证最终效果…

工程机械制造国产 CAD技工经验数字化传承应用

作为一名拥有二十年经验的工程机械老技工,带徒弟一直是我工作的重要部分。我最怕的就是徒弟们看不懂二维图纸上的复杂结构,很多时候,图纸上的一条线条、一个标注,背后都蕴含着多年的实践经验,但徒弟们缺乏实际操作经验…

02.01.04.菲力尔FLIR GigE相机 环境搭建篇(CentOS9系统下 areaDetector安装配置)

本页目录 1、下载安装2、配置3、测试基础知识是:02.01.01.菲力尔FLIR GigE相机 环境搭建篇(CentOS9系统下 EPICS安装配置) 下载安装 注意:synApps需要下载安装到epics-base的目录下 cd /usr/local/software/epics-base wget https…

CAXA让大三学生爱上机械设计

谁懂啊!大三刚接触机械设计那会儿,看着一堆专业软件头都大了,生怕学不会拖后腿。实验室老师说的没错,软件门槛高真的会劝退新人。还好我们实验室配了CAXA CAD,双模式直接救大命!它的创新模式太友好了&#…

禅道8.2.1升级到12.5.3,浏览器提示“重定向次数过多”

从禅道8.2.1 Windows一键安装版升级,计划升级到12.5.3,一开始下载的是12.5.3一键安装版。解压后,把旧版的zentao数据库导出成.sql文件然后通过mysql命令行工具导入到了新版,启动后浏览器一直提示“重定向次数过多”。以为是版本跨…

高通CEO安蒙播客访谈:移动DNA也能做好数据中心

作者:周雅 2026年1月12日,HUMAIN出品的首档播客《End of Limits》第一期邀请到了一位特别嘉宾:高通公司总裁兼CEO安蒙(Cristiano Amon)。这场对话始于当下最炙手可热的AI,一路探向边缘计算、下一代设备革命…

部署qwen14B 实战

目录 启动脚本 #!/usr/bin/env bash set -eexport CUDA_VISIBLE_DEVICES=0python -m vllm.entrypoints.openai.api_server \--model /data/models/Qwen1.5-14B-Chat-AWQ \--quantization awq \--max-model-len 4096 \-…

商旅平台有哪些?2026年主流商旅平台盘点及新趋势报告

2026年1月,中国企业数字化转型研究院联合国内知名费控管理组织,正式发布《2026中国企业商旅数字化管理白皮书》(以下简称《白皮书》)。《白皮书》基于对5000余家不同规模企业商旅管理实践的深度调研,创新提出“商旅选型…

俄罗斯SALUTEDEV团队VIBE:超轻量AI实现高效图片编辑

近年来,人工智能在图像编辑领域的发展可以说是日新月异。当我们还在为一些大型AI模型动辄需要几十GB显存而头疼时,来自俄罗斯SALUTEDEV公司研发部门的科学家们却给我们带来了一个惊喜——他们开发出了一个名为VIBE(Visual Instruction Based …

mdadm 故障处理二

新增磁盘同步导致系统卡死 md126 : active raid10 sdj[4] sdl[2] sdk[1] sdm[3]15627788288 blocks super 1.2 512K chunks 2 near-copies [4/3] [_UUU][=======>…] recovery = 37.4% (2930181248/7813894144) fin…

当智能体爆发在即,数据库如何成为“发动机”?

作者:金旺就在上周,阿里发布了千问任务助理,打造消费级智能体成了阿里这一年第一项重要战略,AI超级入口之争也在这一年正式拉开序幕。值得注意的是,同样是在这场发布会上,当谈及任务助理背后的能力时&#…