Jensen的个人学习小站

🏷️难度:高级 ⏱️预计阅读:30 分钟 📅更新时间:2026-02-28

Agent 工作流设计:从单体到 Multi-Agent 协作

目录
  1. 到底什么是 Agent?
  2. 单体 Agent:ReAct 范式
  3. 状态机视角下的应用层:LangGraph
  4. Multi-Agent 协作架构模式
  5. 总结与挑战

在大模型时代,编写简单的 Prompt 或一站式对话已经不能满足复杂的业务诉求。构建具有规划能力、工具调用能力和错误修正能力的工作流(Workflow)成了核心壁垒。本文将探讨从单体智能体到多智能体系统的设计思路。

1. 到底什么是 Agent?

通常认为,一个完整的基于 LLM 的 Agent 包含四大核心模块:

2. 单体 Agent:ReAct 范式

在设计单体智能体结构时,ReAct (Reasoning + Acting) 是最主流的提示词工程范式。其核心思想是让大语言模型交替输出"思考内容"和"动作命令"。

用户提问:"Apple 现在的股价是多少?如果拿这个价格去买一台顶配的 iPhone 15 Pro,能买几台?"

--- ReAct 执行流程 ---

[Thought 1]: 我需要先知道 Apple 现在的股价。我应该调用 `Search` 工具来查询。
[Action 1]: Search[Apple current stock price]
[Observation 1]: $180.50

[Thought 2]: 接下来我需要知道顶配 iPhone 15 Pro 的价格。
[Action 2]: Search[price of maxed out iPhone 15 Pro]
[Observation 2]: 顶配 (1TB) 在官网的起售价大概是 $1,499。

[Thought 3]: 现在我有了两个价格,我需要计算比例。180.50 必须被 1499 除。我使用 `Calculator` 工具。
[Action 3]: Calculator[180.50 / 1499]
[Observation 3]: 0.1204

[Thought 4]: 我现在可以回答用户的问题了。
[Final Answer]: 一股 Apple 的价格约为 $180.50,而顶配 iPhone的约为 $1,499。用买一股的钱,大约只能买到一台顶配手机的 0.12 倍(即买不到一台)。
🚫 ReAct 范式的痛点

当任务步骤过多时,ReAct 单一 Prompt 的上下文会变得极长,这不仅费 Token,也会导致严重的"灾难性遗忘"(大模型在末尾忘记初始任务设定的细节)。此时就需要引入模块化和状态管理。

3. 状态机视角下的应用层:LangGraph

为了解决长逻辑链的不稳定问题,近期的趋势是将流程图/状态机作为顶层设计。这就是 LangGraph 诞生的背景。

LangGraph 将开发者的业务代码和 LLM 分成图上的多个节点 (Nodes),并用边 (Edges) 规定数据(State)如何在节点间流转。这就像是把控制权从 LLM 强制拿回了一大半,交给代码控制。

from langgraph.graph import StateGraph, END

# 定义状态数据结构
class AgentState(TypedDict):
    input_text: str
    current_step: str
    intermediate_results: list

workflow = StateGraph(AgentState)

# 添加不同的决策/执行节点
workflow.add_node("planner", planner_node)
workflow.add_node("researcher", researcher_node)
workflow.add_node("writer", writer_node)

# 定义流转边
workflow.add_edge("planner", "researcher")
workflow.add_edge("researcher", "writer")
workflow.add_edge("writer", END)

# 编译图生成应用对象
app = workflow.compile()

4. Multi-Agent 协作架构模式

复杂的任务可以拆解并分发给多个专业的 Agent 处理。常见的多智能体组织架构如下:

模式一:层级架构 (Hierarchical)

设定一个 Leader/Manager Node,它不直接干活,而是负责接收用户任务、拆解出子任务,并分配给专门的下属代码助手、搜索助手等。所有下属结果最后交由主管归总。

模式二:辩论/评审架构 (Debate/Reviewer)

让不同的模型或赋予不同设定 (如一个创作者,一个批评家) 的节点互相交流。比如编写代码后,Critic Agent 专门负责找茬提出修改意见,循环此过程直到 Critic 满意再输出结果。

模式三:蜂群架构 (Swarm)

去中心化网络。只要任意节点发现任务自己干不了,就能基于自身对其他 Agent 能力的理解,自动将任务或上下文抛给另一个 Agent。这种设计灵活性最强,但也最难开发维稳。

5. 总结与挑战

核心结语

Agent 的工程落地正在从"玄学 Prompt 开发"转向"基于计算图的状态机开发"。让大语言模型做决定,而用传统的确定性代码来掌舵流程。

目前的挑战:主要在于多轮执行后的运行速度瓶颈以及大语言模型的意图对齐成本高昂。合理设计缓存,以及优化流程图层级,将是后续开发者需要深入的课题。