llama.cpp b12229修复server顶层JSON schema被忽略的问题
该项目称,OpenAI兼容的chat completions端点此前只在schema嵌套在response_format.json_schema.schema内时才生效;直接传response_format.schema会被静默忽略,生成不受约束。该版本接受顶层写法,并让嵌套包装在存在时优先。
AI解读:llama.cpp发布b12229,server组件修复response_format中json_schema的处理:顶层schema(response_format.schema)现在会被接受,不再被静默忽略。
按提交说明,此前只有嵌套在response_format.json_schema.schema里的schema才会被应用;README记载的顶层写法被忽略时,生成不受约束。该修复对应issue #10732。
优先级规则改为按是否存在json_schema键来判断:只要response_format含json_schema,就采用包装内的schema。原因是空schema {} 本身合法,旧逻辑会误让顶层schema覆盖包装内显式的 {}。
同一提交还为非法response_format类型的错误信息补上json_schema说明,在README记录OpenAI包装写法,并新增顶层写法与优先级两方面的测试用例。
b12229同时提供macOS、iOS、Linux、Android、Windows等多平台预编译包,涵盖CUDA 12/13、Vulkan、ROCm、SYCL、OpenVINO等后端;macOS KleidiAI版本和openEuler构建标注为DISABLED。
llama.cpp发布b12229版本,其server组件修复了OpenAI兼容chat completions端点对response_format中JSON schema的处理。
提交说明称,此前该端点只在schema嵌套于response_format.json_schema.schema时应用约束;客户端按README文档直接传入response_format.schema时,schema被静默忽略,生成过程不受约束。此次改动接受顶层写法,对应issue #10732。
顶层schema与包装内schema的优先级
提交说明描述了优先级判定方式的变更:现在依据response_format是否存在json_schema键来选择schema来源,不再在解析出的包装schema为空时回退。
原因是空schema {} 是合法值,代表任意JSON值;旧检查会让顶层schema覆盖包装内显式的 {}。顶层schema的读取也改用json_value(),与该函数其余部分保持一致。
- 含json_schema键时,以包装内schema为准
- 顶层response_format.schema直接生效,不再被静默忽略
- 为顶层写法与优先级各新增测试用例
错误信息与文档同步更新
同一提交在response_format类型非法的错误信息中补充了json_schema的说明,并在README中记录OpenAI的包装写法。提交由linsen共同署名。
发布产物
b12229的发布页列出macOS(arm64、x64)、iOS XCFramework、Linux(x64、arm64、s390x,含CUDA 12.8/13.5、Vulkan、ROCm 10.0、OpenVINO、SYCL)、Android、Windows及UI的预编译包。
- macOS Apple Silicon的KleidiAI启用版本标注为DISABLED
- openEuler构建标注为DISABLED