Claude Code 学习站

CCA-F 练习题库· Prompt Engineering & Structured Output

在 Claude API 中,作为输出控制机制,Structured Outputs(带 JSON schema 的 output_config.format)与(strict)tool use 之间的正确区别是什么?

  1. AStructured Outputs 只能与 web_search、code_execution 这类服务端工具一起使用,因为 output_config.format 是由运行这些工具的沙箱施加的;而 tool use 只作用于最终响应消息,因此 client 工具的参数不在这两种机制的管辖范围内,只能由你自己的代码校验。
  2. B它们是同一功能的两个名字,在任何用例中都可以互换使用,因为文档把两者都归在 structured outputs 之下,而且把同一份 JSON schema 交给其中任何一个都能得到相同结果。
  3. CStructured Outputs 用各工具的 input_schema 校验工具调用的参数,而 tool use 约束 Claude 返回的最终文本响应的格式,所以当你需要拿回符合 schema 的 JSON 时就该用 tool use。
  4. DStructured Outputs 约束 Claude 最终响应消息的形状,而 tool use 校验 Claude 在调用某个函数或动作时传入的参数;简而言之,structured outputs 控制 Claude 返回什么,tool use 控制 Claude 调用什么。

正确答案:D

解析

  • D正确,并且是唯一正确的选择。通过 output_config.format 使用的 Structured Outputs 会把 Claude 最终响应消息的形状约束到某个 JSON schema(非常适合抽取、分类以及 API 形态的响应),而严格模式的 tool use(在工具定义上设置 strict: true)保证 Claude 传入工具调用的参数严格通过该工具 input_schema 的校验。所以 Structured Outputs 管的是 Claude 返回什么,(strict)tool use 管的是 Claude 调用什么。
  • C把两者弄反了;
  • B是错的(它们是不同的机制——事实上文档中两者都被归入更宽泛的“structured outputs”范畴之下,但作用对象不同);
  • A是错的(Structured Outputs 并不局限于服务端工具,tool use 也不局限于最终响应)。注意:实质性的区分是准确的;答案中援引某个“文档里的助记说法”属于修辞性表述,而非逐字见于文档的原话,但这并不影响正确性。

延伸阅读

本题为本站自有原创练习题,非任何官方考试内容;解析对照 Anthropic 公开文档撰写, 如与最新文档不符请以官方为准。想在限时环境下检验水平,可参加 模拟考(题目与本页题库不重叠)。