Amazon Bedrock 为 Anthropic Claude 模型提供结构化输出:JSON 严格符合 Schema

AI 前沿Amazon Bedrock为 Anthrop…openstarry.com

结构化输出是什么

Amazon Bedrock 现在为所有 Anthropic Claude 模型提供结构化输出,模型可用的 bedrock-runtime 与 bedrock-mantle 两个端点都已支持。无论用 Boto3 调用 bedrock-runtime API,还是用 Messages API 调用 bedrock-mantle 端点,都能直接收到符合既定结构的 JSON 响应,不再需要自定义解析、重试逻辑或后处理。

它有两条互补路径:一是 JSON Schema 输出格式,用来控制模型响应结构,适合数据抽取、报表生成与 API 响应;二是严格工具调用(strict tool use),用来按 schema 校验工具参数,适合智能体工作流、函数调用与多步自动化。

原理:约束解码与语法编译缓存

核心机制是约束解码,也就是在 token 生成过程中就强制 JSON schema,而不是生成完成后再做校验或修补。模型不会产生违反 schema 的 token,输出格式因此从概率性变为确定性。

一次请求背后的流程分几步。首先是 schema 校验,按所支持的 JSON Schema Draft 2020-12 子集校验请求中的 JSON schema。接着是语法编译,对新 schema 编译一份语法产物,因此该 schema 的首次请求可能稍慢。最后是缓存与约束生成,编译后的语法被缓存 24 小时,缓存按账号隔离,后续同一 schema 的请求开销很小,模型输出的 token 构成符合 schema 的合法 JSON。

缓存行为有一条细节值得记住:改动 JSON schema 的结构会使缓存失效并触发重新编译,只改 name 或 description 字段则不影响已缓存的语法。这是对缓存失效条件的直接描述。

与上一代做法的差异

结构化输出带来的变化,集中在约束位置的前移。以往要拿到可用的结构化 JSON,需要靠提示词约束,再配合自定义解析、重试逻辑与后处理;输出是概率性的,JSON.parse() 报错与解析异常要用额外代码兜底。现在约束发生在生成时,模型不产生违规 token。

由此有几项直接结果:每次响应都是合法 JSON,不必再处理解析异常;响应类型安全,字段类型被强制,必填字段始终存在;因为输出必然符合 schema,无需为 schema 违规重试,集成更可靠;输出被限制在 schema 定义的字段内,减少输出 token 数量,在高并发场景下可能降低推理成本。这些性质让结构化输出具备生产可用性,可以规模化部署而不额外增加 schema 校验代码。

适用场景

有三类模式最能减少错误处理复杂度。

数据抽取:把发票、合同、邮件、转录文本中的字段抽取为始终匹配 schema 的 JSON,直接写入数据库或 CRM。行业示例包括从财报与合规文档中抽取全部必填字段、把临床笔记解析为电子健康记录、为产品目录做一致且经过校验的富化。

可靠的智能体工具调用:在生成时按 schema 校验工具参数,避免多步智能体工作流因输入格式错误而中断。

规模化分类:按意图、优先级与情绪对工单、线索或内容分类,用于路由、审核与评估。

其他例子包括合同关键条款、当事方与义务分析,以及智能客服工单路由中意图、情绪、实体与应用数据模型保持一致。对于摘要、压缩、数据库查询与分类这类快速且重复的工作负载,Claude Haiku 5.5 被描述为可以稳定承担。

如何用起来、上手建议与边界

接入方式上,bedrock-runtime 端点的 InvokeModel API 接收 Anthropic 原生请求体,schema 放在 output_config.format 中,并且要以 JSON 对象形式传入,而不是 JSON 字符串。工具

以 AI 之力,筑未来之境

现在注册,立即免费获赠 200 次大模型调用权益

免费注册 →