Jev API:几乎所有教程都写错的那个端点

Jev API 不在一个 OpenAI 兼容客户端以为它在的地方。把那样的客户端指向 Jev,服务端在模型读到你的文字之前就把你打发走——key 没问题,模型名也没问题,端点错了。这一页只讲 HTTP 这一层:能用的路径、它要的请求体,以及四个接入渠道怎么选。Python 和 JavaScript 的库代码在Jev SDK,模型本身从Jev AI 是什么开始。

为什么 chat/completions 会失败

试一个新模型通常就是把一个字符串换进你写好的调用里。这招对 Jev API 不管用,而且失败得很响。通过 OpenRouter 把 Jev 发到常规聊天端点,返回体是这个:

typesafe/jev-1.13 is a decisions model and cannot be used with the
chat/completions endpoint. Use the /api/alpha/decisions endpoint instead.

报错点名了怎么修。原因值得两句话,这一页其余的古怪都由它推出来:聊天端点的契约是 messages 进去、生成的 token 出来;Jev 从不生成 token,它把输入读一遍,每道问题返回一个类型确定的值。没有 messages 数组可接,没有 assistant 轮次可追加,也没有东西可流式推送,所以那条同时要求这三样的路由干脆拒收,而不是半吊子地跑。

实际后果是 Jev API 在每个渠道上都有一条自己的 decisions 路径,而且彼此不同。走 OpenRouter 是 POST /api/alpha/decisions;直接跟 TypeSafe 说话,官方 SDK 发往 https://api.typesafe.ai/v1/systemone。不同域名、不同路径,但请求体里是同样的三个字段——那才是值得学一次的部分。

Jev 要的请求体长什么样

一个完整的 Jev API 调用,三种问题类型装在同一个请求里,也是本站演练场发的形状:

curl -X POST https://openrouter.ai/api/alpha/decisions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "typesafe/jev-1.13",
  "state": "I paid yesterday by card and still have no activation code. I need it tomorrow.",
  "questions": {
    "category": {
      "type": "choice",
      "instructions": "Which queue should handle this message",
      "criteria": {
        "not_received": "Paid but has not received the product",
        "refund": "Asking for a refund",
        "presale": "Has not bought yet, asking about price"
      }
    },
    "urgency": {
      "type": "score",
      "instructions": "How time-sensitive is this",
      "criteria": ["Just asking", "Wants it resolved today", "Needs it immediately"]
    },
    "is_frustrated": {
      "type": "noul",
      "instructions": "The customer sounds frustrated or angry"
    }
  }
}'

三个键,没有外层封装:modelstatequestions。温度、最大 token、停止词、system prompt,这些概念在这里一个都不存在。

state —— 你交给它看的东西

被判断的材料:一张工单、一封邮件、一次表单提交、一份文档。常见的是纯文本,结构化 JSON 也收——要分类的东西本来就带字段时这很重要。钱花在 state 上,因为 Jev API 只按输入 token 计费。

questions —— choice、score、noul

一张从你自己起的名字到类型化问题的映射,在同一次调用里一起回答,只收一次输入费。choice 收一组带标签的判据,返回其中一个标签外加每个标签的概率;score 收一列从低到高排好的描述,返回一个可能落在两级之间的数;noul 收一条指令,返回 0 到 1 的一个概率。名字是你起的,答案也按这些名字回来,所以要为你的代码起名。

通往 Jev API 的四条路

两条公布价格的路,token 单价一样。不一样的是你要开什么账号、token 之外还交什么钱,以及你把多少东西交出去。

TypeSafe 直连

console.typesafe.ai 用 Google 账号或邮箱验证码注册,没有等候名单也没有邀请这一步——首页那个 Join Waitlist 按钮并不拦着控制台,栽在这上面的人不少。key 放在 TYPESAFE_API_KEY 环境变量里,请求发往 api.typesafe.ai。官方库默认认这条路,想让 SDK 零配置跑起来就选它。

OpenRouter

OpenRouter 按 TypeSafe 自己的价转卖——每百万输入 token $0.042,输出免费,token 本身不加价。成本落在账号那边:最低充值 $10,刷卡另收 5.5% 的支付处理费且不低于 $0.80,加密货币付是 5%。已经在那儿存着余额的话,这是改一行的事。本站也走这条路调 Jev API,所以我们公布的延迟是 OpenRouter 的数字,不是直连的。

Vercel AI Gateway

应用本来就部署在 Vercel 上,这个网关把管 key 这一步整个省掉。Jev 上线 24 小时内触达了将近 13% 的 Vercel 付费团队,是那个网关历史上被采用得最快的模型。这该读成关于分发的事实,不是关于质量的:网关握着你的凭据时试一个模型只要一行,那些团队里不少只是在试,没有在发版。

第三方转售商

有若干站点把 Jev 包在自己的托管界面后面转卖,在直连价之上加一层。我们刻意不点名也不给倍数:查到的报价在不同页面之间自相矛盾,说改就改,公布一个站不住的数字比不公布更糟。要用之前先看转售商自己的价格页。这条路诚实的适用面很窄:你想要现成的界面,又不想自己开账号。

并排看:每条路各自要你付出什么

四条路通向同一个 Jev API、同一份权重,变的是周围的手续。

渠道端点token 之外的成本
TypeSafe 直连api.typesafe.ai/v1/systemone未公布
OpenRouteropenrouter.ai/api/alpha/decisions最低充值 $10;刷卡 5.5%,下限 $0.80;加密货币 5%
Vercel AI Gateway由网关托管看你的 Vercel 套餐怎么计费
转售商转售商自己的一笔没公布的加价

费率与注册细节核对于 2026-09-20。跟小语言模型逐次调用的算术在价格与获取方式。不想先写代码就想看到真实返回,本站的演练场会发出上面那个请求,并导出成 curl。

常见问题

Jev API 的端点是什么?

两个,取决于你从谁那里买。走 OpenRouter 是 POST https://openrouter.ai/api/alpha/decisions;直接走 TypeSafe、也就是官方 SDK 用的那个,是 POST https://api.typesafe.ai/v1/systemone。两个收同样的请求体。

为什么 chat/completions 不行?

因为 Jev 是决策模型,服务端在拒绝文案里已经说了。它不收 messages 数组,也不产出 token,聊天那条路既没有东西递给它,也没有东西可返回。

拿 Jev API 的 key 需要等候名单邀请吗?

不需要。console.typesafe.ai 是开放注册,用 Google 账号或邮箱验证码。营销首页那个 Join Waitlist 按钮不会挡住控制台,OpenRouter 和 Vercel 网关同样开放。

Jev API 多少钱?

每百万输入 token $0.042,输出按零计费。一次一千 token 的分类,花掉的是一分钱的零头。要紧的比较是跟你本来会用的小模型比,在价格与获取方式

哪条路最便宜?

TypeSafe 直连和 OpenRouter 在 Jev API 上按 token 收同一个价,差别在账号这一层:OpenRouter 多一条最低充值和一笔支付处理费,TypeSafe 直连两样都没公布。转售商比这两条都贵。

Jev API 支持流式返回吗?

没有东西可以流。流式存在的意义是让你在 token 被生成的同时显示它们,而 Jev 一个 token 都不生成——一次计算,然后是一整组做完的类型化答案。官方客户端根本没暴露流式方法。

Jev API 怎么调:被所有教程写错的那个端点