跳至正文

从这里开始

Jev API 快速开始:通过 OmniaKey 发起第一次请求

Jev AI 独立教程 · 内容核对于 · Read in English

Jev API 接收一份上下文,对其中的有限问题做出结构化判断。本篇通过 OmniaKey 的专用接口检查一段合成测试文本,让你先理解鉴权和响应,再加入业务数据。

运行前需要一个可访问 Jev 的 OmniaKey 账户、API Key 和可用额度。Jev AI 是独立教程与调试工具;账户、模型可用情况和费用由 OmniaKey 管理。阅读本页不会触发 API 调用。

读完你能做什么

  • 向 /v1/alpha/search 发送 model、state 和 questions。
  • 把密钥保存在终端或服务端环境中。
  • 按问题 ID 读取 answers,不要按聊天消息解析。
本文目录
  1. 1. 准备 OmniaKey 密钥
  2. 2. 理解请求的三个字段
  3. 3. 先运行一次,再检查返回内容
  4. 4. 分清接口连通与决策有效
  5. 完整请求与运行方法
  6. 如何解读结果
  7. 请求失败时怎么办
  8. 接入前的验证
  9. 常见问题
  10. 依据与后续阅读

1. 准备 OmniaKey 密钥

通过本页按钮进入 OmniaKey 密钥管理页面,按需登录或注册,再创建适合当前模型权限和预算的 Key。运行前确认账户最新的模型访问权限、余额与支持地区。

在运行示例的终端环境中设置 OMNIAKEY_API_KEY。它是环境变量名,本教程不提供共享密钥。不要把真实值提交到公开仓库、写进浏览器代码,或放到 NEXT_PUBLIC 变量中。部署自己的应用时,应通过托管平台的密钥设置交给服务端读取。

2. 理解请求的三个字段

本示例使用 Jev 专用路由,而非聊天补全接口。模型参数使用 jev-latest,问题是判断一段合成文本是否描述了集成测试。你可以替换 state,同时保留稳定的响应读取方式。

每个问题都应有稳定的 ID。这里的 is_test 就是程序读取 answers 时使用的键。即使问题文字不变,修改 ID 后也要同步修改代码中的响应路径。

字段需要填写的内容
modeljev-latest,或你已经验证且账户可用的版本
state需要评估的文本或结构化上下文
questions带有 ID、类型与 instructions 的问题集合

3. 先运行一次,再检查返回内容

可以在终端运行下方 curl,或把 Node.js 示例保存为 jev-example.mjs。示例要求 Node.js 20 及以上版本,以使用内置 fetch 和超时接口。两种写法发送相同 JSON,直接调用 OmniaKey,不需要安装专用 SDK。

示例在 25 秒后停止等待,也没有自动重试。超时只能说明客户端没有及时得到结果,不代表上游一定没有处理请求。重复运行较大批次之前,应核对服务商侧的用量。

如果更喜欢可视化操作,打开自定义 Jev 预设,将其中 JSON 替换为本例的 model、state 和 questions,再用自己的 Key 运行。调试台默认自定义预设是另一个退款审查场景,请以实际预览的请求为准。

4. 分清接口连通与决策有效

Jev AI 在 2026 年 9 月 20 日留存过一次集成检查记录:HTTP 200、模型 jev-1.13.0、402 个输入 Token、62 个输出 Token,耗时约 1.48 秒。那次独立的合成测试覆盖了 Choice、Score 和 Noul。它是历史连通记录,不是延迟承诺,也不是本组业务案例的效果评测。

你自己的请求成功后,先检查实际模型版本、answers 和 usage。再用多组已知预期结果的输入测试,之后才接入应用。如果需要结果可复现,应在评估后确认可用的具体版本并固定它,而不是一直依赖可能更新的别名。

完整请求与运行方法

在 OmniaKey 创建 API Key,并在终端或服务器环境中设置 OMNIAKEY_API_KEY。下面的 curl 示例需要支持 --fail-with-body 的 curl(7.76 或更新),JavaScript 示例需要 Node.js 20 或更新。请使用测试数据;调用使用自己的账户额度,当前价格与可用性以 OmniaKey 为准。

将 JavaScript 保存为 jev-example.mjs 后运行 node jev-example.mjs。不要把密钥写进前端代码或提交到 Git。示例保留英文输入以便与调试预设对照;中文业务数据需单独验证效果。

curl

curl --fail-with-body --max-time 25 'https://api.omniakey.com/v1/alpha/search' \
  -H "Authorization: Bearer ${OMNIAKEY_API_KEY}" \
  -H 'Content-Type: application/json' \
  --data '{
  "model": "jev-latest",
  "state": "This is a synthetic integration test. No external action is requested.",
  "questions": {
    "is_test": {
      "type": "noul",
      "instructions": "Is the supplied state describing an integration test?"
    }
  }
}'
展开 Node.js 完整示例

Node.js 20+

// Node.js 20+. Save as jev-example.mjs and run: node jev-example.mjs
// Set OMNIAKEY_API_KEY in the server/terminal environment first.
const key = process.env.OMNIAKEY_API_KEY;
if (!key) throw new Error("Set OMNIAKEY_API_KEY before running.");

const body = {
  "model": "jev-latest",
  "state": "This is a synthetic integration test. No external action is requested.",
  "questions": {
    "is_test": {
      "type": "noul",
      "instructions": "Is the supplied state describing an integration test?"
    }
  }
};

const response = await fetch("https://api.omniakey.com/v1/alpha/search", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${key}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify(body),
  signal: AbortSignal.timeout(25_000),
});
if (!response.ok) {
  const retryAfter = response.headers.get("retry-after");
  throw new Error(`Jev HTTP ${response.status}; Retry-After: ${retryAfter ?? "not supplied"}`);
}
const result = await response.json();
console.log(JSON.stringify(result, null, 2));
// Inspect and validate the answer before connecting it to any external action.

在调试台选择「自定义 Jev」,将下方原生 JSON 粘贴到输入框,再输入自己的密钥并运行。

复制原生 JSON 到调试台

Native JSON

{
  "model": "jev-latest",
  "state": "This is a synthetic integration test. No external action is requested.",
  "questions": {
    "is_test": {
      "type": "noul",
      "instructions": "Is the supplied state describing an integration test?"
    }
  }
}

如何解读结果

本例读取 answers.is_test.type 与 answers.is_test.noul。Noul 用 0 到 1 的数值表达该是非命题的概率;它不是 JavaScript 布尔值,也没有独立的 confidence 字段。

同时检查 model、usage.input_tokens 和 usage.output_tokens。不同调用的模型版本和概率可能不同。结构正确说明协议跑通,不能据此认定之后每个判断都正确。

请求失败时怎么办

请求格式错误(如 400)
核对 model、state、questions,以及各题目的 type、选项或范围。不要把 chat messages 结构发到此端点。
鉴权或账户拒绝(如 401、402、403)
核对 API Key、账户余额、模型访问权限与当前服务商政策。状态码本身不能唯一确定原因;在 OmniaKey 后台检查,避免把密钥贴进反馈。
限流(429)
读取 Retry-After(如有),降低并发并采用有上限的退避。示例不自动重试,重复请求可能额外计费。
5xx、网络错误或超时
检查服务状态和连接,再决定是否重试。本例 25 秒超时仅中止客户端等待,不保证上游停止处理或免计费。
HTTP 成功但结果无法使用
检查响应结构、问题名与题目类型。缺少答案或未知选项应进入回退或人工检查,不要强制转换后直接执行。

接入前的验证

  • 明确标注为合成测试的输入,应与普通工作请求区分。
  • 无效或缺失密钥时显示鉴权错误,且不打印密钥。
  • 缺少 questions 时先修正请求,再重试。
  • 调用超时后,工作流应保留可人工检查的状态。

常见问题

能直接使用普通聊天补全请求吗?

这里通过 OmniaKey 的 Jev 专用路由发送 state 和 questions,messages 数组不能替代该协议。Node.js 示例使用 fetch,便于直接检查请求结构。

调用成功就代表免费吗?

不代表。请求使用你的 OmniaKey 账户,并适用当前定价和额度。调试台不提供共享额度,模型厂商曾公布的价格也不能直接代表你的网关账单。

依据与后续阅读

协议说明依据 OmniaKey 的 Jev 接入指南与鉴权文档核对。请求示例经过本地结构校验;本文不声称对每种业务场景完成了线上效果评测。本站不是模型开发者或 OmniaKey 官方网站。

用自己的任务试一次

先用测试输入查看原生请求与模型答案。有账户即可进入 OmniaKey 密钥管理;尚未注册时,按 OmniaKey 页面提示创建账户。