Amazon Bedrock 已为全部 Anthropic Claude 模型上线 structured outputs,覆盖 bedrock-runtime 与 bedrock-mantle 两个端点:靠 constrained decoding 在 token 生成阶段即强制输出符合 JSON Schema 的响应,免去解析、重试与后处理。机制包含 JSON Schema output format 与 strict tool use:前者经 output_config.format 指定结构(InvokeModel 的 Boto3 请求或 Messages API 皆可),后者在工具定义中设 strict: true,确保 Mantle 上 agent 的工具参数与 schema 完全一致。请求先按 JSON Schema Draft 2020-12 子集校验并编译 grammar,首次稍慢,产物按账号缓存 24 小时,仅改 schema 结构才失效。官方称响应类型安全、必填字段必在、只生成 schema 内字段以省 token 降成本,功能支持批量推理、跨 Region 推理与流式,Haiku 5.5 适合分类、摘要等高频任务。使用须为所有 object 设 additionalProperties: false;递归 schema、外部 $ref、数值与字符串约束不受支持;每次响应要查 stop_reason 以应对安全拒答与 max_tokens 截断。功能现已正式可用。
为什么重要 数据抽取与 agent 管线可删掉解析、校验与重试代码;输出 token 变少,批处理与跨区域推理同样可用适合 在 Bedrock 上用 Claude 做抽取与 agent 的工程师
| 对比项 | 之前 / 基线 | 现在 / 本方案 | |
|---|---|---|---|
| 输出格式 | 概率性文本 | 确定性 JSON生成阶段约束 | |
| 解析代码 | JSON.parse 异常与重试 | 直接解析,无需校验类型与必填字段已强制 | |
| 输出 token | 可能含 schema 外字段 | 仅 schema 定义字段原文称可降低推理成本 |
$ bedrock_runtime.invoke_model(modelId="global.anthropic.claude-sonnet-5-5", body=json.dumps({..., "output_config": {"format": {"type": "json_schema", "schema": schema}}}))
$ if body["stop_reason"] == "end_turn": ...
$ tools=[{"name": "get_weather", "strict": True, "input_schema": {...}}]
Amazon Bedrock 为全部 Anthropic Claude 模型提供结构化输出,覆盖 bedrock-runtime 与 bedrock-mantle 两个端点。