[AI/模型] Kev:可自训自跑的开源「Jev 式决策模型」家族

0 序

https://huggingface.co/spaces/jaredpalmer/kev
image

1 概述

产品介绍

产品定位

Kev 是一套「Jev 式」的小型决策模型家族,构建在 Qwen3.5/3.8 开源基座之上,权重、训练代码、评估数据全部开放,开发者可以自训、自调、自部署;它的 API 与 TypeSafe 的 System One 完全兼容,可直接替换 Jev 作为本地实现。

  • Slogan:"Small Jev-like decision models you can train and run yourself."(小型、类似 Jev 的决策模型,你可以自己训练并运行。)

诞生的背景与原因

  • 新品类刚出现:2026-09-15 TypeSafe AI 发布 Jev,首次提出「System One Models(系统一模型)」品类——不生成文字、直接返回结构化、带校准概率的决策。9-21 Jev 全面开放,开发者涌入。Kev 正是瞄准这一"刚公开不到一周"的模型类别,把它开源化、本地化。
  • 作者背景:Jared Palmer 现任 Cognition 工程副总裁,是 Turborepo(2021 年被 Vercel 收购)、Formik、Vercel v0、AI SDK 等知名开发者基础设施的缔造者。他一贯的路径是"把大产品背后的一层基础设施重新打包成开发者可以运行、修改、扩展的东西"——Kev 正是这一路径对 Jev 的复刻。
  • 用编程智能体协作开发:Kev 由 Devin(Cognition 的编程智能体)协助构建,并把整个训练配方、评估、实验日志全部公开,示范"一名有经验的开发者 + 编程智能体 + 租赁 GPU 也能产出可用的开源实现"。

解决的核心问题

  • 把"软件工作流里埋着的小型语义判断"(路由工单、选择升级路径、给客户愤怒程度打分、判断消息是否紧急)做成专门的决策模型接口,而不是让通用 LLM 先生成一整段文字再由程序解析。
  • 给开发者提供可本地运行、权重开放、可针对私有数据微调的开源选项,避免把决策环节的数据与推理全部交给闭源托管 API。
  • 一次调用内对同一份 state 并行评估多个互相隔离的问题,返回概率分布供程序按阈值路由。

发展历程

时间 事件
2026-09-15 TypeSafe AI 发布 Jev 与「System One Model」品类(Early Access)
2026-09-20 Jared Palmer 发布 Qwen3.5 版 Kev,形成 0.8B / 4B / 9B 三模型家族;随后补充 27B(Qwen3.8)
2026-09-21 Jev 全面开放;Kev 在 GitHub 已吸引约 1,300 星
2026-09-24 Kev 发布 research-archive 归档(完整实验日志);Kev-4B 上线 OpenRouter
2026-09-21~27 多篇技术媒体与审计报道 Kev 与 Jev 的校准对比(见参考文献)

历史代际:早期原型 Kev-0.5B 用 Qwen2.5-0.5B;第一代正式家族用 Qwen3(0.6B / 4B / 8B);当前主推 Qwen3.5/3.8 代(0.8B / 4B / 9B / 27B)。

主要功能

  1. 三种决策原语(与 Jev 一致):
    • noul:对一句话判断"成立与否",返回 0~1 概率;
    • choice:在 1~255 个候选中选一个,返回完整概率分布与 confidence;
    • score:在有序等级(2~10 级)上给出加权分数、legend、概率与 confidence。
  2. 一次编码、多问题并行:同一份 state 带多道题一次请求;题目共享文本但互相不可见(隔离)。
  3. 校准概率:每个 checkpoint 内置在留出数据上拟合的温度(0.8B=2.35 / 4B=2.41 / 9B=2.30 / 27B=1.38),加载时作用于 pointer head。
  4. 与 TypeSafe SDK 即插即用:TypeSafe Python SDK 不改代码即可指向本地 Kev 服务。
  5. 自训 / 微调:kev.train + JSONL 标注数据 + --init_from 从已发布 checkpoint 续训;kev-finetune skill 在 Modal 上自动跑完"找问题→标注/生成→微调→拟合温度→评分→部署→销毁"整条闭环。
  6. 一键部署 HTTPS 端点:Modal 部署,空闲缩到零,无闲置成本。
  7. 浏览器试玩:Hugging Face Space 直接体验 Kev-4B / Kev-0.8B。

核心优势

  • 开源、可复现:Apache-2.0,权重 + LoRA 适配器 + pointer head + 训练脚本 + 冻结评估数据 + 模型卡 + 实验日志全部公开。
  • 本地自部署与数据可控:可在笔记本 / 自建 GPU 上跑,适合对数据安全、本地部署有要求的场景。
  • 成本透明且极低:Qwen3.5 实验总账单约 95 美元 H100 时长 + 0.03 美元 Jev API 调用;Kev-4B 一次微调训练约 1 美元(H100)。
  • 校准可检验:自带拟合温度、可靠性曲线与 Brier 指标;校准误差在新源上从 0.106 降到 0.042,高置信错误从 8.7% 降到 4.0%(接近 Jev 的 3.7%)。
  • 精度接近 Jev:Kev-27B 在新源数据上 0.848 vs Jev 0.857,仅差 1 个点;在 11 类新源类别中有 9 类与 Jev 持平或反超。
  • 工程化完备:文档齐全、CI 校验 claims、API 与官方 SDK 一致性测试、Playground 与象棋 Demo。

主要短板 (必读)

  • 顶层排名能力不如 Jev:5% 误差预算下 Kev 只能自动化约 0.45~0.57 的决策,Jev 为 0.70。
  • 知识类问题受基座限制:MMLU 上 Kev-9B 0.74、Kev-27B 0.84,Jev 0.90;MMLU-Pro 0.52 vs 0.84。
  • Mac 端延迟回退:Qwen3.5 代在 Apple M5 上 5 道题约 721~779ms,旧 Qwen3 代仅约 136~174ms;27B 无 Mac 路径(需 80GB 显存)。
  • 长上下文未覆盖训练:训练最多 384 token 的 state;长文档上小模型精度明显下降(9B 在 1k~6k token 混杂文本中 0.556,27B 0.833)。
  • 单温度校准:无法重排置信度;选项顺序变化仍可能改变答案。
  • 微调可能回退基座单项能力:日期算术曾被微调破坏(需 KEV_DATE_FACTS=1 恢复)。

局限性

  • 校准非万能:单温度是"分布内"拟合;审计显示"决策所依赖的规则不在输入里"时,任何这类模型(含 Jev)都会"自信地犯错"——必须在自己的数据上做阈值回放。
  • 非受控对比:作者明言不知道 Jev 的训练数据,因此 Kev vs Jev 的分数不是严格架构对照。
  • Kev-27B 基座未知:基于 Qwen 的 post-trained 版本,其训练数据未知。
  • Qwen3.5/3.8 为混合架构:Gated DeltaNet 递归层不遵守注意力掩码,Kev 用"每问独立行"保证隔离,但选项内部仍可能互相影响。
  • 无法复现托管 Jev 本体:README 声明"未用 Jev 输出训练",但开源权重无法证明训练链路零上游残留;它是 Jev 接口的"开源实现",不是对 Jev 的逐字节复刻。

适用场景

  • 客服工单路由、升级/转人工判断、客户情绪评分(README 的官方示例)。
  • Agent 中的高频决策点:工具选择、任务终止、失败重试、安全检查、内容审核。
  • 邮件/文本大规模批量分类打分(低成本、可本地)。
  • 对数据敏感、要求本地部署与私有微调的企业(客服意图识别、银行/保险工单分派、销售线索优先级)。
  • 想研究"决策模型"原理、需要可复现实验的学生与工程师。

同类竞品

竞品 形态 与 Kev 关系
Jev / TypeSafe AI 闭源托管 API 被复刻的"正主",接口兼容、精度天花板更高
通用 LLM + 提示词 任意文本生成 可做同样判断,但慢、贵、需解析、未校准
传统分类器/意图识别/排序模型 专用监督模型 每任务需重训;Kev/Jev 有语义泛化、可提示词定义新任务
国内开源微调复刻(如其他 Qwen LoRA 决策模型) 开源 趋势上可能出现更多同思路产品

核心对比:Kev vs Jev

维度 Kev(jaredpalmer/kev) Jev(TypeSafe AI)
形态 开源,Apache-2.0 闭源,托管 API(invite-only 间歇)
发布时间 Qwen3.5 版 2026-09-20 2026-09-15 发布 / 09-21 全面开放
定位 可自训自跑的开源"Jev 式"决策模型 首个商业 "System One Model"
基座/架构 Qwen3.5/3.8 开源基座 + rank-16 LoRA + pointer head(全公开) 未披露(新架构 + 并行 sampler + RLCD)
权重 可下载(0.8B/4B/9B/27B) 不可下载
训练方法 交叉熵微调(decision-v7 数据集) RLCD(校准决策强化学习)
决策原语 noul / choice / score noul / choice / score(同接口)
API/SDK 兼容 TypeSafe System One,SDK 直连 官方 SDK + HTTP API
新源精度 27B=0.848 0.857
可自动化比例(5%误差预算) 0.45~0.57 0.70
知识类(MMLU) 9B 0.74 / 27B 0.84 0.90
价格 自部署;微调约 $1/次(H100) | 输入 $0.042/百万 token,输出免费
速度(声明) H100 上 Kev-4B 6 题 18.1ms;Mac 偏慢 宣称比 LLM 快 193.6x、便宜 444.6x
部署 本地 / Modal HTTPS / HF Space 仅托管 API
可复现/可审计 全公开(配方、评估、日志) 黑盒,校准指标未公开
主要短板 顶层排名与知识类弱于 Jev;Mac 延迟 黑盒、成本/数据受控、校准非普适(有审计质疑)
适用 数据敏感、本地化、私有微调、学习研究 追求最高判断质量、免运维、批量高频

发展趋势

  • 开源社区活跃度:项目发布一周内即达约 606~1,300 星、296 commits、77 forks(不同时点快照),属高热度新兴品类项目;README 持续更新,research-archive 完整归档,社区讨论(dev.to、Reddit 转载)活跃。
  • 迭代方向(作者公开工作清单):为"无法从给定证据回答"的问题加均匀目标训练样本、改进日期处理、覆盖断言式指令、加快 Mac 端服务(MLX 后端)。
  • 总结:Kev 把"托管决策模型"迅速变成可自训自跑的开放基础设施,正在引领"判断类任务专用模型"走向开源与本地化,是 Jev 生态中最重要的开源实现。

2 工作原理与架构

概念术语

  • System One Model(系统一模型):TypeSafe 提出的新品类,取自卡尼曼《思考,快与慢》的 System 1(快速直觉判断)。指"不生成文字、直接返回结构化概率决策"的模型。
  • RLCD(Reinforcement Learning for Calibrated Decisions,校准决策强化学习):TypeSafe 的后训练方法;区别于 RLHF(优化人类偏好)与 RLVR(优化可验证结果),目标是让"模型给出的概率与真实发生频率相符"。
  • 原语(Primitive):noul(是否)、choice(选择)、score(评分)三类最小决策单元。
  • LoRA 适配器:低秩适配器,Kev 用 rank-16 在 Qwen 基座之上学习决策任务,基座权重冻结。
  • Pointer Head(指针头):Kev 附加在 Qwen 基座上的小型读出头,把候选/问题对应的隐藏态打分后经 softmax 变成概率。
  • Gated DeltaNet:Qwen3.5/3.8 混用的递归层,不遵守注意力掩码,是 Kev 架构设计的关键约束。
  • 校准(Calibration):模型说 80% 的样本应有约 80% 成立;用 Brier Score、ECE(期望校准误差)度量。
  • state:传给模型的待评估内容(文本/JSON/数组)。
  • Brier Score:对完整概率分布而非仅最高答案计分,越低越好。

架构与运行原理

Jev(闭源,仅官方披露)

  • 官方披露:一套新架构 + 并行 sampler + RLCD 训练 + System One API/三原语 + workflow eval 方法 + Jev 1.13 已知失败模式。
  • 未披露:参数量、网络层结构、基座模型家族、预训练语料明细、RLCD 完整损失/配方、可下载权重、可复现实验代码、正式论文。因此 Jev 属于"黑盒托管服务"。

Kev(开源,架构完全公开)

Kev 每个 checkpoint = rank-16 LoRA 适配器 + 小型 pointer head + Qwen 基座(冻结):

输入 state + 各问题(criteria)
        │
        ▼
 Qwen 基座(冻结)  ←── 一次编码,共享状态缓存复用
        │
        ├─ 每个问题独立行/独立注意力行(隔离)
        │
        ▼
 pointer head:对每个候选的 </opt> 隐藏态 vs 问题 <decide> 隐藏态 打分
        │
        ▼
 softmax → 概率分布 → 套拟合温度(校准) → noul/choice/score 结果
  • Qwen3(纯注意力):state 与问题拼进同一 token 序列,用注意力掩码实现"能读 state 与自己问题、不能读其他问题"。
  • Qwen3.5/3.8(混合注意力 + Gated DeltaNet):递归层忽略注意力掩码,故改为每问一行:state + 该问题独立成行,题目完全隔离;服务端与 DecisionModel.probs() 只计算一次 state 并复用其 KV 缓存。
  • 训练:交叉熵,目标为正确答案;LoRA 覆盖 attention、MLP、DeltaNet 投影;基座权重不动。decision-v7 训练集 = 1 万条(10 个公开数据集)+ 896 条生成策略例 + 1,680 条(60 个生成规则结构)。
  • 校准:加载时 pointer head 应用拟合温度(只改变概率尺度,不改变胜出答案)。
  • 候选间/问题间:问题间隔离精确;候选选项之间仍可能互相影响(选项顺序敏感性)。

3 使用指南

安装部署

本地运行(Windows / Linux / macOS) | 亲测

  • 依赖:Python 3.12/3.13 + uv(repo 的 .python-version 使 uv sync 用 3.13;torch 尚无 3.14 wheel)。
  • 拉取并启动服务:
git clone https://github.com/jaredpalmer/kev.git && cd kev
uv sync --extra serve
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-4b --port 8009
  • 说明:GPU(CUDA/ROCm)或 Apple Silicon(MLX)自动选择;首次运行下载适配器与基座;--run 也接受本地 checkpoint 目录或 Hub revision。

image

一键部署 HTTPS 端点(Modal)

pip install modal && modal setup
curl -LO https://raw.githubusercontent.com/jaredpalmer/kev/main/skills/kev-deploy/scripts/kev_serve.py
KEV_API_KEY=$(openssl rand -hex 24) modal deploy kev_serve.py
  • 结果:L40S 上提供 Kev-4B,Authorization: Bearer <key>;空闲缩零,闲置零成本,冷启动首请求约 35 秒。
  • 换模型:KEV_MODEL=jaredpalmer/kev-9b;Kev-27B 走 B200/H200/H100 80GB。

浏览器试玩

image

关键操作

调用一次决策(curl)

curl -s localhost:8009/v1/systemone -H 'content-type: application/json' -d '{
  "state": "Shoes arrived two weeks late and in the wrong size. Also I see two charges on my card.",
  "model": "kev-latest",
  "questions": {
    "department": {"type": "choice", "instructions": "Which team should handle this?", "criteria": {"returns": "Exchanges, refunds, wrong or damaged items", "shipping": "Delivery status, delays", "billing": "Charges, invoices"}},
    "escalate": {"type": "noul", "instructions": "Does this need urgent human attention?"},
    "frustration": {"type": "score", "instructions": "How frustrated is the customer?", "criteria": ["Calm", "Frustrated", "Very angry"]}
}}'
  • 完整调用过程: (kev-0.8b | 本地电脑)
curl -s localhost:8009/v1/systemone -H 'content-type: application/json' -d '{
  "state": "一个农夫带着一只狼、一只羊和一棵白菜要过河,船一次只能载农夫和一样东西,狼会吃羊、羊会吃白菜。",
  "model": "kev-latest",
  "questions": {
    "cross_river_policy": {"type": "score", "instructions": "农夫该怎么把它们全部安全运过河?", "criteria": ["狼-羊-白菜", "白菜-狼-羊", "白菜-狼-羊", "羊-白菜-狼", "狼-白菜-羊", "其他"]}
}}'

换成全英文:
curl -s localhost:8009/v1/systemone -H 'content-type: application/json' -d '{
  "state": "A farmer was taking a wolf, a sheep and a cabbage across the river. The boat could only carry the farmer and one item at a time. The wolf would eat the sheep and the sheep would eat the cabbage.",
  "model": "kev-latest",
  "questions": {
    "cross_river_policy": {"type": "score", "instructions": "How could the farmer transport all of them safely across the river?", "criteria": ["Wolf-Sheep-Cabbage", "Cabbage-Wolf-Sheep", "Cabbage-Wolf-Sheep", "Sheep-Cabbage-Wolf", "Wolf-Cabbage-Sheep", "Others"]}
}}'
  • 预期目标/正确答案: "白菜-狼-羊" / "狼-白菜-羊"
  • 实际响应:
kev-0.8b 的答案: (显然是错误的、错得离谱)
{
	"model": "kev-latest",
	"answers": {
		"cross_river_policy": {
			"type": "score",
			"score": 2.948,
			"legend": {
				"0": "Wolf-Sheep-Cabbage",
				"1": "Cabbage-Wolf-Sheep",
				"2": "Cabbage-Wolf-Sheep",
				"3": "Sheep-Cabbage-Wolf",
				"4": "Wolf-Cabbage-Sheep",
				"5": "Others"
			},
			"probabilities": {
				"0": 0.1866,
				"1": 0.0966,
				"2": 0.1092,
				"3": 0.1398,
				"4": 0.125,
				"5": 0.3426
			},
			"confidence": 0.0
		}
	},
	"usage": {
		"input_tokens": 105,
		"output_tokens": 165
	},
	"latency_ms": 1231.2
}

Python(TypeSafe SDK 直连本地)

from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
client = TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8009", model="kev-latest")
response = client.system_one(
    state="I was charged twice. Please fix this ASAP.",
    questions={
        "billing": Noul(instructions="Is this ticket about billing?"),
        "tone": Choice(instructions="What is the customer's tone?", criteria={"calm": None, "frustrated": None, "angry": None}),
        "urgency": Score(instructions="How urgent is this ticket?", criteria=["can wait", "this week", "today"]),
    })

微调(自训)

  1. 准备 JSONL,每行 = 一个请求 + 每题 label(choice=选项名,noul=true/false,score=等级下标,留 10~20% 做评估)。
  2. 从已发布 checkpoint 续训(比从基座零训效果好:基座零训在 836 例上只 0.33,--init_from 保持 0.83 并在新域达 0.88):
uv run python -m kev.train --data train.jsonl --base Qwen/Qwen3.5-4B-Base --init_from jaredpalmer/kev-4b \
  --epochs 2 --lr 2e-5 --batch 1 --accum 8 --dtype bf16 --checkpointing 1 --device cuda --out runs/mine
uv run python -m kev.benchmark --run runs/mine --data heldout.jsonl --out runs/mine-eval
uv run --extra serve python -m kev.serve --run runs/mine --port 8009
  1. 或用编码智能体一键闭环:npx skills add jaredpalmer/kev@kev-finetune,让 agent "fine-tune Kev on my support tickets"(Modal 自动跑完,Kev-4B 一次约 1 美元)。

关键环境变量

变量 作用
KEV_TEMPERATURE=1.0 返回未校准原始概率
KEV_DATE_FACTS=1 给 state 中成对日期追加天数差(日期策略题 0.80→0.90,Jev 0.93)
KEV_DTYPE=fp32 走评估同款精确路径
KEV_API_KEY 要求 Authorization: Bearer <key>

服务端 API

  • POST /v1/systemone:主决策接口(state + questions,可任意题数)。
  • GET /v1/models:模型卡与已加载 checkpoint 信息。
  • POST /v1/systemone/permute:同一 choice 在不同选项顺序下多次运行。
  • POST /v1/systemone/separate:每问独立前向。

Z FAQ for Kev

Q: Kev 和 Jev 是什么关系?Kev 是"抄"Jev 吗?

Kev 是 Jev 的开源、本地化实现:它遵循 TypeSafe System One 的接口与 API(含三原语、SDK 兼容),架构是"Qwen 基座 + LoRA + pointer head"的自研实现。README 明确声明未使用 Jev 输出做训练。因此 Kev 是"Jev 接口的兼容开源实现",不是对 Jev 本体的复刻,也不构成 TypeSafe 客户协议下的蒸馏。

Q: Kev 的精度能超过 Jev 吗?

不能(总体)。Kev-27B 在新源数据上 0.848 vs Jev 0.857,只差 1 个点,且 11 类中有 9 类持平或反超;但在"5% 误差预算下的可自动化比例"(0.45~0.57 vs 0.70)、知识类(MMLU)、以及外部测试集(WANLI、typesafe-v1)上仍落后 Jev。结论:Kev 适合"够用即可、要开源/本地/可微调"的场景;追求最高判断质量应继续用 Jev。

Q: Kev 的校准概率可靠吗?

自带拟合温度是分布内校准,可靠性曲线与 Brier 指标公开、可自测。但校准是群体统计性质,且随任务/领域/分布偏移剧烈变化;审计与 Jevals 均指出"Jev 式置信并非普适属性"。任何阈值都要在自己的标注集上回放后再上线。

Q: 为什么 Qwen3.5 版 Kev 在 Mac 上变慢了?

Qwen3.5/3.8 混入 Gated DeltaNet 递归层,Kev 改为"每问独立行"结构,Mac 上暂缺 MLX 优化后端,导致 5 道题约 700ms+(旧 Qwen3 代约 136~174ms)。低延迟 Mac 部署可先用旧 Qwen3 权重,待 MLX 后端就绪再迁移。

Q: Kev 在长文档上表现如何?

训练只覆盖最多 384 token 的 state,服务端虽允许 65,536 token,但长文档上精度下降;Kev-27B 明显更能扛(1k~6k token 混杂文本 0.833 vs 9B 0.556)。长文档场景优先选 27B。

Q: 微调会不会把模型搞坏?

可能。作者记录微调曾回退"日期算术"等基座单项能力;--init_from(从已发布 checkpoint 续训)比从基座零训稳健得多,建议用较小学习率(2e-5)。

Q: 部署 Kev 需要多少钱?

本地:按自有硬件;Modal 部署:空闲缩零、闲置零成本,冷启动约 35 秒。训练:Kev-4B 一次微调约 1 美元 H100;作者复现整个 Qwen3.5 实验约 95 美元。GPU 单价参考:L4 $0.80/h、L40S $1.95/h、H100 $3.95/h、B200 $6.25/h。

Y 推荐文献

X 参考文献

posted @ 2026-09-27 17:16  数据知音  阅读(103)  评论(0)    收藏  举报