用决策模型做论文分类:DAIR.AI 的 Drex Max vs Jev 1.14 实测 · 干货攻略
- 链接: https://x.com/omarsar0/status/2113297633737691572
- 分类: x-tips
- 来源: X @omarsar0
- 作者: Jay
- 更新: 2026-10-23
- 仓库: https://github.com/typesafe-ai/skills (TypeSafe 官方 Agent Skill;Nace/Drex Max 侧未找到主仓库)
- 原帖正文(长文): https://x.com/omarsar0/status/2113296402289676594
这是什么
@omarsar0(elvis,DAIR.AI)发布了一篇探索性实测:把"决策模型"(decision model)用在论文分流的真实任务上,测出 Drex Max 与 Jev 1.14 的差距,并给出可复用的方法论。
决策模型是什么:你给它一段状态(state)和若干类型化问题(questions),它不生成文本,而是直接返回带概率的结构化答案——一个 0–1 的 "noul" 布尔值、限定集合里的一个 "choice"、或一个 "score"。因为输出是类型化概率而不是需要解析的自然语言,调用便宜、延迟低,适合放在每个请求前面做"分流/校验"。
任务是什么:DAIR.AI 的论文库有数千篇 AI 论文,会归入 Harness Engineering(提示、上下文、记忆、工具、agent loop、多 agent 这类"围绕模型的脚手架")和 Self-Improving Agents(通过循环让自身权重/提示/记忆/技能/代码产生持久改进的 agent)两个阅读合集。判断一篇论文属于哪个合集,现实中要人读摘要和元数据。
实验设计(原帖口径): - 先人工标注 250 篇论文,在看到模型预测之前标完; - 模型只拿到标题 + 摘要,对每个合集回答一个 yes/no 问题并给置信度; - 101 篇用来给每个模型 × 每个合集分别选一个决策阈值(按 F1 选,兼顾精确率与召回率),阈值选定后固定不变; - 剩下 149 篇作为测试集。
结果(149 篇测试集): | 指标 | Drex Max | Jev 1.14 | |---|---|---| | 两个标签全对 | 76.5% | 74.5% | | 5 次重复运行平均 | 78.1% | 74.9% | | Harness Engineering 排序 AUROC | 0.924 | 0.907 |
作者结论:Drex Max 更适合他们的场景,且他们已在规划生产化投入;决策模型做研究分流的前提是"问题定义清晰 + 阈值在标注样本上调过"。作者也明确说这是小规模标注的初步探索,还需要新标注的论文做更强测试。
核验来源
已读官方文档(本次读取):
- Drex Max 官方指南:https://console.nace.ai/docs/drex/guides/drex-max —确认 drex-max 是固定 ID(drex-latest 不指向它;请求不写 model 会落到 drex-v2.0);endpoint POST https://console.nace.ai/v1/systemone;计价 $0.06 / 百万输入 token,输出不计费;Drex Max 是 Drex 系列中唯一读图的模型,每请求最多 16 题、图片最多 8 张、请求体上限 4 MiB、超限返回 422 invalid_request_error、超时返回 529 overloaded。
- TypeSafe 官方文档(docs.typesafe.ai):https://docs.typesafe.ai/primitives/noul.md 、https://docs.typesafe.ai/introduction/quickstart.md —确认 Jev 是 TypeSafe 的 System One 模型,问题类型为 choice / score / noul(1.14 增加 box),noul 直接返回 0–1 概率;官方 API 端点 POST https://api.typesafe.ai/v1/systemone,Python SDK 包名 typesafe-sdk,API key 在 console.typesafe.ai/keys 获取。
- 长文正文(经 r.jina.ai 读取原帖):https://x.com/omarsar0/status/2113296402289676594 —所有实验数字(250/101/149、76.5%/74.5%、78.1%/74.9%、AUROC 0.924/0.907)均出自此处。
- 交叉搜索一次(Tavily)用于确认 "Jev 1.14" 的模型标识 typesafe/jev-1.14 与发布信息(2026-10-14/15 发布)。
明确的不确定处: - 原帖没有说明两个模型分别通过哪条具体 API 路径、各自版本号如何固定、计费如何比较;因此"Drex Max 更准"只能理解为在这一任务、这一提示、这一标注集下的结论,不是通用能力排名。 - 原帖也没有给出两者的单价对比,无法从这篇推算成本优势;Drex Max 的 $0.06/1M 输入 token 来自 Nace 官方文档,Jev 侧定价随渠道不同(TypeSafe 自有 API、OpenRouter、第三方转售各不相同),我未逐一核对官方价目表,故不写具体数字。 - 两个模型各自的 AUROC 差异(0.924 vs 0.907)只有 Harness Engineering 一项,另一合集的 AUROC 未披露。 - Nace/Drex Max 是否有官方主仓库:本次未找到可确认的仓库地址,因此"仓库"字段只填 TypeSafe 官方 Agent Skill 仓库(该地址由 docs.typesafe.ai 官方文档给出)。
上手步骤
1. 先把判断问题写成"可判定的 yes/no"
用 Noul 提问的关键是定义清楚什么算 yes。原帖两问的措辞可直接借用:
Question 1. Is this paper mainly about the harness around a model,
such as its prompts, context, memory, tools, agent loops, or multi-agent setup?
Question 2. Is this paper mainly about an agent that improves itself through a loop
that makes lasting changes to its weights, prompts, memory, skills, or code?
TypeSafe 的 noul 还支持 criteria,用 true/false 描述"什么算 yes / 什么算 no"——在调阈值之前就把边界写进问题里,这是原帖明确强调的经验。
2. 收集标注集,并刻意包含边界样本
- 先人工标一批(原作者 250 篇),且在看到模型预测前标完,避免事后凑标签;
- 原帖建议:把边界样本也放进标注集,边界越清楚,阈值越稳;
- 标注集切分:一个子集专门用来选阈值(原帖 101 篇),另一份完全独立的测试集(149 篇)用来评估。
3. 调阈值:用 F1 选,且按错误代价自定义
决策模型不直接给"是/否"给你一个开关,它给概率,阈值由你定:
- 原帖用 F1 选阈值(平衡精确率与召回率),选完固定再用;
- 原帖提醒:选阈值的方式取决于哪种错误更贵——漏判一篇好论文 vs 误收一篇坏论文,权重不一样,应按自己的代价函数选,而不是照抄 F1。
4. 调 API(Drex Max 官方示例)
curl https://console.nace.ai/v1/systemone \
-H "Authorization: Bearer $NACE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "drex-max",
"state": "My parcel arrived with the box crushed and the lamp inside cracked. I want a new one.",
"questions": {
"damaged": { "type": "noul", "instructions": "Did the item arrive damaged?" },
"intent": {
"type": "choice",
"instructions": "What does the customer want?",
"criteria": { "refund": "Money back", "replace": "A new item", "info": "Information only" }
}
}
}'
要点:
- model 必须显式写 drex-max——它是固定 ID,drex-latest 不指向它,不写 model 会回答 drex-v2.0;
- 响应里 answers 按请求顺序给出每个问题的答案,并带 usage、evaluation_time_ms、request_id;
- 论文分类场景只用文本即可,不要往 state/questions 里塞媒体,Drex 只认 images 数组,媒体放错位置会 422。
5. 调 API(Jev 官方示例)
from typesafe_sdk import Noul, NoulCriteria, TypeSafeClient
with TypeSafeClient() as client:
response = client.system_one(
model="jev-latest",
state="I have asked three times now. Can I please just talk to a real person?",
questions={
"is_human_escalation": Noul(
instructions="Is the customer asking for a human agent?",
),
"is_repeat_contact": Noul(
instructions="Has the customer contacted support about this before?",
criteria=NoulCriteria(
true="Mentions a prior attempt, ticket, or that they have asked before",
false="No sign of any previous contact",
),
),
},
)
print(response.answers["is_human_escalation"].noul)
要点:
- 端点 POST https://api.typesafe.ai/v1/systemone;key 从 https://console.typesafe.ai/keys 取,SDK pip install typesafe-sdk(Python ≥3.10);
- noul 答案就是那个概率数字本身(0–1),没有单独的 confidence 字段;choice/score 才带 probabilities + confidence;
- 生产环境请钉版本(如 jev-1.14.0),否则模型一升级、你调好的阈值就漂移。
6. 评估时报告两件事
- 固定阈值后的测试集准确率(原帖口径:两个标签全对的比例),并跑多次重复看均值与波动(76.5% vs 五次平均 78.1% 说明单次结果有噪声);
- 排序能力(AUROC),用于判断"分数能否用来排序"而不只是分对错。
适用边界
适合: - 已有明确、可判定的分类/分流规则,且能拿出人工标注集的任务(论文归类、工单分派、文档审核、LLM 输出校验); - 需要高频、低成本地在流水线前端做判断的环节——决策模型输出概率,不生成文本,无需 JSON 解析与重试; - 有多模态需求的场景:需要读图的判断目前 Drex Max 是 Drex 系列里唯一支持的(每请求最多 8 张图、单图 16 MiB、请求体 4 MiB)。
不适合 / 需谨慎:
- 规则本身模糊时不要用。原文的核心结论是"问题定义清晰"是前提;定义不清的分类,阈值调得再好也没意义。
- 不要把它当通用能力排名:2 个百分点的差距来自 149 篇论文、单一提示、单一标注者口径,且作者自己标注了这是探索性工作。生产决策前应重跑自己的标注集。
- 标注集质量是天花板。原帖明确:阈值调优重要,但标注集质量同样重要——少量标签 + 早期开发用的论文,得到的是弱结论。
- Drex Max 不是"最新版":官方文档说明 drex-max 是固定 ID,drex-latest 不指向它,不写 model 则回答 drex-v2.0;升级路径要照文档走,别想当然用 latest。
- 长 state + 多图 + 多题容易 422:Drex Max 每个问题计 token(图片每张最多 1,602 token,且计入总量上限 1,048,576),官方建议长 state 时少发几个问题;超出 evaluate 超时返回 529,失败请求不计费。
- 多模态不是免费的:图片按输入 token 计费,与文本同一价目;内联 base64 还要挤占 4 MiB 请求体上限,官方建议大图走上传(上传免费)。
- Jev 侧的图像/box 能力有版本差异:1.14 才加入图像输入与 box 问题,1.13 无;选版本时别只盯"最新"。
一句话结论
这篇真正值钱的不是"Drex Max 比 Jev 强 2 个点",而是一套可复制的决策模型落地流程:把问题写成可判定的 noul → 用先标好的样本调阈值(按错误代价选 F1 或别的)→ 阈值固定后在独立测试集上评(准确率 + AUROC)→ 边界样本一定放进标注集。Drex Max 76.5% vs Jev 1.14 74.5% 的对比,只说明在这套流程和这个任务上,前者略占优——你换成自己的任务、自己的标注集,很可能得到不同排序。