主题
01 · 什么是 Agent?
普通聊天:用户问题 → 模型文本。
Agent:用户目标 → 模型决定下一步 → 程序执行工具 → 模型看到结果 → 决定继续或结束。
用一张动态图理解
💬用户提问
🧠LLM 思考
🛠调用工具
👀观察结果
✅最终回答
第 1 轮循环
agent.log
- 用户:「帮我查下北京天气,并换算成华氏度」
- 思考:我需要先知道北京的天气 → 决定调用 get_weather
- 行动:get_weather(city="北京")
- 观察:{"temp_c": 22, "desc": "晴"}
- 思考:拿到了摄氏度,还需要换算 → 决定调用 calculator
- 行动:calculator(expr="22 * 9 / 5 + 32")
- 观察:71.6
- 思考:信息已经足够,不需要再调用工具了
- 回答:北京今天晴,22°C(约 71.6°F),很适合出门 🌤
图里的「思考」是为了教学而写的决策说明,不是读取模型隐藏思维链。程序真正看到的是工具调用、工具返回结果和最终回答。
三个组成部分
- 模型:根据当前上下文决定回答还是调用工具。
- 工具:应用允许模型使用的操作,通常就是函数或 API。
- 运行器:负责循环、参数校验、权限控制、超时和终止。
大模型不会自己执行你的 Python 函数。它生成的是「调用请求」,运行器才真正执行。
Agent 和 Workflow 的区别
| Workflow | Agent | |
|---|---|---|
| 谁决定路径 | 开发者提前规定 | 模型在允许范围内选择 |
| 示例 | 检索 → 总结 → 邮件草稿 | 模型决定搜什么、是否继续搜 |
| 优点 | 易控制、易测试 | 灵活处理开放任务 |
| 风险 | 无法应对未设计分支 | 可能绕路、成本高、不收敛 |
两者可以组合。不是越自主越好:付款、发布、删除等环节适合确定性流程和人工确认,不能只交给模型自由决定。
ReAct 是什么?
ReAct 将推理和行动交替进行:看到当前状态 → 选择工具 → 根据结果调整下一步。现代工具调用 API 已经把「行动」结构化,不必用正则解析模型输出的 Action: 文本。
也有「先规划再执行」「固定工作流 + 局部 Agent」等模式。先掌握这个最小循环,再讨论复杂设计。
一句话识别常见误解
- 加一个 system Prompt 并不自动成为完整 Agent。
- 接入 RAG 不一定是 Agent;固定检索再回答也可以是普通工作流。
- 多 Agent 不一定更强,可能只是更多调用和协调成本。
- 「完成了」不等于真的完成;检查工具结果、文件、测试等证据。
自测
「先分类,再按类别发送固定模板」是哪种?「让模型自己选择搜索词并决定是否补充搜索」呢?
前者是 Workflow,后者具有 Agent 特征。开发时先判断任务是否真的需要自主决策,再选架构。