从这里开始
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. 准备 OmniaKey 密钥
通过本页按钮进入 OmniaKey 密钥管理页面,按需登录或注册,再创建适合当前模型权限和预算的 Key。运行前确认账户最新的模型访问权限、余额与支持地区。
在运行示例的终端环境中设置 OMNIAKEY_API_KEY。它是环境变量名,本教程不提供共享密钥。不要把真实值提交到公开仓库、写进浏览器代码,或放到 NEXT_PUBLIC 变量中。部署自己的应用时,应通过托管平台的密钥设置交给服务端读取。
2. 理解请求的三个字段
本示例使用 Jev 专用路由,而非聊天补全接口。模型参数使用 jev-latest,问题是判断一段合成文本是否描述了集成测试。你可以替换 state,同时保留稳定的响应读取方式。
每个问题都应有稳定的 ID。这里的 is_test 就是程序读取 answers 时使用的键。即使问题文字不变,修改 ID 后也要同步修改代码中的响应路径。
| 字段 | 需要填写的内容 |
|---|---|
| model | jev-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 页面提示创建账户。