Cloudflare 入局决策模型:开源 Clef 挑战 Jev,还附带一个 RL 微调平台

Clef 官方封面图:以音符谱号为原型的品牌设计

10 月 1 日,Cloudflare 发布了两款自研决策模型 Clef 和 Clef-flash,权重以 Apache 2.0 协议在 Hugging Face 开源,同时托管在 Workers AI 上供 API 调用。这是 Cloudflare Workers AI 团队第一次发布自研训练的 ML 模型。与模型一起亮相的还有一个强化学习微调服务:客户可以用自己的业务数据把 Clef 调成领域专用的分类器。

这条新闻的背景是九月中旬 TypeSafe 发布的 Jev。那款不生成文字、只输出结构化判断的模型在 Hacker News 冲上榜首,随后两周,GitHub 上出现了一整批同类项目:jaredpalmer 的 kev(8.2k star)、NandhaKishorM 的 laya(29.8k star)、给 Claude Code 做上下文压缩的 fast-jev-compaction(7.3k star)。现在,第一批大厂正式进场了。

决策模型是什么,和 LLM 差在哪

先看它解决什么问题。一个 AI Agent 在执行任务时需要做大量小判断:这条客服工单紧不紧急、该转给哪个团队;这个域名是正常网站还是钓鱼站;这个爬虫是好爬虫还是恶意爬虫。这类判断有两个特点:答案是封闭的(几个选项里选一个),而且要求稳定、快速、便宜。

用大语言模型做这类判断是杀鸡用牛刀。LLM 要一个 token 一个 token 地生成回答,速度慢、成本高,而且同样的问题问两遍可能给出不同答案。决策模型走的是另一条路:输入一段上下文和一组问题定义,模型不走文本生成,直接对所有合法选项并行打分,输出带概率的类型化答案。官方文档里的请求示例长这样:

json
{
  "model": "clef",
  "state": "Checkout has been failing for every customer for the last hour.",
  "questions": {
    "urgent": { "type": "noul", "instructions": "Is this support request urgent?" },
    "team": {
      "type": "choice",
      "instructions": "Which team should handle this request?",
      "criteria": {
        "billing": "Payments, invoices, and refunds",
        "technical": "Outages, errors, and configuration",
        "sales": "Plans and upgrades"
      }
    },
    "severity": {
      "type": "score",
      "instructions": "How severe is the customer impact?",
      "criteria": ["No impact", "Minor", "Major", "Critical"]
    }
  }
}

state 是当前上下文,questions 定义要做的判断:choice 类型从给定选项里选,score 类型按程度打分,noul 输出是/否。返回结果里每个选项都带概率,业务代码可以直接拿概率做路由、升级或转人工的分支逻辑。

Cloudflare 自己的威胁情报团队已经在用 Clef 给域名分类。给模型一个域名(配合浏览器渲染),它 2.2 秒完成抓取、渲染和分类,输出「95% 时尚网站、85% 电商、不到 1% 钓鱼」这样的判断;同样的事情用 gpt-oss-120b 做,耗时 4.7 秒,而且只返回两个分类结果。

决策模型的输入输出:一次前向,并行输出所有问题的概率分布

架构:冻结的 Qwen,加上并行打分头

Clef 的技术路线值得细看,因为它给「怎么把通用基座改造成专用模型」提供了一个完整样本。

基座不是从零训练的。Clef 冻结了 Qwen3.8-27B 做骨干网络,Clef-flash 用的是 Qwen3.5-9B,训练只更新两部分:一个路由头(routing head)和秩为 256 的低秩适配器(LoRA)。也就是说,模型的语言理解能力全部来自冻结的 Qwen,新训练的参数只负责「把内部表示映射到选项打分」这一件事。

推理流程和 LLM 有本质区别。Clef 用 Qwen 做一次 prefill-only 前向(只编码输入,不逐 token 生成),然后对所有合法的 schema 选项并行打分。打分阶段是非自回归的,没有中间文本需要逐个生成,这是它比同规模 LLM 快的核心原因。

打分机制官方称为两阶段注意力路由(two-stage attention routing):每个合法选项先从 prompt 里提取与自己相关的上下文,然后各字段的参数跨字段交叉注意力、再回连到原始输入,最后按 schema 边界打分。这个设计让每个选项都能看到「其他字段问的是什么」,避免多字段判断之间互相矛盾。

训练目标用了三项组合:对合法 schema 输出用标签平滑交叉熵,加上 Brier 损失来校准概率(让模型输出的 90% 真的接近 90% 的正确率),再叠加一个自研的 RLCD(Reinforcement Learning for Calibrated Decisions)作为次级优化目标——相邻的有序选项给部分得分,完全精确的记录输出给满分,同时用参考惩罚防止模型分布漂移。训练数据是内部合成数据集,对字段顺序、prompt 和 schema 结构做排列组合。

这套组合拳的成果,官方概括为三件事:分类准确率提升、输出被约束为纯概率(不生成文本)、速度超过 Jev 和基座 Qwen 模型本身。

评测:Clef 与 Jev 的正面对决

Cloudflare 给出的基准数据相当详细。先看 Jev Decision Index 定义的十项能力评测:

基准ClefClef-flashJevDiffusionGemma JevKev 9BLaya
BFCL · case exact98.4798.7695.7596.5294.5138.13
ToolRet · nDCG@1069.1966.4365.2861.2164.2612.69
API-Bank · accuracy91.9393.1188.1983.6656.3011.41
家电分类 · case exact82.9597.7352.2742.0525.000.00
When2Call · accuracy72.3765.5880.9775.4449.6211.94
BANKING77 · macro-F194.2090.9379.7474.2884.8314.29
CLINC150+OOS · macro-F197.4366.7789.2783.4979.033.19
BRIGHT · nDCG@1045.9139.2647.5242.9438.5319.90
Amazon ESCI · macro-F157.4857.3955.2153.3749.2224.40
PhishNChips · accuracy79.6075.0562.5585.3550.7550.15

十项里 Clef 拿下四项第一,Clef-flash 拿下三项,Jev 拿下两项(When2Call 和 BRIGHT),剩下一项归 DiffusionGemma Jev。在 Typesafe 自己的工作流评测套件里,Clef 在四项中有三项超过 Jev:

工作流ClefClef-flashJev
发票处理64.757.161.8
客户服务76.377.076.0
安全事件62.961.761.7
Agent 轨迹观测68.569.871.6

延迟数据按官方说法覆盖了 43 项评测基准,中位数和 p95 如下(Laya 5.8ms 的中位数最快,但上面两张表里它的质量得分明显掉队):

延迟ClefClef-flashJevDiffusionGemma JevKev-9BLaya
中位数 · ms209.338.8524.184.451.45.8
p95 · ms238.6122.4536.0211.2187.9222.5

把质量和延迟放到一张图里,格局更直观:

官方散点图:Decision Index 得分对中位延迟,Clef 位于右上方的效率前沿

图里把三类来源分开标注:橙色是 Cloudflare 自报的数字,黑色是 Jev(闭源,官方数据),蓝色是开源模型(board-validated,第三方验证)。Clef 61.2 分、中位延迟 209ms,在质量维度排第一;Clef-flash 57.1 分、38.8ms,走延迟敏感路线;Jev 57.9 分但要 530ms。虚线画的「efficient frontier」穿过了 Clef-flash 和 Clef,意思是这两款模型目前构成了质量-延迟的帕累托边界。

需要说明的是,这批数字是 Cloudflare 自家发布的评测,第三方独立复测还需要时间;Jev Decision Index 本身是 Hugging Face 上的开放排行榜,demo 站(clef-evals.workers-ai-mle.workers.dev)会持续更新结果。

和 Jev 的两点硬差异

纯从参数表看,Clef 对 Jev 有两个结构性优势。

第一是视觉输入。Clef 带视觉编码器,可以分类图片内容;Jev 目前只支持文本。对需要「看屏幕做判断」的 Agent 场景(比如识别 UI 截图、审核图片内容),这是 Jev 暂时补不上的能力。

第二是上下文窗口。Clef 是 64k,Jev 是 32k,翻了一倍。决策模型的输入是完整的任务状态(工单全文、代码上下文、页面内容),窗口大小直接决定能塞多少现场信息进去。

反过来,Jev 保留了两个优势项:When2Call(判断工具该不该调用)和 BRIGHT(检索类基准)两项质量指标领先,另外它的 API 生态先发了两周,兼容工具链更多。Clef 的应对方式是做了完全的 Jev API 兼容——现有接了 Jev 的代码,改一个模型名就能切到 Clef。

RL 微调平台:这次发布的另一半

模型本身之外,Cloudflare 真正下注的是强化学习微调服务。逻辑不难理解:通用决策模型覆盖不了所有垂直场景,每个企业的工单分类、内容审核、风控判断都有自己的标签体系和历史数据,微调是刚需。

官方的架构图把整条链路拆成了五段:

RL 平台架构:从生产流量采集到模型重新部署的完整闭环

  1. 采集:业务流量先过 Cloudflare AI Gateway,请求和响应自动落成数据集;
  2. 准备:人工把日志整理成带奖励定义的任务(官方特意标注:日志本身不等于标签);
  3. 生成:Workers AI 用当前策略模型采样动作或回答;
  4. 执行评分:Cloudflare Containers 里跑沙箱,执行工具调用、跑测试、算任务奖励;
  5. 更新:新的 Trainer 组件计算 RL 损失和梯度、更新模型权重,选出的 checkpoint 再经 Workers AI 的 BYO Model(Cog)通道重新部署上线。

这个产品的底子是 Cloudflare 收购 Replicate 后整合的 BYO Model 能力,加上 AI Gateway、Containers 这些已有组件。现阶段微调服务由 FDE(前置部署工程师)团队手把手带着做,自服务平台在路线图上。官方也给出了内部用例:Trust & Safety 提交审核、Support 工单分诊、Bot 管理产品里判断爬虫善恶——这些都是 Cloudflare 自己积累了多年标注数据的场景。

对开发者的实际意义

对已经在用 Jev 或类似决策模型的团队,Clef 给了一个零成本切换的选项:API 兼容、权重开源、可以托管也可以自部署。想本地跑的,Hugging Face 上已经出现了社区量化版(GGUF、MLX 4bit 等),笔记本级硬件就能跑 9B 的 Clef-flash。

对做 Agent 框架的开发者,决策模型正在成为一个新的基础设施层:LLM 负责推理和生成,决策模型负责高频小判断,两者通过概率输出衔接。Clef 的两阶段注意力路由和 RLCD 训练方法是公开的,等于给「怎么把通用基座改造成决策模型」发布了一份参考实现——GitHub 上那批快速跟进的项目证明了这条路的门槛没有想象中高。

对 Cloudflare 自己,这是「Agent 云」战略落地的第一步:Workers AI 托管模型、AI Gateway 沉淀数据、Containers 跑沙箱、Trainer 更新权重,链条上的每一环都指向同一个目标,让 Agent 的工作负载留在 Cloudflare 的网络上。决策模型单价低、调用频次高,恰好是边缘推理最擅长承接的流量类型。

模型权重:huggingface.co/Cloudflare/clef、huggingface.co/Cloudflare/clef-flash;官方公告:blog.cloudflare.com/clef-decision-models;实时评测:clef-evals.workers-ai-mle.workers.dev