Langgraph开发:先有Graph还是先有State

在使用 LangGraph 设计 Agent 时,直接跳进代码里定义 Node 或 Edge 很容易导致逻辑混乱。LangGraph 的核心本质是 "有状态的图(Stateful Graph)"

优先级排序:

  1. 业务工作流 (Workflow/Graph Topology) ------ 先画图,不写码
  2. 状态定义 (State Schema) ------ 数据的"血液"
  3. 节点功能 (Nodes) ------ 执行的"手脚"
  4. 边与路由 (Edges & Routing) ------ 决策的"大脑"

详细构思指南

1. 优先级最高:业务工作流 (Visualizing the Graph)

核心问题: 我的 Agent 是怎么思考和做事的?

在定义 State 或 Node 之前,你必须在纸上或白板上画出流程图。LangGraph 的强大在于处理循环 (Cycles)分支 (Branches)

  • 构思要点:

    • 起点与终点: 用户输入是什么?最终产出是什么?
    • 关键步骤: 需要检索吗 (RAG)?需要写代码吗?需要审核吗?
    • 循环逻辑: 如果检索结果不满意,Agent 应该重试吗?重试多少次?
    • 人机交互: 哪一步需要人类确认(Human-in-the-loop)?
  • 决策结果:

    • 是单一直线流程(DAG)?
    • 还是典型的 ReAct 循环(思考-行动-观察-循环)?
    • 还是多 Agent 协作(Supervisor 模式)?

2. 优先级第二:状态定义 (State Design)

核心问题: 节点之间如何传递信息?Agent 需要记住什么?

LangGraph 的 State 是所有节点共享的上下文(Context)。这是它与普通 Chain 的最大区别。必须在写 Node 代码前定义好 State,因为 Node 的输入输出都依赖它。

  • 构思要点:

    • 消息历史: 是否需要标准的 messages 列表(User/AI/Tool Message)?
    • 共享数据: 是否需要存储检索到的文档 (documents)、生成的草稿 (draft)、当前的步骤计数 (steps)?
    • Reducer 逻辑: 当一个 Node 返回数据时,是覆盖 旧数据,还是追加 数据?
      • 例如:消息通常是 add_messages (追加),而生成的最终摘要通常是直接覆盖。
  • 代码预想:

    python 复制代码
    class AgentState(TypedDict):
        messages: Annotated[list, add_messages] # 追加模式
        documents: list[str]                    # 覆盖模式
        retry_count: int                        # 用于控制循环次数

3. 优先级第三:节点设计 (Node Design)

核心问题: 每一步具体做什么?

有了 State 定义,你就可以设计 Node 了。每个 Node 本质上就是一个 Python 函数:Input: State -> Output: State Update

  • 构思要点:
    • 主要指责:
      • Agent Node:调用 LLM 做决策或生成回答。
      • Tool Node:执行具体工具(搜索、计算、API调用)。
      • Logic Node:不调用 LLM,仅做数据清洗或格式化。
    • 输入输出: 这个 Node 读取 State 中的哪些字段?它更新 State 中的哪些字段?
    • 工具绑定: 如果是 LLM Node,它需要绑定哪些 Tools?

4. 优先级第四:边与路由 (Edges & Routing)

核心问题: 做完这一步,下一步去哪里?

这是连接 Node 的桥梁。

  • 构思要点:
    • 普通边 (Normal Edge): 固定的流向(例如:检索完 -> 总结)。
    • 条件边 (Conditional Edge): 这是 Agent 智能的核心。
      • 逻辑: 基于 LLM 的输出决定。
      • 场景: 如果 LLM 返回了 tool_calls,转到 ToolNode;如果 LLM 返回了结束语,转到 END
      • 校验: 检查 retry_count,如果超过 3 次,强制结束(防止死循环)。

5. 附加构思(进阶)

在完成以上 4 步后,考虑以下 LangGraph 特有的增强功能:

  • Checkpointer (记忆持久化): 是否需要跨会话记忆?(用户关掉网页回来还能接着聊吗?)
  • Interrupt (人机协同): 在执行敏感操作(如发邮件、写代码)前,是否需要暂停图的运行,等待用户输入 resume

总结:你的设计清单

在你打开 IDE 之前,请先回答以下问题:

  1. 画出流程图:我有几个圈(循环)?
  2. 状态 定义数据结构:我的 State 里面有哪些字段?哪些是 Append,哪些是 Overwrite?
  3. 节点 确定工具:Agent 需要用到哪些 Tool?
  4. 路由 确定条件:什么情况下 Agent 会决定"重做"或"结束"?

按照这个顺序,你的 LangGraph 开发体验会非常丝滑。

相关推荐
清酒难寻8 小时前
深度学习进阶(二十四)Swin 的二维 RPE
人工智能·深度学习
步步为营DotNet8 小时前
借助 Microsoft.Extensions.AI 与 ASP.NET Core 10 实现智能 Web 应用故障预测
人工智能·microsoft·asp.net
AI创界者8 小时前
零基础上手!ComfyUI + LTX-2.3 图生视频完整工作流搭建与调优指南(附避坑细节)
大数据·人工智能
怕浪猫8 小时前
AI图片工具到底有哪些?一份按能力维度整理的清单
人工智能
hongmai6668889 小时前
FH8856V310芯片详解:6M高清+0.5TOPS算力,赋能智能安防新方案
人工智能·单片机·嵌入式硬件·物联网·智能家居
一颗小树x9 小时前
NVIDIA Jetson Thor 运行 LLM / VLM:模型全整理与 vLLM 实践
人工智能·llm·jetson·vllm
每日综合9 小时前
蓝白风暴席卷BW2026!雷克沙展台首日燃情纪实
人工智能
To_OC9 小时前
手搓 LangChain 工具调用:原来 Agent 的核心逻辑,就是个 while 循环
人工智能·langchain·llm
Drgfd9 小时前
机器人从工厂走进生活:通用机器人开启大众商用时代
人工智能
硕迪科技SOLIDWORKS9 小时前
SOLIDWORKS与ERP对接不再是研发孤岛:硕迪科技数据同步方案让BOM流转提速百分之三百
人工智能·科技·solidworks与erp