← 课程库
推理 · 评测 · 冲刺模块十 · 智能体工具使用代码14 分钟

工具使用:检索、调用与 JSON schema 校验

让模型正确地调用外部工具

学完这节你能:
  • 理解工具调用的流程
  • 掌握 JSON 参数与 schema 校验
  • 知道调用失败怎么处理

工具让智能体突破模型本身能力:搜索、计算器、代码执行、数据库、API。核心是让模型输出「结构化的调用指令」,程序解析后真正执行。

  • 工具检索:从工具库里选出最匹配当前任务的工具(工具多时需检索)。
  • 生成调用:模型按 schema 输出工具名 + JSON 参数。
  • 解析与校验:json.loads 解析,按参数 schema 校验类型/必填/取值,防止模型编错参数。
  • 执行与回填:调用工具,把结果喂回模型继续推理。
解析并校验工具调用参数
import json
call = json.loads(model_output)          # {'tool':'weather','args':{'city':'北京'}}
assert call['tool'] in TOOL_REGISTRY      # 工具存在
args = call['args']
assert isinstance(args.get('city'), str)  # 参数类型/必填校验(schema)
result = TOOL_REGISTRY[call['tool']](**args)   # 执行

⚠️ 校验是安全与稳定的关键:模型可能输出非法 JSON、缺参数、类型错、调用不存在的工具。必须做 schema 校验 + 出错反馈让模型重试,不能盲目执行。

自测智能体工具调用中,对模型输出的 JSON 参数做 schema 校验,主要为了:
// 带走一句话

工具调用=检索工具→模型输出 JSON 调用→json.loads 解析+schema 校验→执行回填;校验是安全稳定的关键。

独立练习

做到这些,才算完成本节

  1. 为一个真实工具定义 schema,并测试缺参、额外字段、错误类型和越权参数。
  2. 设置调用超时与最大循环次数,证明失败时能够退出而不是无限重试。
  3. 在本地运行代码,打印每个关键张量的 shape。
  4. 关闭示例后从空文件重写核心部分,并补一个异常或边界测试。
学习记录

记录本节阅读进度

建议先独立回答自测。读完记录不等于已经掌握。

继续下一课
← 上一课
记忆机制:显式记忆与隐式记忆
下一课 →
多智能体:通信、协作与人机协同

学完不要急着赶进度:去练习自测,或完成对应的阶段实验