智能体与工具调用
让模型不再只是回答问题,而是能查资料、调接口、跑代码——并在每一步的结果之后再决定下一步
定义
智能体是由大模型驱动的系统,它能自主地把一个目标拆解为多步行动,通过调用外部工具(函数、API、代码解释器、浏览器)与外部世界交互,并根据每一步的反馈决定下一步。工具调用是其核心机制:模型输出结构化的调用请求,宿主程序执行后再把结果返回给模型。
直观理解
没有工具的模型像一位只能凭记忆作答的顾问;智能体则是给这位顾问配了电话、计算器、档案柜和能跑腿的助手。顾问负责判断“该做什么、先做什么”,工具负责“真的去做”。风险也随之而来:一个能打电话、能改文件的顾问,一旦判断失误,破坏力远大于一个只会说错话的顾问。
智能体的核心循环:观察、推理、选择并执行工具、再评估结果,直到任务完成或触发上限
智能体常见失败原因的分布(示意量级):工具使用与循环控制合计占一半以上,说明可靠的工具接口与终止条件比“更聪明”更关键
- 工具参数或格式错误 · 34%
- 陷入循环或无法终止 · 24%
- 上下文或记忆丢失 · 20%
- 规划错误或目标偏离 · 17%
- 权限或安全拦截 · 5%
工作原理
- 01
工具定义与结构化输出
每个工具都有一份描述:名称、用途、参数结构与类型。模型不再生成自由文本,而是输出一段符合约定的结构化调用(常为 JSON)。描述写得含糊,模型就会误用或漏用工具——工具的“说明书”本身就是提示工程的一部分。
- 02
观察-思考-行动循环
以 ReAct 为代表的范式让模型反复经历:观察当前状态、推理下一步、选择一个行动、读取执行结果,再回到观察。循环终止于模型判断任务完成,或触发步数、时间与预算的上限。
- 03
记忆与状态管理
长任务会产生远超上下文窗口的历史。工作记忆保存当前步骤的中间结果,长期记忆把关键结论写入外部存储待后续检索。何时压缩、何时丢弃、何时写回,直接决定智能体能否稳定跑完一个长流程。
- 04
错误恢复与安全边界
工具会失败、参数会错、模型会绕圈。健壮的智能体需要重试、回退、换工具与自我纠错,并对不可逆操作(转账、删除、发信)设置人工确认与权限校验——自主性的每一分提升,都应在护栏上补回相应的分寸。
应用场景
- 代码助手:读文件、改代码、跑测试并根据报错继续修
- 研究助理:检索、阅读、抽取要点并汇总成带出处的报告
- 客服工单处理:查询订单、调用退款接口、更新工单状态
- 多智能体协作:规划者、执行者与审查者分工,互相校验
常见误区
- 更高的自主性意味着更大的风险面。一个能执行不可逆操作的智能体,其判断失误的代价是真实世界的,而非仅仅是一句错话。
- 长任务中的错误会累积。每一步的小偏差在几十步之后可能滚成完全偏离的目标,而模型往往察觉不到自己早已跑偏。
- 上下文窗口是硬约束。超出窗口的历史会被截断或遗忘,若不显式设计压缩与检索,智能体在长流程中会“忘记”自己此前的决定。
关键术语
- 函数调用
- 模型输出结构化参数以触发外部函数
- ReAct
- 把推理与行动交替进行的提示范式
- 工具
- 智能体可调用的一个外部能力
- 护栏
- 限制智能体行为范围的检查与约束