开源llama.cpp Releases·原文 2026年9月13日

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

信息来源

llama.cpp Releases原始来源