结构化输出与工具调用协议

结构化输出与工具调用协议:让模型结果经过语法、schema 和业务三层校验后才进入程序控制流,通过架构、轨迹和故障重放完成验收。

学习目标

  • 能解释“结构化输出与工具调用协议”如何让模型结果经过语法、schema 和业务三层校验后才进入程序控制流
  • 能区分结构化输出、JSON Schema、语法校验、业务校验、修复预算,并指出控制权、数据与副作用边界
  • 能固定输入与版本,沿以下证据定位首个分叉:schema 版本、原始响应、解析错误、字段错误、业务错误、修复次数与下游调用数
  • 能注入“从自由文本中正则截取 JSON 后直接执行,忽略缺字段、额外字段和业务边界”,完成阻断、恢复、复位和同输入重放

来源、课程编排与适用边界

“结构化输出与工具调用协议”以Anthropic 公开全文《Building effective agents》为总纲,并用Claude Platform《How tool use works》核对本单元机制;涉及 MCP 的控制权边界再由MCP 2025-06-18 官方规范交叉检查。

这不是 Anthropic 出版的“19 章教材”。平台把公开文章、官方工具文档与协议规范重组为 19 个应用单元;下列 152 个节点是站内课程地图,不冒充原文目录。正文、代码、图表、实验和练习均为独立教学重写;产品接口、模型行为或协议版本变化时必须重新验证。

本单元的八个课程坐标

  • 结构化输出与工具调用协议:这是“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”的第 1 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 先打个比方:这是“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”的第 2 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 第一个概念:为什么非要结构化:这是“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”的第 3 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 第二个概念:JSON 模式与 schema,约束的是两层:这是“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”的第 4 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 动手看:一次工具调用,消息是怎么来回走的:这是“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”的第 5 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 一段段把它写出来:这是“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”的第 6 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 第一段:定义一个带 schema 的结构化请求:这是“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”的第 7 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
  • 第二段:解析 assistant 返回的 toolcalls:这是“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”的第 8 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。

术语与运行合同

本页不变量是:只有完全验证的对象可以触发工具、数据库写入或后续自动化。任何“成功”结论都要保存以下证据:schema 版本、原始响应、解析错误、字段错误、业务错误、修复次数与下游调用数,模型生成的计划或自信不能替代环境事实。

关键机制与可推翻实验

合法 JSON 仍可能不合 schema

解析成功不代表字段齐全、类型正确或没有多余属性。

动手验证:分别输入截断、缺字段和额外字段样本,保存每层错误。

schema 正确仍可能业务非法

结束时间早于开始时间、金额越权等规则需要确定性业务代码。

动手验证:构造格式正确但越权的对象,确认业务层拒绝。

修复必须有限且留原文

自动纠错可能掩盖模型回归;每轮都要保留原始响应与错误。

动手验证:连续返回两次坏对象,验证达到预算后结构化失败。

失败对象零副作用

不能先执行部分字段再补校验,否则会留下不可回滚状态。

动手验证:监听工具注册表,确认所有失败样本的调用数为零。

先预测,再操作三类证据

分步1 / 3

1. 架构与复杂度边界

在“结构化输出与工具调用协议”中切换简单基线、受控工作流与自主循环,先预测“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”在哪个阶段需要增加控制权,再比较延迟、成本、可观测性和自主性。

Architecture decision laboratory

结构化输出与工具调用协议

让模型结果经过语法、schema 和业务三层校验后才进入程序控制流

复杂度档位

不变量:只有完全验证的对象可以触发工具、数据库写入或后续自动化

受控工作流:只激活能够由收益证明的阶段1生成请求2语法解析3schema 校验4业务校验5受控消费蓝色表示当前方案承担的责任;虚线阶段仍留在系统边界外。关键证据:schema 版本…
自主性46
延迟52
成本48
可观测78

最小可运行实现

function decode(raw: string, schema: Schema) {
  const parsed = JSON.parse(stripFence(raw));
  const value = schema.parse(parsed);
  validateBusinessRules(value);
  return value;
}
 
const value = decode(rawResponse, requestSchema);
await dispatchOnlyValidated(value);

这段切片只暴露“让模型结果经过语法、schema 和业务三层校验后才进入程序控制流”的最小运行合同。交付版本还要补齐超时、密钥隔离、结构化日志、幂等和批量评测;缺少schema 版本、原始响应、解析错误、字段错误、业务错误、修复次数与下游调用数时,代码能运行也不代表本章结论成立。

练习与答案

练习

问题 1:最小证明。 怎样用最少样本证明“只有完全验证的对象可以触发工具、数据库写入或后续自动化”?

问题 2:课程覆盖。 结构化输出与工具调用协议、先打个比方、第一个概念:为什么非要结构化、第二个概念:JSON 模式与 schema,约束的是两层、动手看:一次工具调用,消息是怎么来回走的、一段段把它写出来、第一段:定义一个带 schema 的结构化请求、第二段:解析 assistant 返回的 toolcalls如何进入可操作验证?

问题 3:恢复闭环。 怎样证明“从自由文本中正则截取 JSON 后直接执行,忽略缺字段、额外字段和业务边界”已经修复?

本章回顾

  • “结构化输出与工具调用协议”的主问题是让模型结果经过语法、schema 和业务三层校验后才进入程序控制流。
  • 核心不变量是只有完全验证的对象可以触发工具、数据库写入或后续自动化。
  • 首要反例是从自由文本中正则截取 JSON 后直接执行,忽略缺字段、额外字段和业务边界。
  • 最小证据包包含schema 版本、原始响应、解析错误、字段错误、业务错误、修复次数与下游调用数。

名词解释

本章出现的专业名词,用大白话再讲一遍。

结构化输出

按机器可验证合同生成的结果。在“结构化输出与工具调用协议”中必须能按以下证据重新定位:schema 版本、原始响应、解析错误、字段错误、业务错误、修复次数与下游调用数。

JSON Schema

描述对象字段、类型和约束的声明式规范。在“结构化输出与工具调用协议”中必须能按以下证据重新定位:schema 版本、原始响应、解析错误、字段错误、业务错误、修复次数与下游调用数。

语法校验

确认文本能否被 JSON 解析器接受。在“结构化输出与工具调用协议”中必须能按以下证据重新定位:schema 版本、原始响应、解析错误、字段错误、业务错误、修复次数与下游调用数。

业务校验

检查跨字段、权限和真实资源等领域规则。在“结构化输出与工具调用协议”中必须能按以下证据重新定位:schema 版本、原始响应、解析错误、字段错误、业务错误、修复次数与下游调用数。

修复预算

允许纠错请求消耗的次数、时间和 token 上限。在“结构化输出与工具调用协议”中必须能按以下证据重新定位:schema 版本、原始响应、解析错误、字段错误、业务错误、修复次数与下游调用数。

阅读导航

← 上下文窗口:预算、压缩与裁剪 · Function Calling 原理 →

讨论

评论区加载中…