SuperAPI AI 工具集

constrained-decoding

编程与开发

查看项目

更新于 10-16 05:47

技能介绍

用途:该技能用于让语言模型产出严格结构化的输出,供代码解析(JSON、DSL、命令等)。核心思路是使用约束解码(constrained decoding),而不是仅在提示词中要求“请输出合法 JSON”。

主要能力:在生成时于 logits 与 softmax 之间介入,依据 JSON Schema、GBNF 语法或简单选项列表推导出的自动机,确定每一步合法 token,将非法 token 的 logit 压到极低值,使其概率为 0、无法被采样。这样不修改模型或训练,却让非法输出从“不太可能”变为“不可能”。

使用方式:推荐两阶段模式。第一阶段为自由推理,用非约束文本展开思路;第二阶段才输出结构化结果,且仅对 final_answer 字段施加格式约束,reasoning 字段保持自由文本。整体结构示例为 reasoning 加 final_answer。该技能假设存在编排器或中间件:有模式时使用提供方的结构化输出或 Outlines、GBNF 等约束解码库;有语法时使用兼容语法的后端(如 llama.cpp、vLLM + Outlines);仅有选项列表时限制为这些取值。

适用场景:输出会被代码解析、用于工具或 API 调用、写入数据库、ETL 数据管道、自动化动作(CI/CD、智能体)等。仅面向人类、不被自动解析的输出可保持自由文本。

限制与反模式:不应仅靠提示词获取合法 JSON,不应依赖正则或事后校验“修复”输出,也不应无强约束地重试直到可解析;这些只能降低错误率,无法保证结构 100% 有效。具体实现细节与依赖暂未提供。