1. 从结构化响应契约开始
只有请求本身已要求结构化输出时,响应修复才有用。 适用场景:response_format.type = "json_object"- JSON Schema 风格的输出
- 多个调用方共用的稳定对象结构
2. 在合适的层级启用插件
可以在以下三个位置启用response-healing:
- 工作区默认插件策略
- 预设插件配置
- 请求中的
plugins
- 工作区
- 预设
- 请求
3. 限定模型输出
请求的输出结构越明确,修复效果越好。 建议:- 返回一个对象,避免输出多个无关的数据块
- 明确列出必需键
- 尽可能使用确定性 temperature
- 不要要求模型在 JSON 负载之外添加解释文字
4. 了解响应修复的能力与限制
当前修复流程是确定性的,仅适用于非流式请求。流式请求会完全跳过响应修复。 它可以修复:- JSON 外层的 Markdown 代码围栏
- 尾随逗号
- 可以安全补齐的闭合符
- 其他部分仍可恢复的对象中未加引号的键
strict 模式。该模式只会从代码围栏或周围文本中提取已有效的 JSON,不会执行范围更广的语法修复。
如果请求使用 JSON Schema 风格输出,修复流程还会在重写之前验证恢复后的负载。当前验证器涵盖一些常见约束,包括:
- 必需键
- 基本标量类型和容器类型
- 枚举值和 const 值
- 数组边界和
uniqueItems - 字符串长度、正则表达式,以及
email、uri、uuid、date-time等常见格式 - 数值边界和
multipleOf - 对象属性数量限制以及
additionalProperties: false
- 补造缺失的语义字段
- 猜测业务值
- 将任意文本改写成有效数据
5. 确认插件确实运行
修复运行时,请求详情中应包含插件执行信息。 检查:- 插件 ID
- 是否尝试了转换
- 负载是否发生变化
- 响应无法恢复时的失败原因
- 如果预期修复生效,确认请求是否为非流式
6. 区分解析器问题与内容问题
如果修复没有帮助,请判断失败属于哪一类:- JSON 格式错误,但结构仍接近预期
- JSON 符合架构,但字段内容不正确
- 返回的是普通文本而不是 JSON
- 令牌上限太低,导致输出被截断
7. 逐步推出
- 在一个结构化输出稳定的预设中启用修复
- 查看日志中的插件执行元数据
- 确认恢复后的负载符合预期架构
- 日志表现正常后,再推广到类似预设
8. 选择合适的模式
- 如果工作流需要有限的语法清理,例如删除尾随逗号或为未加引号的键补上引号,请使用
safe。 - 如果工作流只应在移除外层包装后接受原本就有效的 JSON,请使用
strict。 - 检查请求详情以确认实际运行的模式。