Jev 案例:垃圾评论检测(完整代码)

更新于 适用版本 Jev 1.13 示例数据(example fixture)

TL;DR: 本示例把垃圾评论检测做成 Jev 1.13 上的一次判断题调用:回答 yes 且置信度过阈值就自动隐藏评论,其余进人工审核队列。完整请求体、示例数据(example fixture)格式的响应和可直接复制的 curl 命令见下文。

场景

我们的技术博客每篇文章下面都开了评论区。每隔几周就会来一波垃圾评论:假表广告、赌场链接、SEO 乱码——这些乱码往往先提一句文章主题,然后话锋一转就开始推某个折扣站。关键词过滤器只能拦住最不用心的那批;稍微做点混淆的(比如把域名写成 “best-deals-now dot club”)就能畅通无阻,团队只好每周花一个上午清理。

解决办法刻意做得非常朴素:评论进入系统时、还没展示之前,对每条评论发一次 Jev 判断题调用,然后按结果分流:

这正是 Jev 的适用形态:一道判断题(yes / no / unclear),返回类型化 JSON 和置信度,而不是一段要靠正则去抠的聊天文本。Jev 是 TypeSafe AI 发布的 System One 判断模型,2026 年 9 月上线;本示例走 OpenRouter 的 OpenAI 兼容端点。

一个设计上的关键点:我们不要求模型写任何东西。题目固定、答案空间固定、分流门禁完全建立在置信度上。

请求

{
  "model": "typesafe/jev-1.13",
  "messages": [
    {
      "role": "system",
      "content": "Judgment question. Is this comment spam? Answer yes, no, or unclear. Reply with JSON only: {\"answer\": <yes|no|unclear>, \"confidence\": <0-1>, \"rationale\": <one sentence>}"
    },
    {
      "role": "user",
      "content": "Great article! Also check best-deals-now dot club for 90% off designer bags, fast shipping worldwide!!!"
    }
  ]
}

响应

示例数据(example fixture)——用于说明格式,不是线上实测抓包:

{
  "answer": "yes",
  "confidence": 0.97,
  "rationale": "The comment promotes an external discount site, uses urgency and punctuation patterns typical of spam, and has no substantive relation to the article topic."
}

分流门禁只需要 answerconfidence 两个字段。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": "Judgment question. Is this comment spam? Answer yes, no, or unclear. Reply with JSON only: {\"answer\": <yes|no|unclear>, \"confidence\": <0-1>, \"rationale\": <one sentence>}"
      },
      {
        "role": "user",
        "content": "Great article! Also check best-deals-now dot club for 90% off designer bags, fast shipping worldwide!!!"
      }
    ]
  }'

响应外层是标准的 OpenAI 兼容 chat completion 结构;把 message content 按 JSON 解析就能拿到上面的字段。

关键参数

字段取值说明
modeltypesafe/jev-1.13固定版本。准确 slug 请以 OpenRouter 模型页为准,版本迭代时 slug 可能变化。
messages[0](system)判断题 + 答案空间 + JSON 结构一开始就声明 yes/no/unclear,类型化输出才稳定,不用赌模型自己猜对格式。
messages[1](user)评论原文评论原样传入;预清洗反而可能把 Jev 依赖的信号洗掉。
answer(响应)yes分流决策:yes 且高置信度 → 自动隐藏。
confidence(响应)0.97(示例数据)阈值判定的输入。请用你们自己的审核历史调阈值,别照抄本文。
rationale(响应)一句话每条自动隐藏决策自带审计线索,零成本。
价格$0.0462 / 1M input tokens每条评论一次短调用;预算前请在 OpenRouter 核对当前价格。

注意事项

继续阅读