2026 年 10 月 3 日——llama.cpp 于 10 月 2 日正式合并决策模型支持(PR #29818),llama-server 新增 /v1/systemone 端点:开发者发送一段状态(文本、JSON 或截图)与若干带类型的问题,模型单次前向传播即返回各选项的概率,全程不生成文本。接口沿用 TypeSafe Jev 模型引入的 System One 格式,现有客户端仅需更换 base URL 即可完成迁移。ggml-org 同步开放五款官方 GGUF 决策模型,在 RTX PRO 6000 显卡上单次决策延迟为 3-43 毫秒,其中 27B 的 OpenJev 支持图像输入。
据 ggml-org 发布在 Hugging Face 的官方博客《New in llama.cpp: Decision Models》(2026 年 10 月 2 日),决策模型面向路由、分类、打分、真假判断等结构化决策场景,与传统文本生成模型形成互补。另据 Ollama 仓库合并记录,Ollama 已于 9 月 28 日先行合并同名 /v1/systemone 接口,本地推理生态的两个主流运行时已先后采用同一端点格式。
1. System One 格式:不生成文本,只输出结构化决策
决策模型的用法与对话模型不同:请求中包含 state(状态,可以是文本、JSON 对象或截图)和 questions(若干带类型的问题),模型对每个问题独立评估,单次前向传播即返回结构化答案与概率分布。据 TypeSafe 官方文档,System One 模型的所有问题在同一请求中并行评估,增加问题数量几乎不增加响应时间,且每个问题独立评估、互不干扰。
System One 格式共定义三种问题类型,据 TypeSafe 官方文档整理如下:
| 问题类型 | 用途 | 返回字段 |
|---|---|---|
| choice | 从给定选项中选择一个 | choice、probabilities、confidence |
| score | 按评分标准对状态打分 | score、probabilities、confidence |
| noul | 判断某个陈述为真的概率 | noul(0-1 数值) |
以下为 PR #29818 测试用例中的请求示例(客服工单场景,同一状态同时判断用户意图、紧急程度与情绪等级):
{
"state": {
"message": "Hi, I was charged twice for my order #4471 and I want a refund.",
"plan": "pro",
"order": { "id": 4471, "items": ["phone case", "charger"] }
},
"questions": {
"intent": {
"type": "choice",
"instructions": "What does the customer want?",
"criteria": {
"refund": "wants money back",
"cancel": "wants to cancel an order",
"track": "wants to know where an order is",
"other": "anything else"
}
},
"urgent": {
"type": "noul",
"instructions": "Does this need a human within the hour?"
},
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["calm", "mildly annoyed", "annoyed", "angry"]
}
}
}
System One 概念由 TypeSafe AI 于 2026 年 9 月 15 日发布的 Jev 模型带入公众视野。据 TypeSafe 官方文档,Jev 是该公司的旗舰模型与第一个 System One 模型;据媒体报道,TypeSafe AI 由前 OpenAI 研究员创立,Jev 发布帖曾登上 Hacker News 头条。
2. /v1/systemone 端点的实现与兼容性
据 GitHub 合并记录,PR #29818 由 llama.cpp 维护者 ngxson 提交,2026 年 10 月 1 日创建、10 月 2 日合并,改动 35 个文件、新增 2139 行代码,带有 highlight 标签。PR 披露了实现思路:所谓决策模型本质上是传统 embedding 模型(BERT、Qwen 等)的包装,底层推理设施与现有 embedding 模型一致,因此 libllama 核心改动极小,主要工作是服务器侧的 server_decision_context 模块——它根据 GGUF 元数据中的 {arch}.decision.type 字段切换输入输出处理逻辑。该 PR 同时声明大部分代码由 AI 编写、设计由作者本人负责。
对开发者的兼容性影响集中在两点:
- 客户端零改动迁移:
/v1/systemone端点沿用 TypeSafe Jev 引入的 System One 格式,现有客户端(含 TypeSafe 官方 SDK)只需将 base URL 指向 llama-server 即可切换到本地推理。 - 一条命令启动:官方提供预转换 GGUF,直接以
-hf参数加载。获取 llama.cpp 最新版可访问 llama.app,或运行llama update更新。
llama serve -hf ggml-org/Kev-4B-GGUF
除文本与 JSON 外,本次支持还包括视觉输入(需搭配支持图像的模型,vision projector 自动下载)与并行共享提示词前缀(仅因果模型可用)。官方博客同时介绍了 router mode:在单台服务器上挂载多个决策模型,按请求需要自动加载。
推理精度方面,PR 测试将 llama.cpp 输出与参考实现逐项对照:五款模型的概率最大偏差介于 0.00018(OpenJev)与 0.022(Julia-1)之间,其余三款在 0.001 量级;除 lev 因分词器差异导致输入 token 数不同(576 对 1194)外,其余模型输入 token 数与参考实现完全一致。
官方博客还给出三条实测建议:为选项补充描述文本可显著提升路由准确度;置信度阈值因模型而异,切换模型需重新标定;多个问题合并到一次请求只处理一次状态,比拆分请求更高效。
3. 五款官方 GGUF 模型规格
官方提供的五款模型定位从轻量到多模态全覆盖,规格据 Hugging Face 官方博客整理,延迟为 RTX PRO 6000 显卡上每个问题的中位数:
| 模型 | 参数量 | 底座模型 | 支持语言 | 图像输入 | 许可 | 每问题中位延迟 |
|---|---|---|---|---|---|---|
| Julia-1 | 144M | mmBERT-small | 50+ 种语言 | 不支持 | Apache 2.0 | 3 毫秒 |
| Laya | 421M | ModernBERT-large | 英语 | 不支持 | Apache 2.0 | 5 毫秒 |
| Kev-4B | 4B | Qwen3.5-4B-Base | 英语 | 不支持 | Apache 2.0 | 12 毫秒 |
| lev | 4B | Qwen3.5-4B | 英语 | 不支持 | Apache 2.0 | 36 毫秒 |
| OpenJev | 27B | Qwen3.8-27B | 英/德/法/印地/中/日 | 支持 | CC BY-NC 4.0 | 43 毫秒 |
注 1:Julia-1、Laya、Kev-4B、lev 四款采用 Apache 2.0 许可,OpenJev 采用 CC BY-NC 4.0 许可,后者禁止商用,选用时需注意许可差异。
注 2:延迟数据来自官方博客,测试硬件为 RTX PRO 6000,实际延迟随硬件、量化档位与问题数量变化。
注 3:五款模型均支持多种量化档位,低参数量模型(如 144M 的 Julia-1)可在纯 CPU 环境运行。
4. 生态跟进:Ollama 已先行合并同名接口
据 Ollama 仓库合并记录,PR #18606「feat: add System One scoring API」已于 2026 年 9 月 28 日合并,比 llama.cpp 早四天。该实现新增 POST /v1/systemone 端点,支持本地 Nimble 与 Tev 两款决策模型:GGUF 格式经 llama-server 推理,safetensors 格式经 MLX 推理;接口仅支持文本输入,提示词上限 2048 token,超限请求直接拒绝而不截断。
llama.cpp 方面,官方博客预告下一步将支持 Cloudflare 的 Clef 决策模型(该模型在 PR 编写时尚未发布满 2 小时,已被列为后续跟进项)。中文社区跟进速度较快,据搜索结果,9 月末已有基于 llama.cpp 的 Laya 模型微调与本地部署教程出现。
从 Ollama 与 llama.cpp 在一周内先后采用同一端点格式来看,/v1/systemone 正在成为本地部署决策模型的通用接口;对使用者而言,决策模型的获取与部署门槛已降低到与普通 GGUF 模型一致的水平。
举手提问