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 流程编排 → 多步骤任务的自动化编排
相关推荐
Fireworks13 分钟前
深入vue3源码解读 -- 1、响应式的基础概念
前端
程序员黑豆13 分钟前
JDK 下载安装与配置详细教程
java·前端·ai编程
hunterandroid18 分钟前
文件存储:内部存储与外部存储
前端
VidDown25 分钟前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
NorBugs1 小时前
飞机大战 Low 版 (Made in AI)
前端
angerdream1 小时前
Android手把手编写儿童手机远程监控App之agentweb如何实现全屏
前端
星栈1 小时前
10 分钟跑起第一个 Dioxus 应用:`dx` CLI、`rsx!` 和热更新好不好用
前端·rust·前端框架
奋斗吧程序媛2 小时前
补充一个小知识点:有关@click.native
前端·vue.js
触底反弹2 小时前
🚀 手把手用 HTML5 Canvas 从零打造飞机大战游戏,代码全开源!
前端·javascript·canvas
DJ斯特拉2 小时前
axios快速使用
开发语言·前端·javascript