Jev 案例:商品问答答案打分(完整代码)
更新于 适用版本 Jev 1.13 示例数据(example fixture)
TL;DR: 本案例给电商平台的商品问答加了一道质量门禁:商家写的每个答案,发布前都由 Jev 1.13 的一道打分题按 1-10 打分。7 分及以上自动上线,其余退回商家后台。完整代码见下文。
场景
我们的平台允许商家在自己的商品页下回答买家提问。理论上这是很好的商品文档;实际上答案的水平从”真正有用”到”去看宝贝描述”再到”把问题里的关键词复制进营销文案”不等。全放行,问答区就废了;全人工审,每周几百条根本审不过来。
我们最终落地的门禁是对每个答案发一次打分题:
给这个回答解决买家疑问的程度打分,1 到 10 分。
7分及以上:自动发布;- 低于
7分:退回商家后台,并把 Jev 的rationale附上——让商家知道差在哪,而不是只收到一句”未通过”; - 无论分数多少,只要
confidence低:转人工审核队列——分数自己都在说”我不太确定”。
这里用的是 Jev 三种题型中的打分题(判断题、选择题、打分题——见三种题型指南)。Jev 是 TypeSafe AI 发布的 System One 判断模型,2026 年 9 月上线;调用走 OpenRouter 的 OpenAI 兼容端点。打分输出是类型化 JSON,所以发布门禁就是一次数值比较加一个阈值,主链路里没有任何文本解析。
请求
{
"model": "typesafe/jev-1.13",
"messages": [
{
"role": "system",
"content": "Scoring question. Score how well the answer addresses the buyer's question, on a scale of 1 to 10. Reply with JSON only: {\"answer\": <1-10>, \"scale\": [1, 10], \"confidence\": <0-1>, \"rationale\": <one sentence>}"
},
{
"role": "user",
"content": "Question: Is this desk made of solid wood or veneer? What is the load limit of the drawers?\n\nAnswer: Premium quality desk! Great value and fast shipping. Check our storefront for more deals."
}
]
}
响应
示例数据(example fixture)——用于说明格式,不是线上实测抓包:
{
"answer": 2,
"scale": [1, 10],
"confidence": 0.86,
"rationale": "The answer does not address either the material or the drawer load limit and reads as promotional copy rather than a product answer."
}
这里刻意展示低分例子:门禁的价值体现在拦下坏答案,而不是夸好答案。通过的答案结构完全相同,只是 answer 高、rationale 说清了回答覆盖了问题的哪部分。
复现脚本
设置环境变量 OPENROUTER_API_KEY 后运行:
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"messages": [
{
"role": "system",
"content": "Scoring question. Score how well the answer addresses the buyer'"'"'s question, on a scale of 1 to 10. Reply with JSON only: {\"answer\": <1-10>, \"scale\": [1, 10], \"confidence\": <0-1>, \"rationale\": <one sentence>}"
},
{
"role": "user",
"content": "Question: Is this desk made of solid wood or veneer? What is the load limit of the drawers?\n\nAnswer: Premium quality desk! Great value and fast shipping. Check our storefront for more deals."
}
]
}'
把 OpenAI 兼容响应里的 message content 按 JSON 解析,即可得到上面的字段。
关键参数
| 字段 | 取值 | 说明 |
|---|---|---|
model | typesafe/jev-1.13 | 固定版本,发布阈值才能长期有效。准确 slug 请以 OpenRouter 模型页为准。 |
messages[0](system) | 打分题 + 量程 + JSON 结构 | “是否解决了买家疑问”就是评分细则——每次调用都一字不差地写上。 |
messages[1](user) | 问题和答案,各自带标签 | 两个带标签的文本块;多部分问题没问题,细则本来就会奖励覆盖全部部分。 |
answer(响应) | 2 | 发布门禁:>= 7 发布,否则退回商家。 |
scale(响应) | [1, 10] | 回显量程,每次调用顺手做个哨兵检查。 |
confidence(响应) | 0.86(示例数据) | 低置信度无论分数多少都转人工。 |
rationale(响应) | 一句话 | 直接退给商家当可执行的修改意见,而不是一句冷冰冰的拒绝。 |
| 价格 | $0.0462 / 1M input tokens | 每个答案一次调用;预算前请在 OpenRouter 核对当前价格。 |
注意事项
- 响应为示例数据(example fixture);字段名请与官方文档核对后再依赖。官方 API 细节在 typesafe.ai,入口是System One 模型发布公告。
- 上线前请在 OpenRouter 模型页确认准确的模型 slug(
typesafe/jev-1.13)。 - 上线后盯着分数分布:如果几乎所有答案都是 8 分以上,说明阈值太松或评分细则太含糊——先收紧 system 提示词里的细则措辞。
- 如果同一输入多次打分结果不一致,先查排障指南;版本固定时,相同输入应当给出稳定的分数。
- 适用于 Jev 1.13(2026 年 9 月发布),演示渠道为 OpenRouter。