llama.cpp b10934重构JSON Schema处理:引入common_chat_schema内部表示
llama.cpp发布b10934构建版本,核心变更是为JSON Schema实现common_schema内部表示,并将json-schema-to-grammar迁移到该表示上。
AI解读:llama.cpp的这次改动把工具调用里的JSON Schema解析和转换做了一次底层重整:先建一套统一的schema内部表示,再让json-schema-to-grammar基于它工作。对使用者来说,最直接的变化是工具参数为空、只有 $ref、或者长度约束这类以前容易被特殊照顾的写法,现在有更明确的处理规则。
真正受影响的是在本地跑模型、依赖GBNF语法约束模型输出JSON的开发者。以前schema到语法的转换逻辑比较分散,现在中间多了一层可复用的表示,后续修bug或扩展类型支持不用再直接动语法生成那一层。
注意这只是构建版本仓库里的提交记录,来源没有给出性能数据或兼容性承诺。如果你的提示词和工具定义里大量使用了空参数、$ref或minLength/maxLength这类约束,值得在升级后跑一遍自己的schema测试集,而不是假定行为完全不变。
llama.cpp发布b10934构建版本,标题为“common : implement common_schema internal representation for JSON schemas (#28736)”。
该变更为JSON Schema引入common_schema内部表示,并实现了JSON schema优化器。
变更把json-schema-to-grammar重构为使用common_schema,并改用common_trie。
提交记录显示,common/schema实现了类型/kind解析;枚举被移入common_schema并新增type枚举。
改动删除了common_chat_tool_parameters,简化了schema解析,并让common_schema贯穿json-schema-to-grammar构建器。
重命名与测试调整
common_schema_parse被重命名为common_schema_from_json;common_schema_builder的parse_* 方法被重命名为build_*。
最后common_schema又被重命名为common_chat_schema。
测试方面,修复了test-json-schema中gcc的dangling-reference警告,schema标签改为const char * 以满足gcc,并减少了测试用例数量。
提交还补充了针对空 $ref的测试,删除了死代码,更新了文档。
- "{}" 现在对json_object也意味着任意对象
- 恢复 (min|max)Length隐含string类型
- 修复may_be_string
- 正确处理空的工具参数
按平台划分的构建产物
该发布附带各平台预编译产物。macOS/iOS包括macOS Apple Silicon (arm64)、macOS Intel (x64) 和iOS XCFramework;其中启用KleidiAI的macOS Apple Silicon版本标记为DISABLED,链接指向PR #23780。
Linux产物包括Ubuntu x64 (CPU)、Ubuntu arm64 (CPU)、Ubuntu s390x (CPU),以及Ubuntu x64/arm64的Vulkan、x64的ROCm 10.0、OpenVINO 2026.3.1、SYCL FP32和SYCL FP16版本。
Android提供arm64 (CPU) 产物。
- Windows产物包括x64/arm64 CPU、arm64 OpenCL Adreno、x64 CUDA 12、x64 CUDA 13、arm64 CUDA 13、x64 Vulkan、x64 OpenVINO、x64 SYCL、x64 ROCm 10.0,以及对应的CUDA 12.4、13.3、13.4 DLL包
- openEuler相关产物标记为DISABLED,链接指向PR #23705,原列表包含x86 (310p)、x86 (910b, ACL Graph)、aarch64 (310p)、aarch64 (910b, ACL Graph)
- 另提供UI产物llama-b10934-ui.tar.gz