应用场景

退款政策核查

询问是否请求了退款,以及书面政策是否支持这次退款。

问题

客服对每一张重复扣款工单都要重读一遍同一份政策。

代码拿到答案后怎么做

只有两个 noul 答案都高时才自动批准。其余一律进复核。

用两个 yes/no 问题替代人工判断

请求把工单、结构化订单(同一订单号上的两笔扣款)与退款政策文本一起作为 state。两个 noul 问题:消息是否请求退款,以及结合扣款情况政策是否支持。两者都返回概率。对一份写清重复扣款的政策,政策问题会返回接近 0.98 — 模型读的是你随 state 送达的真实政策文本,这正是用心措辞的政策页在此产生回报的地方。

政策机器

只有两个概率在同一调用里都过线才自动批准 — 不少团队定在 0.9。一高一低不等于批准一半:它带着分布进复核,而这正是客服一早就最想先看的东西。这里没有任何投机取巧的成分:模型回答的是你写下的政策是否覆盖这张工单,所以被政策排除的模式会正确落进复核。

政策核查专属的坑

失败模式是写给律师看的政策文本:“合理使用退款窗口”什么都解析不出来,而“自购买之日起 30 天内”则解析得干干净净。把决策严格限定在书面政策之内 — 如果政策自相矛盾(一处写 30 天,另一处写终身保修),先改写政策,因为对着矛盾文本给出的类型化答案不叫解决。另外,当订单数据在你的数据库里时,把相关字段显式放进 state,而不是让模型从散文里推断扣款。

请求结构

这是 playground 为该预设发送的完整请求 — 与你的服务器带 Bearer key 发往 /v1/systemone 的 JSON 相同。

curl
curl https://jevai.website/api/v1/systemone \
  -H "Authorization: Bearer $JEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "state": {
    "ticket": {
      "subject": "Duplicate charge",
      "message": "I was charged twice for order A-104. Please refund the duplicate."
    },
    "order": {
      "id": "A-104",
      "charges": [
        {
          "amount_usd": 49,
          "status": "captured"
        },
        {
          "amount_usd": 49,
          "status": "captured"
        }
      ]
    },
    "refund_policy": "Duplicate charges are eligible for a full refund of the duplicate amount."
  },
  "questions": {
    "refund_requested": {
      "type": "noul",
      "instructions": "Does `ticket.message` request a refund?"
    },
    "policy_supports_refund": {
      "type": "noul",
      "instructions": "Does `refund_policy` support the refund requested in `ticket.message`, given `order.charges`?"
    }
  }
}'

关于此用例的常见问题

可以附截图或 PDF 吗?
这个调用不行 — Jev 读文本,请把相关对话或订单要点以文本或 JSON 贴进 state。100,000 字符的上限足以容纳一段很长的对话。
这和聊天模型做决策有什么不同?
它的答案空间是有界的:两个问题都返回在你对政策的既定解读之上的概率,而不是需要你解析并信任的生成式散文 — 且整次核查只要 1 积分。
我们经常改政策 — 会坏吗?
不涉及任何重新训练:政策就是 state,发布新文本就改变模型看到的内容。但每当政策出现实质变化,把你的十个验证工单重跑一遍。
在测试台里运行