用 Jev 给商品问答打分:规模化质检

更新于 适用版本 Jev 1.13

TL;DR: 你不可能逐条读完商家在商品问答下写的每条回答,但可以每天给一个样本打分。每个维度一次 Jev scoring 调用——相关性、与商品页一致性、语气——得到带置信度和 rationale 的结构化分数。阈值把分数变成动作:整改、保留或下架。流水线与参数配置见下文。

打分维度

维度要少,每个维度就是一道独立的题:

{"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 一起存储。

继续阅读