智能体深度解析 / 单智能体架构
CHAPTER 05 · TOPIC 05

单智能体架构

单智能体(Single Agent)是当前最常见也最成熟的 AI Agent 架构模式——一个 Agent 配备 LLM 大脑、记忆系统和工具集,独立完成从理解任务到交付结果的全流程。本章深入剖析单智能体的架构设计、核心组件协作、典型实现方案及局限性。

一句话理解

单智能体(Single Agent)是当前最常见也最成熟的 AI Agent 架构模式——一个 Agent 配备 LLM 大脑、记忆系统和工具集,独立完成从理解任务到交付结果的全流程。本章深入剖析单智能体的架构设计、核心组件协作、典型实现方案及局限性。

阅读前置

理解提示工程与工具调用

本文关注

单智能体核心架构、核心组件详解、主流单智能体实现

所在知识层

行动系统 · 智能体深度解析

文章导航
主教学视觉单智能体架构 · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

单智能体(Single Agent)是当前最常见也最成熟的 AI Agent 架构模式——一个 Agent 配备 LLM 大脑、记忆系统和工具集,独立完成从理解任务到交付结果的全流程。本章深入剖析单智能体的架构设计、核心组件协作、典型实现方案及局限性。


1. 单智能体核心架构

1.1 经典三层架构

语义 SVG 重绘单智能体架构

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
┌──────────────────────────────────────────────────────────────┐
│                      感知层(Perception)                     │
│   接收用户输入、环境反馈、工具返回值、多模态信号              │
└──────────────────────┬───────────────────────────────────────┘
                       ↓
┌──────────────────────────────────────────────────────────────┐
│                      决策层(Brain / LLM)                    │
│   理解意图 → 规划步骤 → 选择工具 → 生成行动 → 反思结果       │
└──────────────────────┬───────────────────────────────────────┘
                       ↓
┌──────────────────────────────────────────────────────────────┐
│                      执行层(Action)                         │
│   调用工具、执行代码、发送消息、操作环境                      │
└──────────────────────────────────────────────────────────────┘

1.2 Agent 运行循环

语义 SVG 重绘单智能体架构

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

用户输入 · 理解 & 规划 · 需要工具? · 是 · 选择 & 调用工…反思 & 重试
查看原文结构
┌──────────────┐
                    │  用户输入     │
                    └──────┬───────┘
                           ↓
                  ┌────────────────┐
                  │  理解 & 规划    │ ← 记忆系统提供上下文
                  └────────┬───────┘
                           ↓
                  ┌────────────────┐
            ┌──否─│  需要工具?     │
            │     └────────┬───────┘
            │              │ 是
            │              ↓
            │     ┌────────────────┐
            │     │  选择 & 调用工具 │
            │     └────────┬───────┘
            │              ↓
            │     ┌────────────────┐
            │     │  获取工具结果   │
            │     └────────┬───────┘
            │              ↓
            │     ┌────────────────┐
            └────→│  结果满意?     │
                  └───┬────────┬───┘
                   是 ↓        ↓ 否
              ┌──────────┐  ┌────────────┐
              │ 输出回答  │  │ 反思 & 重试 │ → 回到规划
              └──────────┘  └────────────┘

1.3 Agent 状态定义

PYTHON
from dataclasses import dataclass, field
from typing import List, Dict, Any, Optional

@dataclass
class AgentState:
    """Agent 在任一时刻的完整状态"""
    task: str                          # 原始任务描述
    messages: List[Dict] = field(default_factory=list)  # 对话历史
    plan: List[str] = field(default_factory=list)       # 当前计划
    current_step: int = 0              # 当前执行到第几步
    tool_results: List[Dict] = field(default_factory=list)  # 工具调用结果
    reflections: List[str] = field(default_factory=list)    # 反思记录
    final_answer: Optional[str] = None # 最终答案
    status: str = "running"            # running / success / failed
    retry_count: int = 0               # 重试次数

2. 核心组件详解

2.1 LLM 大脑

LLM 是 Agent 的决策中枢,负责:

职能说明
意图理解解析用户输入,提取真实需求
任务规划将复杂任务分解为可执行步骤
工具选择从可用工具中选择最合适的
参数生成为工具调用生成正确的参数
结果解读理解工具返回值,判断是否完成任务
反思修正失败时分析原因,调整策略
回答生成最终生成面向用户的回答

2.2 系统提示(System Prompt)

系统提示是 Agent 的"灵魂",定义了 Agent 的身份和行为准则:

TEXT
你是一个专业的数据分析助手。

## 身份
- 名称: DataAnalyst
- 专长: SQL 查询、数据可视化、统计分析
- 风格: 严谨、专业,给出结论时附带数据依据

## 可用工具
- query_database: 执行 SQL 查询
- create_chart: 生成数据图表
- run_python: 执行 Python 代码

## 行为准则
1. 先理解用户的分析需求,再选择数据源
2. 查询数据前先确认数据范围和口径
3. 给出结论时,必须附带关键数据支撑
4. 如果数据不足以得出结论,明确告知用户
5. 涉及敏感数据时,进行脱敏处理

## 输出格式
- 数据分析结论使用结构化格式
- 重要数字加粗标注
- 必要时给出可视化建议

2.3 工具注册与管理

语义 SVG 重绘单智能体架构 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文def gettooldescriptions(s…系统核心List Dict :"""获取所有工具的描述(传给 LLM)"""return工具、结果与反馈"name": tool.name,"description": tool.descr…
查看原文结构
def get_tool_descriptions(self) -> List[Dict]:
        """获取所有工具的描述(传给 LLM)"""
        return [
            {
                "name": tool.name,
                "description": tool.description,
                "parameters": tool.parameters
            }
            for tool in self.tools.values()
        ]
语义 SVG 重绘单智能体架构 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文def execute(self, name: s…系统核心Any:"""执行工具调用"""if name not in self.tools…工具、结果与反馈raise ToolNotFoundError(f…return self.tools name .e…
查看原文结构
def execute(self, name: str, params: Dict) -> Any:
        """执行工具调用"""
        if name not in self.tools:
            raise ToolNotFoundError(f"未知工具: {name}")
        return self.tools[name].execute(**params)

3. 主流单智能体实现

3.1 ReAct Agent

最基础的 Agent 模式,Thought → Action → Observation 循环:

PYTHON
def react_agent(task: str, tools: ToolRegistry, max_steps: int = 10):
    messages = [
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": task}
    ]
    
    for step in range(max_steps):
        response = llm.chat(messages, tools=tools.get_tool_descriptions())
        
        if response.has_tool_call():
            # 执行工具
            for tool_call in response.tool_calls:
                result = tools.execute(tool_call.name, tool_call.params)
                messages.append({"role": "tool", "content": str(result), 
                                 "tool_call_id": tool_call.id})
        else:
            # LLM 直接给出最终回答
            return response.content
    
    return "达到最大步数限制,未能完成任务"

3.2 Plan-and-Execute Agent

规划完整方案再执行,适合步骤明确的复杂任务:

PYTHON
def plan_and_execute(task: str, tools: ToolRegistry):
    # 阶段 1: 规划
    plan = llm.generate(f"""
        任务: {task}
        可用工具: {tools.get_tool_names()}
        请制定一个详细的执行计划,每步包含:要做什么、用哪个工具。
    """)
    
    steps = parse_plan(plan)  # 解析为步骤列表
    
    # 阶段 2: 逐步执行
    results = []
    for i, step in enumerate(steps):
        # 每步执行前,考虑之前的结果
        context = f"已完成步骤: {results}\n当前步骤: {step}"
        
        action = llm.generate(f"根据上下文执行当前步骤: {context}")
        
        if action.has_tool_call():
            result = tools.execute(action.tool_call.name, action.tool_call.params)
            results.append({"step": i, "action": action, "result": result})
        else:
            results.append({"step": i, "action": action, "result": action.content})
    
    # 阶段 3: 汇总结果
    final = llm.generate(f"任务: {task}\n执行结果: {results}\n请给出最终回答。")
    return final

3.3 Reflection Agent

加入自我反思循环,提高输出质量:

语义 SVG 重绘单智能体架构

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文执行流程:系统核心初始回答自我评审发现问题工具、结果与反馈修正再评审
查看原文结构
执行流程:
  初始回答 → 自我评审 → 发现问题 → 修正 → 再评审 → 满意 → 输出

4. Agent 框架实现对比

4.1 主流框架对比

框架Agent 模式优势劣势
LangChain AgentReAct / 自定义生态丰富,工具多抽象较重,调试复杂
LangGraph状态图流程可视化,支持循环学习曲线较陡
AutoGPT自主循环高度自主不稳定,容易跑偏
OpenAI Assistants内置 Agent简单易用封闭生态
Claude Tool Use原生工具调用调用精准仅限 Claude 模型
CrewAI多 Agent角色分工单 Agent 功能较弱

4.2 LangGraph 单智能体实现

语义 SVG 重绘单智能体架构 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

def reasonnode(stat…AgentState:"""推理节点:LLM 决定下一步行动…response = llm.chat…
查看原文结构
def reason_node(state: AgentState) -> AgentState:
    """推理节点:LLM 决定下一步行动"""
    response = llm.chat(state["messages"], tools=tool_descriptions)
语义 SVG 重绘单智能体架构 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文def toolnode(state: Agent…系统核心AgentState:"""工具执行节点"""lastmessage = state "mess…工具、结果与反馈results =for toolcall in lastmessa…
查看原文结构
def tool_node(state: AgentState) -> AgentState:
    """工具执行节点"""
    last_message = state["messages"][-1]
    results = []
    for tool_call in last_message.tool_calls:
        result = execute_tool(tool_call)
        results.append({"role": "tool", "content": str(result)})
    return {**state, "messages": state["messages"] + results, 
            "next_action": "reason"}

5. 单智能体的设计模式

5.1 常见设计模式

语义 SVG 重绘单智能体架构 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

模式 1: Router(路由器)用户请求分类路由到不同的处理逻辑适用: 请求类型多样的场景
查看原文结构
模式 1: Router(路由器)
  用户请求 → 分类 → 路由到不同的处理逻辑
  适用: 请求类型多样的场景
语义 SVG 重绘单智能体架构 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文模式 2: Chain(链式)系统核心输出适用: 流程固定、步骤明确的场景工具、结果与反馈
查看原文结构
模式 2: Chain(链式)
  A → B → C → 输出
  适用: 流程固定、步骤明确的场景
语义 SVG 重绘单智能体架构 · 结构 3

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
模式 3: Loop(循环)
  规划 → 执行 → 评估 → (不满意则回到规划)
  适用: 需要迭代优化的场景
语义 SVG 重绘单智能体架构 · 结构 4

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

模式 4: Fork-Join(分叉合…任务分解为子任务并行执行合并结果适用: 可并行的独立子任务
查看原文结构
模式 4: Fork-Join(分叉合并)
  任务 → 分解为子任务 → 并行执行 → 合并结果
  适用: 可并行的独立子任务
语义 SVG 重绘单智能体架构 · 结构 5

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文模式 5: Hierarchical(分层)系统核心高层 Agent 分配任务低层 Agent 执行适用: 复杂的多层级任务工具、结果与反馈
查看原文结构
模式 5: Hierarchical(分层)
  高层 Agent 分配任务 → 低层 Agent 执行
  适用: 复杂的多层级任务

5.2 上下文窗口管理

PYTHON
class ContextManager:
    """管理 Agent 的上下文窗口"""
    
    def __init__(self, max_tokens=8000):
        self.max_tokens = max_tokens
        self.system_prompt = ""
        self.messages = []
        self.tool_results = []
    
    def add_message(self, message):
        self.messages.append(message)
        self._trim_if_needed()
    
    def _trim_if_needed(self):
        """当上下文超过限制时进行裁剪"""
        total = count_tokens(self.system_prompt + self.messages + self.tool_results)
        
        if total <= self.max_tokens:
            return
        
        # 策略 1: 压缩旧的工具结果
        old_results = self.tool_results[:len(self.tool_results)//2]
        if old_results:
            summary = llm.summarize(old_results)
            self.tool_results = [summary] + self.tool_results[len(old_results):]
        
        # 策略 2: 裁剪早期对话
        while count_tokens(self.messages) > self.max_tokens * 0.6:
            self.messages.pop(0)  # 移除最早的消息

6. 单智能体的局限性

6.1 核心局限

局限说明应对方案
上下文瓶颈单次对话信息量有限外部记忆 + 摘要压缩
单点失败LLM 出错则整个任务失败重试 + 反思 + 降级策略
专业性不足一个 Agent 难以精通所有领域多 Agent 协作
并行效率低串行处理多个子任务并行工具调用 / 多 Agent
自我矛盾长对话中前后不一致结构化记忆 + 事实核查

6.2 何时该用单 Agent vs 多 Agent

TEXT
适合单 Agent:
✓ 任务相对单一,领域集中
✓ 步骤之间有强依赖关系
✓ 不需要并行处理
✓ 交互性强,需要持续对话

适合多 Agent:
✓ 任务涉及多个不同领域
✓ 子任务之间相互独立,可并行
✓ 需要多角色协作(如审稿人、作者、编辑)
✓ 单个 Agent 上下文装不下所有信息

7. 本章小结

维度要点
核心架构感知 → 决策 → 执行,循环直到完成
关键组件LLM 大脑 + 系统提示 + 工具集 + 记忆
主流模式ReAct / Plan-and-Execute / Reflection
实现框架LangGraph 状态图最灵活
设计模式Router / Chain / Loop / Fork-Join
主要局限上下文瓶颈、单点失败、专业性不足

相关章节


延伸阅读

  • LangChain Documentation: "Agents". docs.langchain.com
  • Chase, H. (2023). "LangGraph: Building Stateful, Multi-Agent Applications". blog.langchain.dev
  • Wang, L. et al. (2024). "A Survey on Large Language Model based Autonomous Agents". Frontiers of Computer Science