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 开发体验会非常丝滑。

相关推荐
0xR3lativ1ty几秒前
每周AI工具新动态
人工智能
jerryinwuhan3 分钟前
面向产业带与中小企业数字化转型的电商运营人才培养模式
大数据·人工智能
Drgfd11 分钟前
智造赋能品控:汪进进以精益生产,夯实质量制造底座
人工智能·制造
米小虾21 分钟前
"Chat is dead":OpenAI 正在杀死的不是聊天,是整个 AI 交互范式
人工智能·openai
冬奇Lab25 分钟前
Agent 系列(18):成本与性能优化——省钱且更快
人工智能·llm·agent
Hefei GlobefishAI38 分钟前
合肥合豚AI硬件方案:专为智能售货柜厂商定制的无人零售接口套件
人工智能·零售·自动售货机·无人零售硬件·ai硬件方案·智能售货柜·接口套件
冬奇Lab44 分钟前
每日一个开源项目(第127篇):PM Skills Marketplace - 把顶级产品方法论塞进 AI Agent
人工智能·开源·资讯
吴佳浩1 小时前
Hermes vs OpenClaw:基于源码的 Agent Loop 全面分析
人工智能·llm·agent
AI袋鼠帝1 小时前
腾讯出手了!彻底入局企业级Agent。
人工智能
和平宇宙1 小时前
AI笔记005. hermes-DeepSeek V4 Pro, 128K上下文引发的探索
前端·人工智能·笔记