AI 系列之Agent 架构:从单一智能到自主工作流的演进

67 阅读7分钟

作为一名 Web 后端、前端或应用开发者,您很可能已经使用过大语言模型来生成代码、处理自然语言查询或构建简单的聊天界面。但当任务复杂度增加——例如需要多步规划、实时数据获取、错误纠正或多人协作时——单纯依赖模型生成文本的模式很快就会暴露局限性。这正是 AI Agent(AI 智能体)架构诞生的背景。

今天我们系统介绍 AI Agent 的核心架构演进路径,重点从您熟悉的软件工程视角出发:把 Agent 看作一个“可编程的自治服务”,它拥有规划能力、工具集成、状态管理和错误恢复机制。文章将遵循与前两篇相似的结构,逐步拆解概念,并引入典型架构图示以辅助理解。

从一个真实问题开始:为什么普通 LLM 调用无法处理复杂任务?

假设您正在开发一个企业内部的“智能运维助手”。用户提出需求:“检查最近 24 小时的服务器报警,找出根因,并自动重启受影响的服务。”

  • 如果只用普通 Prompt + LLM:模型可能会基于训练数据猜测常见原因,但它无法访问实时日志、调用监控 API 或执行重启操作。即使结合 Tool Calling,也容易陷入单次调用失败后就结束的困境。
  • 真实场景需要:多轮推理(分析日志 → 查询历史 → 验证假设)、条件分支(如果是数据库问题则走另一路径)、自我纠错(重试失败的操作)、甚至多个角色协作(一个 Agent 负责诊断,另一个负责执行)。

AI Agent 架构正是为此设计。它不再是“一次性问答”,而是一个有状态的、循环执行的自治流程,类似于您在微服务中实现的“事件驱动 + 状态机 + 外部集成”系统。

AI Agent 架构的核心思想:从“响应”到“自治循环”

什么是 AI Agent?

AI Agent 可以理解为一个带大脑的自治程序。它包含四个核心模块:

  • 感知(Perception) :读取用户输入、环境状态、工具返回结果。
  • 推理(Reasoning) :基于当前上下文决定下一步行动(规划、分解任务)。
  • 行动(Action) :调用工具、API 或其他 Agent。
  • 记忆(Memory) :短期上下文 + 长期知识存储,用于保持状态。

最经典的单 Agent 架构是 ReAct(Reason + Act)模式:模型交替输出“思考 → 行动 → 观察 → 调整”,形成闭环,直到任务完成。

为什么需要 Agent 架构?

  • 处理不确定性:真实世界任务充满分支和异常,Agent 通过循环自我纠错。
  • 长时序任务分解:将复杂目标拆成可执行步骤。
  • 工具与外部集成:像 Tool Calling 的升级版,支持动态、多轮调用。
  • 多 Agent 协作:分工明确,提高效率与鲁棒性。

对比普通 Prompt 或单次 Tool Calling:

  • 普通模式:输入 → 输出,线性、无状态。
  • Agent 模式:输入 → 循环(思考-行动-观察)→ 输出,有状态、可中断、可干预。

从开发视角看,这类似于从“同步函数调用”转向“异步事件循环 + 状态持久化”。

实际开发场景:Agent 架构的典型落地方式

  1. ReAct 单 Agent

    最基础形式:用户查询 → LLM 推理 → 调用工具(数据库/API)→ 观察结果 → 继续推理,直到回答完整。

  2. 带规划的 Agent

    先用 LLM 生成任务计划(Plan),再逐条执行,支持回溯或重规划。

  3. 多 Agent 协作

    多个角色分工:Planner(规划)、Executor(执行)、Critic(审查)、Researcher(研究)等。常见于 CrewAI、AutoGen。

  4. 状态机驱动的工作流

    用图结构(Graph)定义节点(动作)和边(条件跳转),典型代表 LangGraph。

  5. 带人类干预的 Agent

    支持 human-in-the-loop:在关键决策点暂停,等待人工确认。

这些场景的核心是:把 Agent 看作一个可观测、可调试的分布式系统,而非黑盒。

典型架构图示与代码示例

ReAct 循环架构(最经典单 Agent 模式)

ReAct 的核心是一个无限循环,直到满足终止条件。

典型流程图描述如下(文字模拟,实际生产中可用 draw.io 或 Excalidraw 绘制):

用户输入
    ↓
初始状态(上下文 + 记忆)
    ↓
LLM 推理(Thought)
    ↓
决定 Action(Tool CallFinal Answer)
    ├─ 是 Final Answer → 输出结束
    └─ 调用 Tool → 执行 → Observation(结果)
          ↑
          └────── 返回上下文,继续循环

LangGraph 工作流架构(2026 年主流推荐)

LangGraph 将 Agent 建模为有向图,支持循环、分支、并行和持久化状态。

核心组件:

  • Node:一个执行单元(如 call_model、execute_tool)。
  • Edge:条件跳转(if tool needed → tool node)。
  • State:全局共享字典(messages, plan, results 等)。

示例 Python 代码(基于 LangGraph 构建简单 ReAct Agent):

from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator
from langchain_core.messages import AnyMessage
from langchain_openai import ChatOpenAI

# 定义状态
class AgentState(TypedDict):
    messages: Annotated[list[AnyMessage], operator.add]
    next: str  # 用于路由

# LLM + 工具绑定(假设已定义 tools)
llm = ChatOpenAI(model="gpt-4o").bind_tools(tools)

# 节点:模型调用
def call_model(state: AgentState):
    messages = state["messages"]
    response = llm.invoke(messages)
    return {"messages": [response], "next": "tools" if response.tool_calls else END}

# 节点:工具执行
def tool_node(state: AgentState):
    outputs = []
    for tool_call in state["messages"][-1].tool_calls:
        tool_name = tool_call["name"]
        tool_result = tools_map[tool_name].invoke(tool_call["args"])
        outputs.append(tool_result)
    return {"messages": outputs, "next": "model"}

# 构建图
workflow = StateGraph(state_schema=AgentState)
workflow.add_node("model", call_model)
workflow.add_node("tools", tool_node)

# 条件边
workflow.add_conditional_edges("model", lambda s: s["next"])
workflow.add_edge("tools", "model")  # 工具执行后返回模型

# 入口
workflow.set_entry_point("model")
graph = workflow.compile()

# 执行示例
result = graph.invoke({"messages": [{"role": "user", "content": "查询订单 #12345 状态"}]})

此代码体现完整闭环:模型决定 → 工具执行 → 结果回传 → 继续推理。

实际应用案例

  • ReAct 单 Agent:智能搜索助手(搜索 → 总结 → 验证事实)。
  • 规划 + 执行 Agent:自动化报告生成(规划章节 → 逐节调用数据工具 → 合成文档)。
  • 多 Agent 系统:CrewAI 风格的营销团队(Researcher 搜集竞品 → Writer 撰写文案 → Editor 审核)。
  • LangGraph 工作流:复杂运维 Agent(诊断 → 决策树分支 → 执行修复 → 验证)。
  • 带人类干预:代码审查 Copilot(建议修改 → 等待开发者确认 → 自动提交 PR)。

从工程角度总结:Agent 架构的价值与注意事项

在 2026 年的工程实践中,AI Agent 架构已成为构建生产级自治系统的基础能力。它将 LLM 从“文本生成器”升级为“可控的决策执行引擎”。

核心价值

  • 可靠性:通过循环和状态管理大幅降低幻觉与单点失败。
  • 可扩展性:支持从单 Agent 到多 Agent 协作,易于集成现有微服务。
  • 可观测性:LangGraph 等框架提供可视化图 + 日志追踪,便于调试。
  • 复用性:一次定义工具与状态,多场景复用。

开发注意事项

  • 状态设计:过度复杂的 State 会导致调试困难,建议用 TypedDict 严格约束。
  • 循环控制:设置最大迭代次数、token 预算,避免无限循环。
  • 错误恢复:在工具失败时让模型重新规划,而非直接抛异常。
  • 性能与成本:多轮调用 token 消耗大,优先使用缓存、并行工具。
  • 安全边界:工具执行层加沙箱、权限校验,尤其涉及写操作。
  • 框架选择:简单任务用 ReAct,复杂流程优先 LangGraph,多角色协作考虑 CrewAI 或 AutoGen。

作为开发者,可以从一个 ReAct 单 Agent 开始实验,逐步引入图结构和多 Agent 协作。很快就会发现:Agent 架构不是“AI 的高级玩法”,而是让 AI 真正成为业务系统中可靠组件的必经之路。