商品标题里含「X1 碳刷」,安全审核接口连续返回 risky,整批 300 条商品被拦下,人工复核全部为正常商品,运营要求给出可配置的白名单方案。

一开始怀疑是「白名单只支持整句匹配,无法覆盖组合词」,查了一圈,方向不对。

这类报错背后常见的原因有几处,逐个排除就行。审核模型把字母数字组合当成乱码或变体文本。另一种情况是标题里带极限词被规则命中。

少数情况下是审核结果没有记录命中的具体规则。

拿到命中的具体标签

curl -s -XPOST https://api.example.com/v1/moderate -H "Authorization: Bearer $KEY" -d '{"text":"X1 碳刷"}' | jq '.labels'

接着把型号词加进词级白名单再送审

python -c "print('whitelist += [\"X1\", \"X2 Pro\", \"碳刷\"]')"

随后对白名单词做占位替换后再审核

python -c "t='X1 碳刷';print(t.replace('X1','MODEL_A'))"

回归 300 条被拦样本确认放行比例

python moderate_eval.py --in blocked.csv --expect-pass 0.98

恢复的判定其实很直接。300 条样本重新审核后 296 条正常放行,剩下 4 条确属极限词,白名单配置进了审核流水线且可按类目覆盖。

误杀要靠白名单解决而不是放宽阈值,放宽会同时放过真正违规的内容,白名单要支持词级而不是整句。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189