自建内容审核用 LLM 打分,单条输入截断到 2000 字再送模型,一篇 6000 字的推广文把违禁表述放在结尾,审核结果返回合规,上线后被监管抽查到。

一开始怀疑是「审核提示词没要求逐段输出结论」,查了一圈,方向不对。

把日志和配置对完,能解释这个现象的基本就这几处。输入按字符截断,尾部内容根本没进模型。还有一种是长文只做整体判断,没有分段扫描。

不容易想到的是,阈值只看总分,忽略局部高风险。

第一件事是按段落切分并逐段审核

python audit.py --chunk 1200 --overlap 100

任一段超阈值即整体拦截

python audit.py --max-score 0.8

再往下把命中段落原文写进审核结果

python audit.py --dump-hits

末了用尾部含违禁词的样本做回归

python audit_test.py --case tail_violation

恢复的判定其实很直接。尾部违规样本被判为不通过并给出命中段落,正常长文不被误杀,审核耗时增加在可接受范围。

提醒一点。审核覆盖率比单次判断精度更重要,长文必须分段,截断等于给违规内容留了一道后门。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189