4.1 智能体核心:Agent、Sub-Agent、ReAct、规划执行

如果说 Function Calling 是让 LLM 学会「动手」,那 Agent(智能体) 就是让 LLM 学会「自主思考和行动」。Agent 不只是回答问题------它能拆解任务、制定计划、调用工具、根据结果调整策略,像一个初级员工一样完成复杂的多步工作。

📑 目录

  • [Agent 到底是什么](#Agent 到底是什么)
  • [Agent vs 传统程序 vs 纯 LLM](#Agent vs 传统程序 vs 纯 LLM)
  • [ReAct 范式:推理 + 行动循环](#ReAct 范式:推理 + 行动循环)
  • [Sub-Agent:大权下放给小 Agent](#Sub-Agent:大权下放给小 Agent)
  • 规划与执行分离

Agent 到底是什么

一句话定义

一个能感知环境 → 自主决策 → 执行行动 → 观察结果 → 调整策略的自治系统。LLM 作为「大脑」,工具作为「手脚」,记忆作为「经验」,组合在一起就是 Agent。

本质大白话

复制代码
传统程序(if-else):
用户:帮我订一张去北京的机票
程序:if (意图 == "订票") then call_book_api()
      固定流程,写死逻辑,遇到变通就崩

纯 LLM(对话):
用户:帮我订一张去北京的机票
LLM:「好的!您可以从携程、去哪儿...」(只会说话不会做)

Agent:
用户:帮我订一张去北京的机票
① 思考:需要知道日期、出发地、舱位偏好
② 行动:ask_user("请问哪天出发?从哪里出发?")
③ 观察用户回复:「明天上海出发,经济舱」
④ 思考:信息够了,调用机票查询 API
⑤ 行动:call_flight_api(date="明天", from="上海", to="北京")
⑥ 观察返回结果:找到 3 个航班
⑦ 思考:按价格排序推荐给用户
⑧ 输出:整理后的航班对比表
→ 像个真人助理一样完成任务!

Agent vs 传统程序 vs 纯 LLM

维度 传统程序 纯 LLM Agent
决策方式 if-else / 规则引擎 概率生成 LLM 推理 + 工具调用
灵活性 差(改需求要改代码) 好(但只动口) 很好(能思考 + 动手)
可靠性 高(确定性行为) 低(可能幻觉) 中等(有兜底机制)
复杂任务 难以处理 无法处理 核心优势
典型场景 表单验证/规则计算 对话/创作 自动化工作流
python 复制代码
# 最简 Agent 实现(ReAct 循环)
def agent_loop(user_task, tools, max_steps=10):
    messages = [{"role": "system", "content": "你是一个有帮助的助手。"}]
    messages.append({"role": "user", "content": user_task})
    
    for step in range(max_steps):
        # LLM 决策:思考 + 选择行动
        response = llm_with_tools(messages, tools)
        msg = response.choices[0].message
        
        # 情况A:直接回答(任务完成)
        if not msg.tool_calls:
            return msg.content
        
        # 情况B:需要调用工具
        for tc in msg.tool_calls:
            result = execute_tool(tc.function.name, json.loads(tc.function.arguments))
            # 把工具结果喂回 LLM 继续思考
            messages.append({"role": "tool", "content": str(result),
                           "tool_call_id": tc.id})
    
    return "达到最大步骤限制"

ReAct 范式:推理 + 行动循环

一句话定义

Reasoning + Acting = ReAct。让 LLM 以 Thought(思考)→ Action(行动)→ Observation(观察) 的循环方式工作,交替进行推理和行动。

ReAct 循环图示

复制代码
┌──────────────────┐
│    User Task     │
│  「分析XX公司的   │
│   财务状况」      │
└────────┬─────────┘
         ↓
┌──────────────────┐
│   Thought ①      │
│ 我需要查这家公司 │
│ 的财报数据        │
└────────┬─────────┘
         ↓ Action: search_finance(公司名)
┌──────────────────┐
│ Observation ①    │
│ 找到2024年报:营收  │
│ 100亿,利润10亿   │
└────────┬─────────┘
         ↓
┌──────────────────┐
│   Thought ②      │
│ 还需要同行业对比  │
└────────┬─────────┘
         ↓ Action: search_industry_benchmark(行业)
┌──────────────────┐
│ Observation ②    │
│ 行业平均利润率8%  │
└────────┬─────────┘
         ↓
┌──────────────────┐
│   Thought ③      │
│ 数据够了,综合分析│
└────────┬─────────┘
         ↓ Final Answer
┌──────────────────┐
│  📊 分析报告      │ ← 完成!
└──────────────────┘

❌ 常见误区

  • ❌ Agent 就是带 Function Calling 的 LLM --- Agent 还包含记忆、规划、多轮决策等完整架构
  • ❌ Agent 能完全自动运行 --- 目前仍需人类监督和兜底,尤其是涉及外部操作时
  • ❌ Agent 越智能越好 --- 复杂 Agent 的调试成本很高,够用就好

Sub-Agent:大权下放给小 Agent

一句话定义

将一个大任务拆解后,分配给多个专门的「子 Agent」各自独立处理,最后汇总结果。就像项目经理把工作分给不同专长的组员。

复制代码
主 Agent(项目经理):
「帮我做一份竞品分析报告」
       ↓ 分解任务
┌─────────────┬─────────────┬─────────────┐
│ Sub-Agent A  │ Sub-Agent B  │ Sub-Agent C  │
│ 信息搜集员   │ 数据分析师   │ 报告撰写员   │
│             │             │             │
│ 搜索各竞品  │ 对比功能/价格│ 整合所有    │
│ 官网和资料  │ 和市场份额   │ 内容成报告   │
└─────────────┴─────────────┴─────────────┘
       ↓ 结果汇总
主 Agent:审查质量 → 补充完善 → 输出最终报告

规划与执行分离

核心思想

不要让 Agent 一边想一边做。先让它花时间​制定完整计划 ​,确认无误后再​逐步执行​。大幅减少走弯路和无效操作。

复制代码
边想边做的问题:
Step 1: 查了 A 数据 → Step 2: 发现还需要 B → Step 3: 去查 B
        → Step 4: 发现 Step 1 查的 A 用错了方向...
        → 浪费了前面几步的时间和 Token

先规划后执行:
Phase 1 - 规划(只思考不动手):
  「我计划分 5 步完成:1.收集产品信息 2.对比价格
    3.分析用户评价 4.总结优缺点 5.给出建议」
  用户确认或修改计划

Phase 2 - 执行(严格按计划):
  Step 1 → Step 2 → Step 3 → Step 4 → Step 5
  每一步都有明确目标,不走弯路

📊 本节知识地图

复制代码
┌──────────────────────────────────────────────────┐
│              Agent 智能体核心概念                │
│                                                  │
│   ┌─────────┐     ┌─────────────────────────┐   │
│   │   LLM   │     │       Tools(手脚)       │   │
│   │ 大脑    │←──→│  API / DB / 搜索 / 文件   │   │
│   └────┬────┘     └─────────────────────────┘   │
│        │                                        │
│        │  ReAct 循环                             │
│        ↓          Thought→Action→Observation     │
│   ┌───────────────────────────────────┐         │
│   │  Memory(4.2 详解)               │         │
│   │  Workflow(4.3 详解)             │         │
│   └───────────────────────────────────┘         │
│                                                  │
│  Agent = LLM大脑 + Tools手脚 + Memory经验 + Plan  │
└──────────────────────────────────────────────────┘

🔗 关联推荐

  • 📖 3.1 工具调用 → Function Calling 是 Agent 的基础能力
  • 🔜 4.2 记忆机制 → Agent 如何「记住」之前的操作
  • 🔜 4.3 流程编排 → 多步骤任务的自动化编排
相关推荐
Highcharts.js12 分钟前
用Highcharts开发动态主从图表|双图联动的时间序列图表示例
javascript·数据库·信息可视化·highcharts·图表开发·动态图表
牛奔16 分钟前
mise 管理多版本 Go 项目
开发语言·前端·chrome·后端·golang
志尊宝43 分钟前
Vue3 零基础每日笔记(076):防抖节流的正确使用——搜索框、按钮防重复提交、滚动监听
javascript·vue.js·笔记
敲代码的小小酥1 小时前
Agent 运行机制全景:从工具调用到沙箱隔离
ai·agent
能源革命1 小时前
Vue 网格拖拽布局组件全景指南:7 大方案深度对比
前端·javascript·vue.js
雷工笔记1 小时前
KingFusion 驾驶舱开发:ECharts小时模板实现动态时间窗口
javascript
鱼饼Y1 小时前
AI Agent 驾驭指南
agent·ai编程
BlackStar_L1 小时前
第五章 Coding Agent 与通用 Agent
大模型·llm·agent
知野小兔2 小时前
JavaScript中Map和Set详解
javascript
PC2005_cloud2 小时前
AI 汉字漂移实录:它为什么总把「学习」写成日语「学習」
前端·后端