如果说 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 流程编排 → 多步骤任务的自动化编排