Skip to content

AI Agent 与多智能体

本页介绍 LLM 应用生态中最高阶的形态——AI Agent(智能体)与多智能体系统:让 LLM 从”你问我答”进化为”你说目标,我自己搞定”。它是 LLM 应用生态概览中的”手脚”层,核心依赖提示工程中的 ReAct 模式和MCP 协议与工具调用中的工具能力。

Agent = 给 LLM 装上手脚和自主决策能力。

普通 LLM 对话像”咨询顾问”——你问一个,它答一个。Agent 像一个”实习生”——你给目标,它自己规划步骤、调用工具、检查结果、循环执行,直到任务完成。

  • 单 Agent 循环:目标 → 思考(该干什么)→ 行动(调工具)→ 观察(看结果)→ 再思考 → … → 完成。这就是 ReAct 模式(Reasoning + Acting,推理与行动交替循环)。
  • 多智能体协作:复杂任务拆给多个角色不同的 Agent,各司其职。比如”产品经理 Agent 写需求 → 程序员 Agent 写代码 → 测试 Agent 验证”——像一个小型团队。

2025 年里程碑:2025 年被称为”Agent 元年”——OpenAI Operator(浏览器操控 Agent)、Anthropic Computer Use(桌面操控 Agent)、Manus(通用 Agent)、Google Project Mariner 等产品集中爆发,Agent 从实验性技术进入主流商业应用。底层基础设施也在快速成熟:Anthropic 推出的 MCP(Model Context Protocol,模型上下文协议)成为连接 LLM 与外部工具的事实标准,OpenAI 发布了 Agents SDK,Google 提出了 A2A(Agent-to-Agent)协议。

什么是 Agent?——一个技术定义

Section titled “什么是 Agent?——一个技术定义”

从工程角度,Agent 是一个以 LLM 为”大脑”的自主系统,具备三个核心能力:

  1. 感知(Perception):接收用户目标、环境状态、工具返回结果等信息。
  2. 决策(Decision-making):LLM 根据当前信息推理出下一步行动——调用哪个工具、传什么参数、或者直接回复用户。
  3. 行动(Action):执行决策——通过 Function Calling(函数调用,即 LLM 输出结构化 JSON 指定函数名和参数)触发外部工具执行。

这三个能力构成一个循环(loop),直到任务完成或达到最大步数限制。

维度普通 LLM 对话LLM Agent
交互模式单轮或简单多轮多步循环,直到目标完成
信息来源只有训练数据 + 用户输入训练数据 + 实时工具调用结果
自主性零——用户发起每次调用高——Agent 自主决定下一步
错误恢复无——错了就错了有——看到工具报错可以自己修
执行时间秒级(一次推理)分钟到小时级(多步循环)

ReAct(Yao et al. 2022)是几乎所有 Agent 的基础范式。核心是一个三步循环:

  1. Thought(推理):LLM 分析当前状态,决定下一步——“我需要搜索这个信息”。
  2. Action(行动):选择并调用一个工具——search("GPT-4 API price")。
  3. Observation(观察):工具返回结果,LLM 基于新信息继续推理。

Thought 和 Action 的交替让模型不必一次”想对”——它可以走一步看一步,每步都根据真实反馈修正方向。这是 Agent 能处理开放性任务的关键。

Agent 的能力边界取决于它能调用什么工具。2025 年的工具生态已经非常丰富:

  • 搜索类工具:Tavily API、Brave Search API、Google Search——让 Agent 获取实时互联网信息。
  • 代码执行工具:Python sandbox、Jupyter——让 Agent 运行代码做计算、数据分析。
  • 文件操作工具:读写文件、Git 操作——让 Agent 管理代码库、生成文档。
  • 浏览器/桌面工具:Anthropic Computer Use、OpenAI Operator——让 Agent 直接操控浏览器点击、输入、滚动,或操控桌面应用。
  • MCP 工具生态:通过 MCP 协议,Agent 可以连接数据库、Slack、GitHub、Notion 等数百种外部系统。详见 MCP 协议与工具调用。

多智能体系统:何时需要拆分?

Section titled “多智能体系统:何时需要拆分?”

单个 Agent 能力有限——当任务复杂到单 Agent 的 prompt(提示词)装不下,或者不同子任务需要截然不同的工具集和推理方式时,就需要多智能体协作:

  • 角色分工:每个 Agent 专注于一个领域——研究员负责搜索,程序员负责写代码,测试员负责验证。
  • 减少上下文污染:把不同类型的任务隔离在不同 Agent 的 context window(上下文窗口)中,避免互相干扰。
  • 并行加速:多个 Agent 可以并行处理独立子任务。

主流多智能体协调方式:

  • 对话协调(AutoGen):Agent 之间通过消息传递协作,像开会一样。
  • 流程协调(CrewAI):预先定义好 Agent 的执行顺序和依赖关系,像流水线。
  • 交接协调(OpenAI Swarm/Agents SDK):Agent 遇到不擅长的子任务时,把控制权 handoff 给更合适的 Agent。

多智能体系统的关键挑战是协调:谁先做、谁后做、意见冲突怎么办。不同框架用不同策略解决——AutoGen 用”对话”,CrewAI 用”流程”,MetaGPT 用”软件工程 SOP”。详见 Agent 设计模式。

用 LangChain Agent 实现一个搜索 Agent

Section titled “用 LangChain Agent 实现一个搜索 Agent”
from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain.tools import Tool
from langchain_core.prompts import ChatPromptTemplate
# 定义一个简单的搜索工具(实际产品接入搜索 API)
def fake_search(query: str) -> str:
return f"搜索结果:关于「{query}」的最新信息..."
tools = [Tool(name="search", description="搜索互联网获取信息", func=fake_search)]
# 创建 ReAct Agent
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
prompt = ChatPromptTemplate.from_messages([
("system", "你是研究助手,用工具搜索后总结答案。"),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"), # Agent 的思考-行动记录
])
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 执行:Agent 会自动搜索 → 阅读 → 总结
result = executor.invoke({"input": "2024 年 AI 领域最重要的突破是什么?"})
print(result["output"])

从零构建一个 ReAct Agent(不依赖框架)

Section titled “从零构建一个 ReAct Agent(不依赖框架)”

理解 ReAct 最好的方式是亲手实现一个最小版本:

import openai
import json
client = openai.OpenAI()
# 定义 Agent 可用的工具
def search(query: str) -> str:
"""模拟搜索工具"""
return f"搜索 '{query}' 的结果:相关数据已找到。"
def calculate(expression: str) -> str:
"""模拟计算工具"""
try:
return str(eval(expression))
except Exception as e:
return f"计算错误: {e}"
# 工具注册表:名称 → 函数
TOOL_REGISTRY = {
"search": search,
"calculate": calculate,
}
# 工具的 JSON Schema 定义(让 LLM 知道有哪些工具可用)
TOOLS = [
{
"type": "function",
"function": {
"name": "search",
"description": "搜索互联网获取信息。当你需要查找实时数据、新闻、事实时使用。",
"parameters": {
"type": "object",
"properties": {"query": {"type": "string", "description": "搜索关键词"}},
"required": ["query"],
},
},
},
{
"type": "function",
"function": {
"name": "calculate",
"description": "执行数学计算。当需要精确数值计算时使用。",
"parameters": {
"type": "object",
"properties": {"expression": {"type": "string", "description": "数学表达式"}},
"required": ["expression"],
},
},
},
]
def react_agent(goal: str, max_steps: int = 10):
"""最小 ReAct Agent 实现"""
messages = [
{"role": "system", "content": "你是一个能使用工具的助手。一步步思考,必要时调用工具。"},
{"role": "user", "content": goal},
]
for step in range(max_steps):
print(f"\n--- 步骤 {step + 1} ---")
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
tools=TOOLS,
)
msg = resp.choices[0].message
messages.append(msg)
# 如果没有工具调用,Agent 认为任务完成
if not msg.tool_calls:
print(f"最终答案: {msg.content}")
return msg.content
# 执行每个工具调用
for tc in msg.tool_calls:
name = tc.function.name
args = json.loads(tc.function.arguments)
print(f"Action: {name}({args})")
result = TOOL_REGISTRY[name](**args)
print(f"Observation: {result}")
messages.append({
"role": "tool",
"tool_call_id": tc.id,
"content": result,
})
return "超过最大步数限制"
# 运行 Agent
# react_agent("搜索最新的 GPT 模型信息,然后计算如果每天调用 1000 次 API,30 天总共调用多少次")

这个最小实现展示了 ReAct 的本质:一个 while 循环,每次让 LLM 决定是”调工具”还是”给答案”。所有 Agent 框架的底层都是这个循环的变体。

  • 设最大步数:Agent 循环必须有硬上限(如 20 步)。否则一旦 Agent 陷入”再试一次”的死循环,token 消耗会爆炸。
  • 工具描述决定 Agent 智商上限:Agent 选工具全靠读 description(工具描述)。描述不清的工具等于不存在。好的描述要写清”做什么、何时用、参数格式、返回什么”。
  • 从单 Agent 开始:2025 年的工程共识——先从单 Agent + 工具循环开始,验证核心路径走通后,再考虑引入多智能体。过早引入多 Agent 架构是项目失败的首要原因。
  • 可观测性必不可少:生产级 Agent 必须接入追踪(LangSmith、Langfuse 等)。没有追踪,Agent 调试全靠猜。
  • 安全边界:Agent 能执行真实操作(删文件、发消息、付款),必须设置权限边界——哪些操作需要人类确认(Human-in-the-loop),哪些可以自动执行。
  • 成本控制:Agent 的多步循环意味着高 token 消耗。要监控每次任务的实际成本,设置预算上限。
  • AutoGPT:2023 年爆火的开源项目,用户给一个高层目标(“帮我调研 XX 并写报告”),Agent 自主规划、上网搜索、保存文件——“自主 Agent”概念的首个现象级产品。
  • Devin / Cursor Agent / Claude Code:AI 软件工程师,接收需求后自主编写代码、运行测试、调试修复——Agent 在编程领域的深度应用。详见AI 编程助手。
  • Manus:2025 年发布的通用型 Agent,能处理数据分析、文档处理、网页操作等多类型任务,展示了 Agent 从”聊天”到”干活”的跨越。
  • OpenAI Operator / Anthropic Computer Use:2025 年推出的浏览器/桌面操控 Agent,能直接操控浏览器点击、输入、滚动,将 Agent 的”手脚”从 API 调用扩展到完整的 UI 交互。
  • AutoGen / CrewAI / OpenAI Agents SDK:多智能体框架,用户编排多个角色化 Agent 协作完成复杂任务——“用自然语言管理一个 AI 团队”。详见 Agent 设计模式。
  • Perplexity Pro Search:AI 搜索引擎的多步推理模式,本质是一个搜索 Agent——自动分解问题、多轮检索、综合答案。详见 AI 搜索引擎。
类库语言说明
LangGraphPython / TS基于状态图的 Agent 编排框架,支持复杂控制流,2025 年生产级 Agent 首选
OpenAI Agents SDKPythonOpenAI 2025 年正式发布的 Agent SDK,支持 handoff 交接、工具调用、内置追踪
AutoGenPython微软出品的多智能体对话框架,v0.4 重写后支持异步事件架构
CrewAIPython角色驱动的多智能体框架,定义角色→分配任务→自动协作,2025 年新增 Flows
LlamaIndex WorkflowsPython基于事件驱动的 Agent 工作流编排
MetaGPTPython模拟软件公司 SOP 的多智能体框架,产品经理/架构师/工程师各司其职
LangSmith / LangfusePython / TSAgent 全链路追踪与评估平台
术语英文解释
智能体Agent能自主感知、决策、行动并调用工具完成目标的 AI 系统
推理与行动ReAct (Reason + Act)Thought → Action → Observation 循环,Agent 的核心推理模式
函数调用Function CallingLLM 输出结构化 JSON 指定函数名和参数,Agent 调用工具的底层机制
工具ToolAgent 可调用的外部能力,如搜索、代码执行、API 请求
上下文窗口Context WindowLLM 单次能处理的最大 token 数量,限制了 Agent 的短期记忆容量
规划与执行Plan-and-Execute先制定完整计划再逐步执行的 Agent 模式,比 ReAct 更系统
多智能体Multi-Agent多个角色化 Agent 分工协作完成复杂任务的系统
交接Handoff一个 Agent 将控制权转交给另一个更适合当前子任务的 Agent
角色Role多智能体中每个 Agent 的身份与职责定义
反思ReflectionAgent 回顾自身执行过程、总结经验并改进的能力
幻觉HallucinationLLM 生成看似合理但实际不正确的内容,Agent 用工具调用部分缓解此问题
全链路追踪Tracing记录 Agent 每一步的推理、行动、观察,用于调试和评估
  • ReAct:Yao et al., “ReAct: Synergizing Reasoning and Acting in Language Models”(2022),提出推理 + 行动交替模式,奠定了 Agent 的基本范式。详见提示工程中的 ReAct 介绍。
  • AutoGPT:Significant Gravitas 2023 年开源,首个火爆的”自主 Agent”项目,让大众第一次看到”给 AI 目标它自己干”的可能性。
  • Reflexion:Shinn et al., “Reflexion: Language Agents with Verbal Reinforcement Learning”(2023),让 Agent 通过自我反思持续改进。
  • Anthropic “Building Effective Agents” (2024):Anthropic 工程团队的实践总结,提出”先简单后复杂”的 Agent 设计哲学,是 2025 年 Agent 工程的指导性文章。
  • Agent 设计模式:本站配套页面,深入讲解 ReAct、Plan-and-Execute、Reflexion、Multi-Agent 等设计模式的内部实现。详见 Agent 设计模式。