从生成到行动
普通的大模型调用是一次性的:输入提示,输出文本。很多任务无法靠一次生成完成——需要查资料、运行代码、调用外部系统,还要根据中间结果调整下一步。智能体(Agent) 把大模型放在控制器的位置,让它循环地观察环境、做决策、执行动作,直到任务完成。
与 RAG 相比,RAG 是“检索一次、生成一次”的固定流程,智能体则可以自行决定何时检索、检索什么、是否需要继续调用其他工具。
基本组成
一个典型的语言模型智能体包含四部分:
- 画像(Profile):角色设定、目标、可用资源和行为约束,通常写在系统提示中;
- 记忆(Memory):短期记忆保存当前任务的对话和中间结果,长期记忆存放跨会话的知识或经验,可借助向量库检索;
- 规划(Planning):把目标拆成子任务,决定执行顺序,并在失败时调整;
- 行动(Action):调用工具与外部环境交互,例如搜索、数据库、代码解释器、文件系统和业务 API。
执行过程是一个循环:
观察(Observation)→ 思考(Thought)→ 行动(Action)→ 新的观察 → ...循环在任务完成、达到步数上限或无法继续时终止。模型本身只负责“思考和选择动作”,真正的执行由外部工具完成。
ReAct:推理与行动交替
ReAct(Reasoning + Acting)是最常见的智能体范式:让模型在每一步先写出简短推理,再选择一个动作,然后读取工具返回的观察结果,继续下一轮。
问题:2024 年诺贝尔物理学奖得主是谁?他所在机构今年发表了多少篇论文?
Thought:需要先确认获奖者。Action:search("2024 诺贝尔物理学奖 得主")Observation:John Hopfield 和 Geoffrey Hinton 获奖。Thought:需要确认 Hinton 的所属机构。Action:search("Geoffrey Hinton 所属大学")Observation:多伦多大学。Thought:需要统计该机构今年的论文数。Action:search("University of Toronto 2024 publications count")...ReAct 的关键在于把推理和外部反馈交替起来。思维链只在模型内部续写,一旦某一步的事实假设错了,后面会沿着错误继续;ReAct 每一步都从环境取回真实观察,可以及时纠正。
工具调用
工具通常以函数的形式提供:每个工具有名称、用途描述和参数模式(schema)。模型根据任务选择工具并生成参数,运行时负责校验和执行,再把结果作为观察返回。
{ "name": "search_flights", "description": "查询指定日期和路线的航班", "parameters": { "from": {"type": "string"}, "to": {"type": "string"}, "date": {"type": "string"} }}工具设计直接影响智能体的可靠性:
- 描述清晰:说明工具做什么、什么时候用、参数格式和限制;
- 粒度合适:太细碎会增加调用次数,太粗大会让模型难以正确传参;
- 返回结构化结果:便于模型解析,也便于程序校验;
- 失败可恢复:返回明确的错误信息,而不是静默失败或返回大段无关内容;
- 权限最小化:只暴露完成任务所需的操作。
常见的工具有搜索引擎、代码解释器、数据库查询、文件读写、浏览器和各类业务 API。工具越多,选择难度和误用风险越大,通常需要按任务裁剪工具集。
规划与反思
任务分解
复杂任务可以先规划再执行。Plan-and-Execute 让模型先列出步骤,再逐步执行;与每一步都重新决策的 ReAct 相比,它更全局,但计划可能因中途信息变化而失效,需要在执行中修订。
另一种做法是层次化分解:高层负责拆分目标,低层子智能体负责具体步骤。任务越长、依赖越多,显式规划越有价值。
反思
反思(Reflection)让模型检查自己的输出或执行轨迹,指出问题并重试:
- 执行任务,得到结果或失败信息;
- 让模型评价结果是否满足要求,分析失败原因;
- 根据反思修改计划或参数,再次尝试;
- 保留有效的经验,供后续任务使用。
Reflexion 是这一类方法的代表:它把失败经验写入记忆,在后续尝试中作为提示的一部分。反思能提高成功率,但会增加调用次数,也可能陷入反复自我否定。
多智能体
当任务可以按角色拆分时,可以用多个智能体协作:
- 分工:规划者、执行者、审查者各司其职;
- 辩论:多个智能体给出不同答案,通过讨论或投票收敛;
- 流水线:上游智能体的输出作为下游的输入。
多智能体适合职责边界清晰的复杂流程,但通信成本高,错误也会沿链路传播。多数场景下,一个带工具的智能体加清晰的流程控制更简单可靠。
评价与局限
智能体的评价不能只看最终答案,还要看过程:
- 任务成功率:端到端是否完成目标;
- 轨迹质量:步骤是否必要、工具调用是否正确、是否绕路;
- 成本与延迟:调用次数、token 消耗、总耗时;
- 安全性:是否越权、是否执行了不可逆操作。
主要局限:
- 误差累积:长程任务中每一步的小错误会放大,十几步后可能完全偏离目标;
- 工具误用:模型可能编造参数、选错工具,或把工具返回的内容当作指令;
- 提示注入:网页、文档、邮件等外部内容可能包含恶意指令,检索或浏览工具会把它们带入上下文,必须与可信指令隔离;
- 不可逆操作:下单、转账、删除数据等动作一旦执行难以撤销,需要人工确认或沙箱限制;
- 评测困难:真实环境状态多、路径不唯一,难以用固定答案衡量。
因此生产系统通常设置步数上限、超时、权限控制和人工审批,并对关键动作做日志记录。
相关阅读
- 提示与工具描述的设计:提示工程
- 推理结构:从思维链到思维图:CoT、ToT 与 GoT
- 外部知识检索:RAG
- 智能体能力评价:大语言模型的评价
- 推理服务的延迟与吞吐:大模型推理部署