用 Jev 给商品问答打分:规模化质检
更新于 适用版本 Jev 1.13
TL;DR: 你不可能逐条读完商家在商品问答下写的每条回答,但可以每天给一个样本打分。每个维度一次 Jev
scoring调用——相关性、与商品页一致性、语气——得到带置信度和 rationale 的结构化分数。阈值把分数变成动作:整改、保留或下架。流水线与参数配置见下文。
打分维度
维度要少,每个维度就是一道独立的题:
- 回答相关性——是否回答了用户实际问的问题。示例数据(example fixture):
{"answer":8,"scale":[1,10],"confidence":0.86,"rationale":"直接回答了保修时长问题,并给出了具体数字。"}
- 商品页一致性——是否与页面列出的参数矛盾。这个维度的低分是最强的下架信号。
- 语气——是否得体,无垃圾信息、无推广链接。
每个维度单独一次 scoring 调用,题目不产生歧义,而且可以按维度分别处理:相关性不达标说明回答不行,一致性不达标可能意味着商品页本身要修。
质检流水线
商品问答下的商家/客服回答
|
v
每日抽样(如每个类目每 N 条抽 1 条)
|
v
逐维度调用 Jev scoring(1-10 分制)
|
v
按回答汇总各维度分数
|
+--> 任一维度 < 4 --> 标记整改或下架
|
+--> 全部维度 >= 4 且 < 7 --> 正常发布,纳入趋势跟踪
|
+--> 全部维度 >= 7 --> 计入商家质量指标
|
v
周报:按商家 / 类目汇总分数趋势
抽样控制成本,整改对象从趋势报告里来。
最小实现
import os, json, requests
URL = "https://openrouter.ai/api/v1/chat/completions"
# Confirm the exact model slug on the OpenRouter model page.
MODEL = "typesafe/jev-1.13"
DIMENSIONS = {
"relevance": "Does this answer the customer's question?",
"consistency": "Is it consistent with the product page specs below?",
"tone": "Is it respectful and free of spam or promotion?",
}
def score(dimension: str, question: str, answer: str, page: str) -> dict:
resp = requests.post(
URL,
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
json={"model": MODEL, "temperature": 0, "messages": [
{"role": "system", "content": f"{DIMENSIONS[dimension]} Score 1-10."},
{"role": "user", "content":
f"Question: {question}\nAnswer: {answer}\nPage: {page[:2500]}"}]},
timeout=30,
)
resp.raise_for_status()
# 示例数据(example fixture):
# {"answer":8,"scale":[1,10],"confidence":0.86,"rationale":"..."}
return json.loads(resp.json()["choices"][0]["message"]["content"])
def qa_answer(item: dict, low=4, high=7):
dims = [score(d, item["q"], item["a"], item["page"]) for d in DIMENSIONS]
worst = min(d["answer"] for d in dims)
if worst < low:
return "flag-rework", dims
if worst < high:
return "publish-track", dims
return "quality-credit", dims
官方 API 的端点与字段以 typesafe.ai 官方文档为准。
阈值建议
| 配置项 | 建议 | 理由 |
|---|---|---|
| 维度数 | 每条回答 3 个 | 够少才能题目清晰、成本可控 |
| 分制 | 每个维度 [1, 10] | 足以区分”及格”和”优秀” |
| 整改触发 | 任一维度 < 4 | 一个维度崩了,整条回答就不合格 |
| 优质档 | 全部 >= 7 | 作为商家质量指标的输入 |
| 抽样比例 | 每类目每 N 条抽 1 条,按量调 N | 控制每日成本;看趋势不需要全覆盖 |
| 低置信度 | 保留回答,分数标记待人工抽查 | 没把握的分数是数据,不是判决 |
打分(scoring)是 Jev 三原语(three primitives)之一;成本与延迟指南解释了为什么”抽样 + 廉价调用”优于全量人工阅读。商品问答打分案例里有跨类目的分数趋势实测。
本文适用版本:Jev 1.13。
FAQ
- 按哪些维度打分? 三四个业务相关的维度——是否回答问题、与商品页是否一致、语气是否得体——每个维度独立一次 scoring 调用,固定分制。
- 要全覆盖吗? 不用:每天抽样,自动标记最差回答进入整改或下架并跟踪趋势;只有合规敏感类目才需要全覆盖。
- 分数如何变成动作? 分数段执行:低分触发商家整改或下架,中分段保持发布并跟踪,高分段计入商家质量指标——每个分数都带 rationale 存档。