最快的上手方式
已有账号可登录 TypeSafe API Console 并打开官方 Playground。官方于 9 月 22 日宣布暂时暂停新用户注册,截至 2026 年 9 月 26 日该公告仍置顶;不要假定现在能注册或领取此前公布的 5 美元额度。没有账号也可以先阅读下方请求示例。
- 先用 Noul 判断一个属性是否存在。
- 再用 Choice 做分类,用 Score 做有序评分。
- 一次请求只测试少量清晰问题,再逐步增加。
官方注册公告 · 官方 Playground · 额度与访问状态说明 · 计算调用成本
理解一次请求
state 是模型需要判断的上下文;questions 定义允许的输出;model 通常使用 jev-latest。Jev 会读取一次 state,并行评估全部问题。
示例任务:客服工单是否紧急。已有 API 权限时,在自己的服务端或终端设置 TYPESAFE_API_KEY,再执行以下请求;调用会消耗账户额度。
curl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": "Checkout has failed three times and we are losing sales.",
"model": "jev-latest",
"questions": {
"urgent": {
"type": "noul",
"instructions": "The message is urgent"
}
}
}'读懂结果,再由程序执行
以下是简化的教学返回示例,不是本站真实调用结果。answers.urgent.noul 表示“紧急”属性的概率估计,0.93 并不是工单已经处理,也不能直接当作准确率。实际响应还包括 usage;model 表示实际响应的版本。
下方 0.9 / 0.1 只是演示阈值,必须用自己的标注工单验证。中间区间进入人工复核;高概率也只进入优先审核队列,不自动退款或修改账户。Jev 输出判断,真正的队列写入由你的程序完成。
{
"model": "jev-1.13.0",
"answers": {
"urgent": {
"type": "noul",
"noul": 0.93
}
}
}// Illustrative policy: tune thresholds on your own labeled tickets.
const urgency = response.answers.urgent.noul;
if (!Number.isFinite(urgency) || urgency < 0 || urgency > 1) {
return queueForHumanReview(ticket);
}
if (urgency >= 0.9) return queueForPriorityReview(ticket);
if (urgency <= 0.1) return queueForNormalReview(ticket);
return queueForHumanReview(ticket);第一次调用不成功,检查什么?
- 鉴权失败:检查服务端密钥是否设置、Bearer 请求头是否正确;不要在日志或截图里公开密钥。
- 请求不被接受:检查 JSON、问题类型和字段;对照官方 API 文档,不要直接把图片或视频作为 state。
- 429 限流:尊重 retry-after(如有),使用有限次数退避重试;超时或服务不可用时送人工审核,不无限循环。
- 判断不符合预期:保存脱敏输入、模型版本和人工标签,修改问题边界后复测,不只看一条成功样例。
把问题写得可判断
- 把“这个客户怎么样”拆成紧迫度、情绪、主题和路由等原子问题。
- 在 criteria 中说明边界,避免只有模糊的选项名称。
- 根据置信度决定自动执行还是交给人工审核。
- 版本升级后重新验证阈值;生产环境可以固定模型版本。
进入生产环境前
- 用真实历史数据建立评测集。
- 记录模型版本、输入、输出和最终业务结果。
- 对中文任务单独测试准确率,不要直接套用英文结果。
- 为超时、限流和低置信度准备回退路径。
不要把 API 密钥放在浏览器前端。通过自己的服务端调用 TypeSafe API。
Continue reading
查看真实使用案例
看看 Jev 在完整工作流中负责哪一步。