AiRobotNews 人工智能机器人技术网

把 Agent 账单砍掉 90%:让 Jev 负责「挑一个答案」,拿不准的交给 Kimi K3

把 Agent 账单砍掉 90%:让 Jev 负责「挑一个答案」,拿不准的交给 Kimi K3

打开任意一段 agent 的运行记录,数一数模型没在创作任何东西的时刻。下一步调哪个工具。这条资料相不相关。测试过没过。这条命令安不安全。任务算不算完成。多数循环里,这类小判断比真正干活还多,而每一次都按前沿模型的整次生成来计费。

2026 年 9 月 15 日,TypeSafe AI 结束隐身,发布了一个只做这类调用的模型。Jev 一个字都不写。

原文配图:烛光下研读文书的老人(影视画面)

你把状态和带类型的问题交给它,它还你带概率的答案,通常耗时 100 毫秒左右,输入每百万 token 0.042 美元,输出免费。

在 TypeSafe 自己的 workflow 评测里,它比拿来对照的 LLM 快 193.6 倍、便宜 444.6 倍;而公司自己说,这些数字是「能期待的上限」。这两句都写在 TypeSafe 官网首页上,脚注是「基于 System One 任务的 workflow 评测」,旁边给的示例是 TypeSafe AI 单次 0.000081 美元、0.114 秒完成,对照的 LLM 是 0.013880 美元。

所谓 Jev engineering,就是把这件事做对的功夫:找出藏在流程里的判断、把它写成模型答得好的问题、按置信度分流,并且清楚它在哪里会崩。下面是完整打法,Kimi K3 承接 Jev 拿不准的那部分。


一、一个「不会写字」的模型为什么有用

Diogo Almeida 是 InstructGPT 的作者之一,那篇 RLHF 的工作把 GPT-3 变成了 ChatGPT。他为 Jev 写的论证,先批的是自己那套技术:被训练来取悦人类评分者的模型,学会了「看起来对」,它们报出的置信度也就不再有意义。如果一个模型能把某件事做对 95%,却说不出自己做错的是哪 5%,这件事就没法自动化。

Jev 用的是 TypeSafe 称为 RLCD 的训练方式,即面向校准决策的强化学习(reinforcement learning for calibrated decisions)。目标是诚实的概率:报 90% 的答案,在你的数据上应该真的对大约 90%。

单个答案当然还是可能错,这正是置信度这个数字存在的意义。它告诉你的代码,哪些答案可以直接用,哪些该送别处。

Hassan(@nutlope)筛过 100 封邮件,一半正常、一半欺诈。Jev 用 1.42 秒把 100 封全部分完类。置信度低于 95% 的 31 个答案送去 Kimi K3 做完整阅读。整条流水线 16 秒跑完,100 封里对了 96 封,总花费约 0.07 美元,其中 Jev 那部分花了三分之一美分。他这次运行的代码在 github.com/Nutlope/jev-fraud。

Hassan 的欺诈筛查运行结果:Jev 用 1.42 秒分完 100 封邮件(0.003 美元),31 个低于 0.95 的难例交给 Kimi K3(0.068 美元),流水线 16 秒对 96 封,合计约 0.07 美元


二、第一步:把 agent 的每一步分成四类

拿一段真实的运行记录,把每一步丢进下面四个桶之一。

这一步如果……它属于例子
必须创造出文字、代码或计划LLM初稿、修复、摘要、给人看的理由
遵循一条精确规则代码重试上限、预算、白名单、日期运算、计数
从你事先能列出的答案里挑一个Jev路由、排序、留下还是丢掉、安全与否、完成与否
做完没法撤销你自己发送、付款、发布、删除、改权限

第三个桶永远比人预想的大,而 Jev engineering 挪动的就是这个桶。其余的留在原地。


三、三种问题与 API

三种问题类型覆盖第三个桶。

类型问什么返回什么规则
Choice从你给的选项里挑一个选中项,外加每个选项的概率和置信度最多 255 个选项,概率之和为 1
Score放到你的评分标尺上分数,可以落在等级之间,外加分布2 到 10 个有序等级
Noul是或否noul,即「是」的概率0.5 表示它分不出来,从不返回「中等」

三种问题类型的返回示意:Choice 返回各选项概率(如 lead 0.89),Score 返回 0—3 之间的分数(如 2.6),Noul 返回 0—1 的概率(如 0.93);图注注明 Choice 最多 255 个选项、Score 2 到 10 个等级

搭建时你会用到的事实(这一段已逐条对照 TypeSafe 官方文档 docs.typesafe.ai 核对,差异写在文末):

- 接口:POST [https://api.typesafe.ai/v1/systemone](https://api.typesafe.ai/v1/systemone),请求体带 state、model 和 questions。Python SDK:pip install typesafe-sdk,然后 client.system_one(...) - 模型:阈值调好之后把版本钉死,用 jev-1.13.0。jev-latest 是会跟着走的别名 - 体积:状态加上所有问题,合计约 64K token;状态加最长的那一个问题,必须在 32K 以内(英文大约 15 万字符) - 输入:只吃文本。字符串、JSON 对象或数组都行,图片不行 - 速率限制:官方文档当前写的是每秒 100K token 与每秒 80 个请求(原文这里写的是每秒 1,200 个请求、250,000 token,两者对不上,见文末口径说明) - 速度与价格:端到端 70 到 500 毫秒,输入每百万 token 0.042 美元,输出免费。1 万次判断、每次 1,000 token,合计 0.42 美元


四、一次调用问完所有问题

同一个请求里的问题,是对着同一份状态并行求值的。

TypeSafe 把这叫推测式扇出(speculative fan-out),它也是你能控制的最大一笔成本杠杆。在他们的一次测试里,对一份 53,777 字符的文档问 13 个问题,合成一次调用比拆成十三次便宜 12.2 倍、快 10 倍,省下的主要是那份只传了一次的状态。文档站里这篇 cookbook 的说法是:把每个问题都合进一次 TypeSafe 调用,便宜 12.2 倍、快 10.0 倍,答案没有变化。

from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
client = TypeSafeClient(model="jev-1.13.0")
r = client.system_one(

    state={"ticket": ticket_text, "customer": {"plan": "pro", "refunds_90d": 0}},

    questions={

        "department": Choice(

            instructions="Which team should own the problem described in `ticket`?",

            criteria={

                "billing": "Charges, invoices, plan changes",

                "bug": "Something in the product does not work as documented",

                "howto": "The customer asks how to do something that already works",

                "other": "None of the above fits",

            }),

        "frustration": Score(

            instructions="How frustrated is the customer, judged from `ticket` only?",

            criteria=[

                "Neutral or positive, no complaint about the experience",

                "Annoyed but polite, describes wasted time",

                "Angry, mentions cancelling, a public review or a chargeback",

            ]),

        "refund_requested": Noul(

            instructions="Does `ticket` ask for money back, a refund or a chargeback?"),

    },
)
dept = r.answers["department"]            # .choice  .probabilities  .confidence
mood = r.answers["frustration"].score     # can land between levels, e.g. 1.3
refund = r.answers["refund_requested"].noul

有两条边界要注意。同一次调用里的问题读不到彼此的答案,所以某个决定如果依赖新证据,得先把证据取回来、更新状态、再问一次。扇出只在问题共享同一份状态时才划算;彼此无关的问题应该分到不同的调用里。

推测式扇出示意:左边是 13 次独立调用,同一份 53,777 字符的文档被传了 13 遍;右边是一次调用带 13 个问题,文档只传一次、问题并行求值,便宜 12.2 倍、快 10 倍;图注说明该测试基于 jev-1.12


五、真正的手艺是写问题

Jev 答得差,多数时候问题出在问题上。下面这些规则来自 TypeSafe 的文档,也来自已经用它上线的人。

- 问题 ID 从不发给模型。 把一个字段命名成 is_fraud,对 Jev 毫无信息量。含义必须活在 instructions 和 criteria 里。 - 一个问题只问一个判断。 「这是不是既紧急又来自付费客户」是两个问题。拆开问,答案在代码里合。 - 描述情形,不要描述程度。 「提到取消或拒付」是可核对的。「非常沮丧」是一种情绪,光秃秃的数字等级也是。 - 每个等级都要能独立成立。 等级是各自独立判断的,「比上一级更糟」对模型没有意义。 - 每个 Noul 都写成「数字高代表是」。 一个「true 表示不安全」的 Noul,就是等着爆的 bug。 - 永远留出口。 每个 Choice 都要有 other 或 none,因为模型必须挑一个,出口给不确定性一个去处。 - 指明具体字段。 像 ` order.charges 这样用反引号标出路径,告诉 Jev 这个问题问的是状态里的哪一块。 - **送证据,并且先在代码里过滤。** 无关状态堆得越多,准确率越低。七个带各自结论的来源,胜过「调研看起来差不多做完了」;把搜索结果裁到相关的那几行,胜过整页丢过去。 - **把「抽取」改造成「选择」。** Jev 产生不了你 schema 里没有的值。要从发票里拽出厂商名,就把已知厂商列表给它,让它挑一个。

同一组问题写两遍的对比:左边是弱写法(instructions 只写「可疑吗」、等级用 low/medium/high、Choice 没有出口),右边是强写法(用反引号指向字段、每个等级是独立情形、每个 Choice 都带 other 出口)


六、它在哪里会翻车

TypeSafe 为 jev-1.13 公开了一页「jaggedness」(参差度)。上面每一条,都有一个在调用外层兜住它的办法。

弱点会发生什么外层怎么兜
按字面读问题措辞松的问题,得到字面的答案把问题当代码对待:版本化、测试、评审
不是计算器计数误差随规模增长在代码里数、求和、比较,把结果传进去
日期是文本「3 月 3 日之后」不是有序比较日期逻辑在代码里算
上下文腐坏无关状态拉低准确率把状态裁到问题真正需要的部分
信任状态状态里的对抗性文本能带偏答案确定性检查和权限留在代码里
文本进、数字出它解释不了自己,也读不了截图需要文字或视觉的活交给 LLM
多跳推理推理链一长就退化把链拆成几次调用,中间更新状态

这些的最后一道防线是同一个:类型安全意味着 Jev 返回不了 schema 之外的值,但它仍然可能返回一个「合法但错误」的值。要抓住这类错,靠的是置信度阈值和第二个模型。


七、级联:先 Jev,再 Kimi K3

把上面拼起来,每个判断都会穿过四层,停在其中第一个有把握的地方。

层处理什么速度成本
代码精确规则即时免费
Jev高于你阈值的那些有界调用约 100 毫秒每百万输入 token 0.042 美元
Kimi K3低于阈值的答案,以及任何需要书面理由的活数秒每百万 3 美元输入 / 15 美元输出
你不可逆操作,以及两个模型都没把握的情况你有空的时候你的时间

Kimi K3 放在第二槽位有它的现实理由。升级上来的案例往往需要整条邮件串和历史记录,而 K3 的 100 万 token 上下文在任何长度上都是同一个价。它能读 Jev 读不了的截图和扫描版 PDF。它的权重是开放的,所以同一份代码可以跑在 Moonshot 的 API 上、Together 上(Hassan 的配置)或你自己的机器上。

import json, os
from openai import OpenAI
from typesafe_sdk import Choice, TypeSafeClient
CRITERIA = {

    "customer": "A current customer asking about an order, a bill or their account",

    "lead": "Someone asking about prices, a demo or working together",

    "vendor": "Someone selling a product or service to us",

    "fraud": "Urgent payment request, changed bank details, spoofed sender or a login link",

    "other": "None of the above fits",
}
THRESHOLD = 0.95   # Hassan's setting for fraud, tune it per decision
jev = TypeSafeClient(model="jev-1.13.0")
kimi = OpenAI(api_key=os.environ["KIMI_API_KEY"],

              base_url=os.environ.get("KIMI_BASE_URL", "https://api.moonshot.ai/v1"))
def ask_kimi(email, jev_guess):

    reply = kimi.chat.completions.create(

        model="kimi-k3",

        response_format={"type": "json_object"},

        messages=[{"role": "user", "content":

            f"Classify this email as one of {list(CRITERIA)}. "

            f"A fast classifier guessed '{jev_guess}' with low confidence. "

            'Answer as JSON: {"category": "...", "reason": "...", "sure": true}\n\n' + email}],

    )

    return json.loads(reply.choices[0].message.content)
def route(email):

    r = jev.system_one(

        state={"email": email},

        questions={"category": Choice(

            instructions="What does the sender of `email` want?", criteria=CRITERIA)},

    )

    a = r.answers["category"]

    if a.confidence >= THRESHOLD and a.choice != "other":

        return {"category": a.choice, "by": "jev", "confidence": a.confidence}

    k = ask_kimi(email, a.choice)

    if k.get("sure"):

        return {"category": k["category"], "by": "kimi-k3", "reason": k["reason"]}

    return {"category": "review", "by": "you", "jev": a.choice, "kimi": k["category"]}

other 永远不会自己往下走。K3 会拿到 Jev 的猜测作为上下文。两个都没把握的时候,你拿到的是并排摆着的两份答案,这就是最快的复核方式。


八、接进你已有的框架

不需要换新框架。Jev 已经装进三种最常用的框架里。

LangChain(langchain-typesafe)给两个中间件。ModelRouterMiddleware 让 Jev 按你写的标准,挑出能处理这个请求的最便宜的模型。AutoModeMiddleware 则在每次工具调用执行前检查风险——这类危险操作分类器,此前一直是编码类 agent 藏着不开源的东西:

from langchain.agents import create_agent
from langchain_typesafe.experimental.middleware import AutoModeMiddleware
agent = create_agent(YOUR_MODEL, middleware=[AutoModeMiddleware(tools=["bash"])])

Pydantic AI(pydantic-ai-slim[typesafe])直接把你的输出类型翻译成问题:Agent(“typesafe:jev-latest”, output_type=Triage)。bool 变成是非题,Literal 变成 Choice,带 docstring 的 IntEnum 成员变成 Score,X | None 会多出一个「以上都不是」的选项。它的 FallbackModel 套路把没把握的答案交给 LLM——也就是上面那套级联,两行搞定。

Vercel AI SDK 通过 experimental_evaluate 暴露 Jev,provider 是 @ai-sdk/typesafe-ai;也能走 AI Gateway 的 typesafe-ai/jev,价格一样。


九、已经有人在跑什么

项目Jev 判断什么结果
Browser Use jev-ultrafast下一步动作,以及该点页面上哪个元素(每一步都重建选项清单)苏黎世到伦敦的航班 7.1 秒找到,花 0.0039 美元
欺诈筛查(Hassan)正常还是欺诈,没把握的 31 封送 Kimi K3100 封对 96 封,16 秒,约 0.07 美元
1kpapers.com每篇论文属于 24 个主题中的哪一个1,018 篇论文花 0.08 美元,中位 256 毫秒;用 LLM 做摘要则是 3.99 美元
收件箱分类(Riley Brown)每封邮件要做什么500 封邮件 3.5 美分
电脑操作(awlevin)一项桌面任务的每一步每个决策 0.0002 美元,对照 Opus 5 的 0.032 美元;0.13 到 0.38 秒,对照 5.2 秒
即时压缩(tamara)一轮会话里哪些工具调用还有用一个 Claude 会话从接近 100 万 token 压到 86K,约一秒(Alex Volkov 的测试)
jev-trader(Jarrod Watts)每个区块做一个交易决策模型延迟约 81 毫秒

规律是重复的:选项清单每一步都从实时状态重建,Jev 挑,剩下的交给代码或小模型。


十、用 Jev 指挥 Kimi K3 的 swarm

同一套思路可以放大。活大的时候,Kimi K3 的 Agent Swarm 负责施工,最多 300 个子 agent,而 Jev 管轮次之间的那些调用:下一个跑哪个角色、哪些返回结果留下、目标算不算达成。

每轮三个 Jev 调用只花不到一美分,所以循环可以在每一轮之后都问一次「干完了吗」,然后自己停下。当这个「完成检查」落进中间地带时,一次带完整状态的 K3 调用来做决定。

Jev 指挥 Kimi K3 swarm 的示意:每轮由 Jev Choice 决定下一个角色、Jev Score 决定保留哪些返回结果、Jev Noul 判断目标是否达成(0.5 到 0.9 交给 K3 通读,0.90 以上则停止);右侧样例决策记录里能看到每步的置信度,以及 0.61 那次转给 K3、0.88 那次转给人


十一、阈值与上线

阈值按动作设,不按模型设。TypeSafe 文档里用 0.5 作为转人工的下限、0.9 作为任何破坏性操作前的要求,并且明确说这是例子而不是默认值。把一封 newsletter 归档,可以比标记欺诈低得多就自动放行。

阈值随损失走:归档 newsletter 0.70,分流工单 0.80,隐藏评论 0.90,标记欺诈 0.95,剩下「发送、付款、发布、删除」永远由人来做;图注引用 Hassan 的欺诈运行用 0.95,100 封里 31 封转给 Kimi K3,最终对 96 封

先跑一周影子模式。 让 Jev 打标签,同时仍由老路径做决定。然后按置信度分档对比:如果 0.9 以上那档几乎每次都和你一致,这一档先转自动。

钉住版本,并且全部记日志。 模型 ID、完整概率分布、阈值、是哪一层答的、接下来发生了什么。日志就是你的评测集;钉住版本,意味着你的阈值下个月还是同样的意思。

把问题当代码对待。 改一句 criteria,就是改线上行为。给它版本、在有标注的集合上测、跑偏了就回滚。


十二、算一笔账

每月 1 万封邮件。假设:Jev 每封约 1,000 输入 token,整次模型调用 1,500 输入 + 300 输出,其中 10% 升级。

方案价格每月成本
前沿模型读每一封邮件每百万 10 美元输入 / 50 美元输出300 美元
Kimi K3 读每一封邮件每百万 3 美元输入 / 15 美元输出90 美元
Jev 全量 + 它拿不准的 10% 交给 Kimi K3Jev 0.42 美元 + K3 9.00 美元9.42 美元

TypeSafe 自己的级联估算放大到那个量级也是同一个结果:100 万张支持工单,约 6,480 美元,而不是 30,400 美元。


十三、这套东西怎么挣钱

方向怎么收钱先要有什么
给小企业做分类分流一笔搭建费,加每月维护费(级联、复核队列、阈值复查)先在自己的收件箱上跑一套级联,攒一个月日志
给财务团队做欺诈与发票筛查按邮箱收费;拦下一次打给仿冒供应商的付款,就抵得上好几年在他们真实邮件上的影子模式结果
做 agent 成本审计一笔固定费用,梳理某个团队的 agent 循环,把它的判断类调用搬到 Jev用第二节那四个桶,把你自己 agent 的每一步分好类

第三个是最快能卖出去的。每个跑 agent 的团队都在为「判断」付前沿模型的价格,而审计能直接指给他们看:哪些调用该搬走。


最短版

把 agent 的每一步分成四类:创作、精确规则、从已知答案里挑、不可逆。把第三类搬到 Jev,相关的问题合成一次调用,criteria 写成情形并留出口,按动作分别设置信度阈值。Jev 拿不准的交给 Kimi K3,不可逆的步骤留给自己。

从一个你的 agent 每天要做五十次的决定开始。


技术栈

📁 Jev by TypeSafe AI ↳ https://typesafe.ai

📁 Jev API 文档 ↳ https://docs.typesafe.ai/api

📁 Kimi K3 API ↳ https://platform.kimi.ai

📁 Hassan 的 Jev + Kimi K3 欺诈流水线 ↳ https://github.com/Nutlope/jev-fraud

原文结尾配图:藏书塔里的巨鸟,下方站着三个小人影(动画画面)

原文作者的其它入口

- 收藏原文:链接会变、新仓库每周都在冒出来,留着当参考 - 每周 AI 架构、量化交易与 agent 经济的深度长文:@polydao,那里放他未加工的 prompt、自定义技能和还没到发推火候的东西 - Telegram 频道 Buzzoni Notes:t.me/+Wf8q84QkpyJhNjIy


数字来源与口径

对 TypeSafe 官方页面逐条回查的结果如下:

- 0.042 美元 / 百万 token、64K/32K token 上限、模型 jev-1.13.0、纯文本输入:与 docs.typesafe.ai/models 一致。 - 193.6 倍快、444.6 倍便宜:typesafe.ai 首页原文为「193.6x Faster, 444.6x Cheaper. *based on workflows for System One tasks (proof)」,旁边示例是 TypeSafe AI 0.000081 美元 / 0.114 秒,对照 LLM 0.013880 美元。这是厂商自己的评测,公司自己称其为「能期待的上限」。 - 12.2 倍便宜、10 倍快:文档站的 cookbook「Parallel questions」里写着,把 13 个问题合成一次 TypeSafe 调用「便宜 12.2 倍、快 10.0 倍,答案没有变化」;原文配图脚注注明该测试基于 jev-1.12、文档 53,777 字符。 - 0.5 转人工下限、0.9 破坏性操作前的要求:与文档站 Confidence 页一致(低于 0.5 走 route_to_human,高风险动作且置信度大于 0.9 才 confirm_then_execute)。 - **速率限制对不上**:原文写的是 jev-1.13 上每秒 1,200 个请求、250,000 token;官方文档当前写的是每秒 80 个请求、每秒 100K token。两处数量级不同,且文档说「限制会随容量调整」,请以调用时的文档为准。 - **Hassan 的 100 封邮件运行(1.42 秒、31 封升级、96/100、约 0.07 美元)**:出自他公开的运行结果与原文配图,本文未能独立复现。 - **Browser Use、1kpapers.com、Riley Brown、awlevin、tamara、Jarrod Watts 等案例数字**:均转述自原文,未独立核实。

来源与版权

- 原文:《How to Cut Your Agent Bill by 90% With Jev Engineering and Kimi K3》,作者 Mr. Buzzoni(@polydao),2026 年 9 月 29 日发布于 X 长文。原文链接:x.com/polydao/status/2104783226833186920 - 原文提到的一手材料:TypeSafe AI 官网、Jev API 文档、Kimi K3 API、Hassan 的开源欺诈流水线 - 配图:9 张均取自上述 X 长文,版权归原作者及原权利人(其中两张为影视/动画画面,仅随原文引用,不代表授权)。如权利人提出异议将移除。 - 取回路径说明:x.com 在本机网络不可达(直连超时),正文经第三方镜像 API api.fxtwitter.com 取回,配图经图片代理 wsrv.nl(多数)与 i0.wp.com`(兜底)下载;其中 7 张为原始尺寸,2 张为代理封顶的 1200 像素宽。正文与数字未做改写,翻译与整理过程中未加入原文没有的结论。