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

AI编程新工具!使用 LangGraph 构建复杂工作流

我们都知道,现实世界是复杂的,有可能会遇到很多非线性的决策,即使在一个垂直领域里面,也有可能需要考虑很多条件。

还有一种情况就是,我们有些任务希望在本地运行,但是本地只能跑一些小模型,有可能是一些专用的领域模型,或者,有时候我们希望组合这些小模型的能力来完成复杂的任务。

这个时候,小编觉得 LangGraph 是一个很好的解决问题的工具。

LangGraph 是 LangChain 下面开源的一个工具,它将有向图(Directed Graph)的概念引入到了由大语言模型(LLM)驱动的 agent 工作流中,我们可以把它想象为:

“LangChain + 状态 + 网络图可视化”的组合。

核心概念

状态图(State Graph)

LangGraph 的基础是“状态图”,它由节点和有向边组成。每条边代表在当前状态下模型可能进入的下一步。这种设计非常适合构建:

  • 多轮对话系统
  • 多 agent 协同系统
  • 工作流(例如:RAG 检索增强生成、问答流程、数据整理流程)
  • 异常处理(如重试机制、fallback 分支)
  • 模型自我反思(Self-Reflection)

节点

每个节点是一个“函数”或“步骤”,它接受当前状态作为输入,返回新的状态。这些节点可以是:

  • 普通的 Python 函数
  • LangChain agent
  • 工具函数
  • 子图(也称为复合节点)

边(Transitions)

你可以为每个节点定义条件,以决定下一个状态应该指向哪个节点。这使得你可以根据模型的输出或状态的某些条件构建复杂的分支逻辑。

状态(State)

LangGraph 在每次执行图的过程中,都会维护一个“状态字典”,这个字典在节点间传递。你可以把它理解为一个上下文对象,记录了执行流程中的所有数据。

循环与回退(Loops and Retry)

LangGraph 支持在图中引入循环结构。你可以定义最大循环次数、防止死循环,并实现反思机制(如 ReAct 模型的 retry 机制)。

可视化

LangGraph 有内置的可视化功能,可以生成完整的 DOT 图,或通过网页交互式展示图结构。这对于调试大型工作流非常有帮助。

典型案例

  1. 多 agent 协同: 比如一个写作 agent + 一个检索 agent + 一个审阅 agent 协作完成任务。
  2. 自我反思 agent: 模型先输出草稿,再调用自己的校验器 agent 来判断是否需要修正。
  3. 嵌套图(Subgraph): 在主图中插入另一个图,使流程更模块化。
  4. LangChain + LangGraph 联合使用: 你可以在 LangChain 中嵌入 LangGraph,或反过来在 LangGraph 中调用 LangChain 工具链。

优点总结

  • 模块化: 每个节点都是独立的,可复用。
  • 流程清晰: 图结构使控制流可视、可调试。
  • 强扩展性: 支持条件跳转、循环、反思、多 agent。
  • 无框架依赖: 虽然是 LangChain 团队开发,但你完全可以脱离 LangChain 使用它。

后面我会通过 LangChain 一步一步搭建一个企业级的工作流。

http://www.lryc.cn/news/605658.html

相关文章:

  • Cesium 快速入门(七)材质详解
  • 数据结构 ArrayList与顺序表
  • 计算机网络学习(一、Cisco Packet Tracer软件安装)
  • Redis线程模型讨论
  • 无人机飞控系统3D (C++)实践
  • 思途JSP学习 0731
  • Druid数据库连接池
  • MongoDB系列教程-第四章:MongoDB Compass可视化和管理MongoDB数据库
  • 使用 Elasticsearch 和 AI 构建智能重复项检测
  • Jmeter 命令行压测、HTML 报告、Jenkins 配置目录
  • HTML-取消div,a等标签点击效果
  • 深入探索Weaviate:构建高效AI应用的数据库解决方案
  • 常用设计模式系列(十七)—命令模式
  • LCM中间件入门(2):LCM核心实现原理解析
  • 《人工智能导论》(python版)第2章 python基础2.2编程基础
  • [算法]Leetcode3487
  • Video_1920×1080i 1920_1080p
  • 大白话解释---FreeRTOS中的队列集
  • 基于知识驱动的解释性条件扩散模型用于无对比剂心肌梗死增强合成|文献速递-医学影像算法文献分享
  • CSS和XPATH选择器对比
  • 《Java 程序设计》第 15 章 - 事件处理与常用控件
  • Vibe Coding:AI驱动开发的安全暗礁与防护体系
  • 异步I/O和同步I/O
  • Day15--二叉树--222. 完全二叉树的节点个数,110. 平衡二叉树,257. 二叉树的所有路径,404. 左叶子之和
  • 在Linux中创建LVGL应用
  • Kotlin -> 普通Lambda vs 挂起Lambda
  • 【Django】-1- 开发项目搭建
  • Django模型迁移指南:从命令用法到最佳实践
  • HttpServletRequest详细解释
  • 如何在NPM上发布自己的React组件(包)