news 2026/4/14 9:48:17

从线性 Chain 到状态图:LangGraph 核心概念与极简实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从线性 Chain 到状态图:LangGraph 核心概念与极简实战

从线性 Chain 到状态图:LangGraph 核心概念与极简实战

💡 适用人群:熟悉 LangChain/LLM 基础,希望构建带状态、可循环、可人工干预的生产级 Agent 工作流的开发者。

🔍 为什么传统 Chain 不够用了?

LangChain 的Chain本质是线性管道,适合单步 RAG 或固定流程。但真实业务中常遇到:

  • 工具调用失败需要重试/降级
  • 生成内容需人工审核后再继续
  • 多模型/多任务需动态路由
    LangGraph 用有向图 + 状态机思想重构工作流,让 Agent 具备可循环、可中断、可回溯的能力。

🧩 核心概念(一图看懂)

概念作用类比
State全局共享的记忆本,节点间传递数据游戏存档
Node执行单元(LLM/工具/逻辑判断)关卡机关
Edge固定或条件流转路径传送门/岔路
Graph节点+边构成的完整工作流地图
Checkpoint自动持久化状态,支持中断恢复自动存档点

START

LLM生成

校验通过?

重试/修正

END

🛠 5 分钟跑通最小示例

pip install langgraph langchain-openai
from typing import TypedDict from langgraph.graph import StateGraph, START, END # 1. 定义状态 class WorkflowState(TypedDict): query: str response: str retries: int # 2. 定义节点 def llm_node(state: WorkflowState): # 此处替换为真实 LLM 调用 return {"response": f"已处理: {state['query']}"} def retry_node(state: WorkflowState): return {"retries": state["retries"] + 1} # 3. 构建图 builder = StateGraph(WorkflowState) builder.add_node("llm", llm_node) builder.add_node("retry", retry_node) builder.add_edge(START, "llm") # 条件边:控制循环与退出 def route(state: WorkflowState) -> str: # 模拟校验逻辑:重试超过2次则结束 if state.get("retries", 0) >= 2 or "错误" not in state.get("response", ""): return "end" return "retry" builder.add_conditional_edges("llm", route, {"retry": "retry", "end": END}) builder.add_edge("retry", "llm") # 4. 编译并运行 graph = builder.compile() result = graph.invoke({"query": "测试输入", "retries": 0}) print(result)

🎯 核心目的与选型逻辑

📝 本篇博客写作目的

  • 破除线性思维:帮开发者从Chain的“单步管道”认知,升级到Graph的“状态机+循环”架构。
  • 提供即插即用模板:不堆砌理论,直接给出可运行的最小示例与生产级模式(重试/人工干预/多路由)。
  • 明确技术边界:用对比表格划清 LangGraph 的适用场景,避免“杀鸡用牛刀”或“该用时不用”。

🛠 技术实战目的(为什么选 LangGraph?)

业务诉求LangGraph 解决目的关键实现
流程可循环打破线性限制,支持自我修正/重试条件边 + 计数器 + 安全退出机制
过程可干预关键节点人工审核/确认后再继续interrupt_before+ 状态持久化
状态可追溯复杂 Agent 的上下文不丢失、可回放节点仅返回增量更新,自动合并 State
路由可动态根据 LLM 输出/工具结果智能分流动态字符串路由至不同子图或END

💡核心结论:当你的工作流需要确定性控制、状态可观测、异常可恢复时,LangGraph 不是“可选项”,而是“必选项”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 9:43:28

C# 如何实现对象序列化

在实现之前,先要做一些准备工作,序列化其实是对象和字符串(文件)之间的互相转换,所以首先我们准备好一个实体类,很简单的Person类:using System.Text.Json;public class Person {public string …

作者头像 李华
网站建设 2026/4/14 9:43:20

STM32CubeMX实战指南:从环境搭建到流水灯项目烧录

1. STM32CubeMX环境搭建指南 第一次接触STM32开发时,最头疼的就是各种环境配置。记得我刚开始用标准库开发时,光是搭建开发环境就折腾了两天。直到后来发现了STM32CubeMX这个神器,才真正体会到什么叫"一键配置"。下面我就用最直白的…

作者头像 李华
网站建设 2026/4/14 9:41:14

AI头像生成器实战分享:如何用中文描述生成高质量提示词

AI头像生成器实战分享:如何用中文描述生成高质量提示词 1. 为什么需要专业的头像提示词生成工具 在AI绘图工具普及的今天,许多用户发现一个奇怪现象:明明输入了看似合理的描述,生成的图片却总是不尽如人意。特别是对于头像这种需…

作者头像 李华
网站建设 2026/4/14 9:40:53

丝杆升降机易损部件有哪些?

丝杆升降机并非“一劳永逸”,内部多个部件在长期运行后会正常磨损或老化。提前掌握易损件的更换周期,进行预防性维护,可以避免突发故障导致的停产事故。本文列出丝杆升降机最常见的6大易损部件,并提供详细的更换周期表和判断标准。…

作者头像 李华
网站建设 2026/4/14 9:39:53

亲测有效!Z-Image-Turbo解决AI绘画三大痛点:慢、黑、崩

亲测有效!Z-Image-Turbo解决AI绘画三大痛点:慢、黑、崩 1. 痛点终结者:当AI绘画遇上Turbo引擎 作为一名长期被AI绘画"折磨"的设计师,我经历过太多崩溃时刻:等待生成的进度条仿佛永远走不完,好不…

作者头像 李华
网站建设 2026/4/14 9:38:57

WaveTools终极指南:三步解锁鸣潮帧率与全面优化方案

WaveTools终极指南:三步解锁鸣潮帧率与全面优化方案 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools是一款专为《鸣潮》玩家设计的开源工具箱,通过智能帧率解锁和画质优化…

作者头像 李华