商品标题里含「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 条确属极限词,白名单配置进了审核流水线且可按类目覆盖。
误杀要靠白名单解决而不是放宽阈值,放宽会同时放过真正违规的内容,白名单要支持词级而不是整句。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
