Chapter 01

AI Agent 核心概念

理解 Agent 的本质:感知环境、自主规划、采取行动。从 ReAct 范式到现代 Agent 架构,建立完整的心智模型。

什么是 AI Agent

AI Agent(智能体)是一种能够感知环境、自主规划并采取行动以完成目标的 AI 系统。与传统的 LLM 调用不同,Agent 具备持续迭代、使用工具、保持状态的能力。

Agent(智能体)
能够自主感知输入、利用 LLM 进行推理规划、调用外部工具执行行动、并根据反馈迭代的软件系统。Agent 的关键特征是"自主性"——它能决定做什么,而不只是被动响应。
ReAct 框架(Reasoning + Acting)
2022 年 Google 提出的 Agent 范式,将 LLM 的推理过程(Thought)与行动(Action)、观察(Observation)交替进行,形成闭环循环。这是目前主流 Agent 框架的核心思想基础。
Tool Call(工具调用)
Agent 通过 LLM 输出结构化指令来调用外部函数、API 或服务的机制。工具调用是 Agent 连接真实世界的桥梁,使其能操作数据库、搜索网络、执行代码等。
State(状态)
Agent 在多轮交互中维护的上下文信息,包括对话历史、任务进度、中间结果等。状态管理是构建复杂 Agent 的核心挑战之一。

感知—规划—行动 循环

所有 Agent 本质上都运行在一个三阶段循环中。理解这个循环,就理解了 Agent 的运作机制:

┌─────────────────────────────────────────────────────┐ │ 感知 - 规划 - 行动 循环 │ └─────────────────────────────────────────────────────┘ 用户目标 / 环境输入 │ ▼ ┌──────────────┐ │ 感 知 │ ← 接收输入:用户消息、工具返回、 │ Perceive │ 环境状态、历史记忆 └──────┬───────┘ │ ▼ ┌──────────────┐ │ 规 划 │ ← LLM 推理:分析目标、选择策略、 │ Plan │ 决定下一步行动(或结束) └──────┬───────┘ │ ▼ ┌──────────────┐ │ 行 动 │ ← 执行:调用工具、修改状态、 │ Act │ 输出结果给用户 └──────┬───────┘ │ ▼ 观察结果 → 是否完成? │ │ 未完成 完成 │ │ └──→ 回到感知 └──→ 返回最终答案

ReAct 范式详解

ReAct(Reasoning + Acting)是 Yao et al. 2022 年提出的方法,证明了将推理过程与行动交织执行比单独使用推理或行动效果更好。

ReAct 执行轨迹示例: 用户:今天北京的天气怎么样?明天适合爬山吗? Thought: 我需要获取北京今明两天的天气数据,才能判断明天是否适合爬山。 Action: search_weather(location="北京", days=2) Observation: {"today": "晴,22°C", "tomorrow": "多云转小雨,17°C,风力4级"} Thought: 明天有小雨且风力较大,不适合爬山。我可以给出建议。 Action: FINISH Answer: 今天北京晴朗22°C。明天多云转小雨,气温17°C,风力4级, 爬山条件较差,建议推迟或选择室内活动。
ReAct 的关键洞见 Thought(思考)步骤不仅让 Agent 更准确,也使其行为变得可解释。每一步推理都被记录在轨迹中,便于调试和审计。

Agent 与 Chain 的本质区别

很多初学者混淆 LangChain 的 Chain(链)与 Agent(智能体),理解二者区别对于正确选型至关重要。

Chain(链)

  • 执行路径在编写时固定
  • 按预定顺序调用一系列步骤
  • 不能根据中间结果改变流程
  • 可预测性强,适合固定流程
  • 调试简单,延迟低
  • 示例:RAG 查询链、摘要链

Agent(智能体)

  • 执行路径由 LLM 动态决定
  • 可根据观察结果选择不同工具
  • 能循环执行直到满足目标
  • 灵活性强,适合开放问题
  • 延迟高,成本不确定
  • 示例:研究助手、代码调试员
选型原则 如果任务步骤确定、路径可预测,优先使用 Chain;只有当任务需要动态决策时,才引入 Agent。Agent 引入了不确定性和更高的成本,不是越"智能"越好。

Agent 的能力边界

理解 Agent 的局限性与 LLM 本身的局限性同样重要,这避免过度设计和错误期望:

上下文窗口限制
所有工具调用的历史、中间结果都占用 Token。长任务很快耗尽上下文窗口,需要摘要压缩或分段处理策略。
幻觉与工具滥用
LLM 可能错误地调用工具(调用不存在的函数)、传入错误参数,或对工具结果做出错误解读。健壮的错误处理和工具结果验证不可省略。
无限循环风险
Agent 在没有进展时可能重复同样的工具调用。必须设置最大步骤数(max_iterations)和超时机制。
非确定性
相同输入在不同运行中可能产生不同的工具调用序列,使得测试和调试比传统程序更困难。

2024–2025 Agent 发展现状

近两年 Agent 领域经历了快速演进,以下是关键里程碑:

2023 Q1 AutoGPT 爆火,展示了 Agent 的可能性(但不稳定) 2023 Q2 LangChain Agent 普及,ReAct/MRKL 框架推广 2023 Q4 OpenAI 发布 Assistants API,内置工具调用与持久化线程 2024 Q1 LangGraph 发布,引入图结构状态机解决循环控制问题 2024 Q2 CrewAI 0.x 成熟,多 Agent 角色协作范式流行 2024 Q3 Claude 3.5 Sonnet 工具调用能力大幅提升 2024 Q4 AutoGen 0.4 重构,引入异步消息传递架构 2025 Q1 Agent 工作流编排成熟,LangGraph Cloud 上线 2025 Q2 多模态 Agent(视觉+代码+搜索)进入生产
当前最佳实践 2025 年的主流选择:LangGraph 负责复杂状态管理和有环图,CrewAI 负责多角色任务分工,AutoGen 负责代码生成类对话式 Agent。三者并不互斥,可以组合使用。

Agent 的组成要素

一个完整的 Agent 系统由以下核心组件构成。后续章节将逐一深入讲解:

# Agent 系统的五大核心组件(概念示意)

# 1. LLM 推理引擎 — Agent 的"大脑"
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o", temperature=0)

# 2. 工具集合 — Agent 的"手"
tools = [search_web, run_python, query_database, send_email]

# 3. 记忆系统 — Agent 的"记忆"
memory = ConversationSummaryBufferMemory(llm=llm, max_token_limit=2000)

# 4. 状态管理 — Agent 的"工作台"
class AgentState(TypedDict):
    messages: list
    current_task: str
    tools_called: list
    iterations: int

# 5. 编排逻辑 — Agent 的"神经系统"
# 决定何时思考、何时行动、何时停止
graph = StateGraph(AgentState)
graph.add_node("reason", reasoning_node)
graph.add_node("act", action_node)
graph.add_conditional_edges("reason", should_act_or_finish)
本章小结 Agent = LLM 推理 + 工具调用 + 状态管理 + 编排逻辑。下一章我们将深入 LangGraph,学习如何用状态图来精确控制 Agent 的执行流程。