AI AGENT从零到一
M2 · 单 Agent 落地完整课程90 分钟

AI Agents for Beginners · Lesson 04

工具使用:让 Agent 安全地接触世界

从工具契约、选择、执行、观察、错误与状态出发,完整走通一个可预测、可回放的工具调用 Trace。

Learning objectives

完成后你应能证明
目标描述的是可观察行为,不是“了解”或“看完”。
  1. 01定义工具使用设计模式,并判断它适合动态检索、代码执行或工作流行动中的哪些场景。
  2. 02设计包含名称、用途、输入、输出、错误与权限的窄工具契约。
  3. 03解释目标、决策、调用、观察与停止五步 Trace,并处理非法输入和无结果。
  4. 04根据外部效果调整验证、审批、审计与最小权限。

01 · Recall

旧知回忆:先回答,再看示例
模型生成文本与 Agent 调用工具之间,最关键的系统差异是什么?
  1. 从权限、输入校验、失败和可观测性四个角度回答。

完整示例与概念桥接

本课讲解

工具把文本系统变成行动系统

没有工具时,模型只能基于输入生成内容。有了工具,Agent 可以检索动态信息、执行代码、调用业务系统或改变外部世界。能力变大,责任也随之变大。

官方课程把工具模式的构件归纳为:

  • 工具 schema 或契约;
  • 决定何时调用的执行逻辑;
  • 管理用户、模型、工具消息的系统;
  • 连接真实能力的集成层;
  • 错误处理与输入验证;
  • 维护多轮一致性的状态。

本课不调用任何外部 API,而是用本地课程索引模拟整个生命周期。

一个好工具先是好接口

search_lessons 的契约可以写成:

名称:search_lessons
用途:在允许的课程索引中按关键词查找条目
输入:query,非空字符串
输出:lessonId、title、path 的列表
失败:INVALID_QUERY 或空列表
权限:只读课程索引

工具不负责“回答用户”。它只完成一个窄任务。这样做有四个好处:

  1. 输入可以在执行前验证;
  2. 输出可以独立测试;
  3. 权限容易理解;
  4. 失败不会和自然语言答案混在一起。

如果工具同时搜索、总结、发送邮件并修改记录,它很难被安全授权,也很难定位哪一步出错。

五阶段 Trace

1. 目标

“找出工具使用课,并给一个十分钟练习。”完成需要课程证据和练习。

2. 决策

当前状态里没有相关课程路径。Agent 查看允许工具,发现课程索引搜索是最小且足够的动作。

3. 调用

执行层验证 query,调用工具并记录结构化输入。模型提出调用不等于工具一定会执行;权限与校验位于两者之间。

4. 观察

工具返回 04 的标题与路径。观察被写回状态,同时保留空结果、错误与耗时。

5. 停止

课程已定位,练习可以根据工具契约生成。继续调用不会增加必要证据,因此停止。

这五步必须可回放。Trace 展示系统事件和决策依据,不依赖“模型说自己做过什么”。

错误是正常分支

至少处理三类结果:

  • 输入无效:执行前拒绝,告诉决策层怎样修正;
  • 合法但无命中:返回空结果,允许改写查询;
  • 工具失败:保留错误类型,按策略重试、降级或请求人工输入。

绝不能把失败字符串当作成功内容,也不能因为无结果就编造一个课程路径。

工具治理取决于外部效果

课程搜索是只读、可重复、低影响动作,可以自动执行。发送邮件会对外沟通,转账会改变资产,删除会破坏数据。影响越高,越需要:

  • 更窄的权限;
  • 更严格的输入与目标校验;
  • 明确预览;
  • 人工确认;
  • 幂等或撤回设计;
  • 可审计记录。

工具数量不是 Agent 能力的分数。只授予完成当前目标所需的最小集合。

本课完成定义

你应能从零写出一个工具契约;阅读五阶段 Trace;解释为什么某个调用合法或越权;并让 Course Helper 使用两个本地只读工具完成任务。

本课依据锁定版本的工具使用设计模式重构。

02 · Worked example

完整示例检查点
阅读 search_lessons 工具契约,找出名称、输入、输出和失败。
  1. 工具只接受 query,并返回课程 id、标题和本地路径。
  2. 它不能打开网页、写文件或生成答案。
  • 能说明窄工具为何更易测试和授权

Lesson Studio

预测、Trace、实验与迁移

所有活动可自由进入
在看到结果前做决定
预测会暴露你的心智模型,比被动阅读答案更容易形成可迁移记忆。

用户问“哪一课讲工具调用?”,Agent 下一步应该做什么?

用户问“哪一课讲工具调用?”,Agent 下一步应该做什么?

浏览器 Python 实验

Python · Module Worker

配置一个确定性的课程搜索工具并修复两个错误输入。
输入必须是非空 query。 无命中返回空列表和可处理状态,而不是伪造课程。 调用后把结果写入本轮状态。
course_helper.pyTab 缩进,按 Esc 后再按 Tab 离开编辑器

Source record

本课上游记录
路径
04-tool-use/README.md
Commit
b7f34fd824767162f484e03cc500e23c0966372f
许可
MIT
查看官方原文