面向开发者的独立指南与社区
Jev 官方资料:typesafe.ai

免费体验 Jev

选择一个问题,或针对同一情境提出三个不同问题。先选案例,再修改输入,查看每个问题的结构化回答。

浏览 GitHub 项目
01 / 选定一个判断

先选一个具体案例

typesafe/jev-1.13

每次专注测试一种回答类型。 每次运行消耗一次每日体验额度。

1. Choice
questions.decision
预览 API 请求

预览不包含 API 密钥和验证令牌;每个问题 ID 都对应一个同名答案。

{
  "model": "typesafe/jev-1.13",
  "state": {
    "input": "我的订阅被扣了两次费用,可以帮我处理吗?"
  },
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "应该交给哪个团队处理?",
      "criteria": {
        "billing": "付款与退款",
        "technical": "程序错误与集成问题",
        "general": "其他问题"
      }
    }
  }
}

每个账号每天(UTC)可免费体验 6 次,00:00 UTC 重置。全站每日容量有限。输入会发送至 OpenRouter;本站只保存用量记录,不保存输入内容。

02 / 读取结果

填写后即可运行

运行案例后,每个问题都会返回一份结构化答案:Choice 选择选项,Score 给出分数,Probability 返回 0 到 1 之间的数值。

接入示例

把 Jev 接入你的代码。

表单会将文本作为 state.input,并发送一个或三个命名问题。每个结果都可在 answers.<question_id> 下找到。

看懂请求与返回字段

请求里定义要判断的问题,响应会按问题名称返回结果。下面解释示例中用到的 JSON 字段。

请求字段

model
模型 ID。示例指定 Jev 1.13,避免调用版本不明确。
state
待判断的文本或结构化数据;这里是一条客服消息。
questions
按名称组织的多个问题;返回的 answers 会沿用这些名称。
<question_id>
例如 action 或 urgency 这样的名称;答案会使用相同的名称。
type
回答类型:choice 选择一个选项,score 按等级评分,noul 判断是或否。
instructions
希望模型回答的具体问题或判断标准。
criteria
choice 的候选项、score 的有序等级,或 noul 中 false 与 true 的含义。

返回字段

answers
每个问题的结果,名称与请求中的 questions 对应。
choice
模型选中的选项键,也是概率最高的选项。
probabilities
各选项的概率分布,数值相加为 1。
confidence
根据概率分布计算的置信度;它不等于所选选项的概率。
score
根据各等级的概率加权得到的位置,可能落在两个等级之间。
legend
把 score 的数值位置对应回你定义的等级说明。
noul
是非问题的 0 到 1 数值;越接近 1 越倾向于“是”。

同一份上下文,分别测试 Choice、Score 和 Probability 三个问题。 每次运行消耗一次每日体验额度。 结果符合字段格式,也可能判断错误。请用自己的样本验证,并按业务风险设置分流阈值。

接口

OpenRouter

本站 Playground 通过 OpenRouter 调用固定版本的 Jev。当前价格和可用性请以模型页面为准。

接口
POST https://openrouter.ai/api/alpha/decisions
model
typesafe/jev-1.13
API 密钥
在服务端用 Bearer token 发送 API 密钥。
OpenRouter ↗
官方直连 API

TypeSafe

TypeSafe 提供自己的接口和 API 密钥。官方快速入门使用 jev-latest,也演示了如何一次发送多个问题。

接口
POST https://api.typesafe.ai/v1/systemone
model
jev-latest
API 密钥
在服务端用 Bearer token 发送 API 密钥。

服务端 TypeScript

TypeScript · fetch
// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");

const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + apiKey,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "typesafe/jev-1.13",
    state: {input: "A customer reports a duplicate charge."},
    questions: {
      team: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments and refunds",
          technical: "Bugs and integrations"
        }
      },
      urgency: {
        type: "score",
        instructions: "How urgent is the issue?",
        criteria: ["Can wait", "Needs attention today", "Immediate action"]
      },
      escalate: {
        type: "noul",
        instructions: "Should a human review this first?",
        criteria: {false: "No review needed", true: "Review before acting"}
      }
    }
  })
});

if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);
读取结果

三种问题,三种返回形式

选择代码所需的答案类型。一次提交多个问题时,每个问题 ID 都会收到单独的结果。

TypeSafe: Choice · Score · Noul ↗

Choice

choice · probabilities · confidence

模型选中的选项键,也是概率最高的选项。

Score

score · legend · probabilities · confidence

根据各等级的概率加权得到的位置,可能落在两个等级之间。

Noul

noul

是非问题的 0 到 1 数值;越接近 1 越倾向于“是”。

投入生产前

上线前请用有代表性的工单测试,记录模型版本,并把结果不确定或出错代价高的情况交给人工复核。示例中的 0.8 只是演示阈值。