廉价AI审核模型实测25种语言:长文能扛,单个脏词就翻车

实测表明决策模型是句子的好过滤器,却在孤立词上大幅掉队,分界线不沿语言而沿文本形态。
一位多语言 Magento 开发者用 6 个模型、25 种语言、1940 条文本、1.84 美元成本,测试了廉价决策模型 Jev 1.13 能否替代聊天模型做内容审核。结论和厂商「英语优先」的警告相反:在 360 条干净文本上 Jev 仅 1 次误报;在 8 种语言 520 条真实评论上准确率 94.0%,超越 gpt-5-mini 的 89.0%,且成本仅为其十分之一。真正的分水岭出现在短姓名字段——英语、西语、俄语、中日能抓住约 80% 的裸脏话词,其余 16 种语言仅约 20%,且分界不沿文字系统走,多数拉丁字母欧洲语言反而掉队。组合方案被证明有效:Jev 做第一层,Flash-Lite 接管 0.3-0.7 不确定区间,评论场景达 95.4% 准确率,86% 流量在 250ms 内返回。OpenAI 随后推出的同类端点画出同一条线,验证了结论的可重复性。

把「客户输入里有没有脏话」交给聊天模型来回答,是很多电商店铺的默认做法。但有人提出了另一条路线:用一个返回概率的廉价决策模型来做内容审核。问题是,厂商文档里藏着一句没人验证过的警告——英语优先,其他语言「能处理,但效果不均」。
一位维护多语言 Magento 模块的开发者决定自己动手测试。他管理的店铺有 30 个 store views,涉及 25 种语言和 9 种文字系统。他用 6 个模型、25 种语言、1940 条文本做了一轮基准测试,花了 1.84 美元 API 调用费,结论和直觉完全相反。
为什么值得自己测一遍
多语言店铺的文本审核有个固定形态:一边是短自由文本字段(名字、签名、刻字),另一边是长客户文本(评论、反馈)。两者对模型的要求完全不同——长文本有上下文可以依赖,短字段只有一个孤零零的词。
测试的核心问题不是「Jev 这个模型好不好」,而是:如果店铺用决策模型替代聊天模型来做多语言审核,在哪些语言上会吃亏,损失有多大,返回的概率值能不能让代码自动绕开这些坑?
开发者查阅后发现,截至测试时,这个模型类别还没有公开的多语言评测。于是他决定自己搭一套。
决策模型(Decision Model)与聊天模型(Chat Model)的核心差异在于输出形态而非模型规模。聊天模型经过指令微调,输出的是自然语言文本——代码拿到「这条评论是否违规」的答案后,还得再解析一遍字符串才能分支。决策模型则被训练成直接返回结构化信号,通常是 0 到 1 的概率值或枚举选项,只对输入 token 计费,响应更快、更便宜。代价是它放弃了生成式推理带来的上下文灵活度:面对需要「想一想」的模糊输入,决策模型往往只能给出一个低置信度的中间概率,而聊天模型可以用再长的推理链补足。这决定了前者适合做高流量的第一层粗筛,后者适合在不确定区间内兜底。
测试怎么做的
六个模型通过同一个 OpenRouter 密钥调用,Jev 版本固定在 jev-1.13.0,确保阈值有意义。对照组包括 gpt-5-mini(当前多数店铺实际使用的方案)、gemini-2.5-flash-lite(最便宜的 Google 结构化输出路线)、gemma-4-26b(开源权重)、llama-guard-4-12b(通常意义上的安全分类器)以及 gpt-oss-safeguard-20b。
数据来自三个来源:435 条由语言模型直接生成的母语文本(非翻译)、从公开脏话词表构建的 21 种语言姓名、以及 960 条来自公开语料库的人工标注真实评论。
所有标签由第二个模型盲审——来自不同模型家族的 GPT-6.1 Sol 在全新会话中只看到文本、语言和同一份政策。最终 1292 条文本通过双重验证。代码和数据全部开源,两条密钥加一条命令即可复现。
干净文本:25 种语言都没有误伤普通顾客
对店铺来说,假阳性比漏检代价更高——被拦下的顾客不会下单。
360 条干净文本覆盖 25 种语言和 9 种文字系统,Jev 只错了一次(一个瑞典语陷阱名)。gpt-5-mini 同样错一次,把一个愤怒但文明的法国投诉读成了骚扰。Flash-Lite 和 Gemma 各错两次,gpt-oss-safeguard 错四次,Llama Guard 错 26 次。
Jev 在全部 25 种语言中对干净文本的中位概率是 0.02-0.04。如果问题是「模型会不会开始拒绝我泰国店铺的普通顾客」,在这份数据上答案是不会。
真实评论:跨语言表现几乎没有下滑
520 条已验证评论,8 种语言,184 条攻击性内容,336 条干净内容。
| 模型 | 准确率 | 184条中检出 | 336条中误报 | p50延迟 | 每千次成本 |
|---|---|---|---|---|---|
| Gemini 2.5 Flash-Lite | 95.4% | 178 | 18 | 467 ms | $0.05 |
| Jev 1.13 | 94.0% | 175 | 22 | 250 ms | $0.05 |
| gpt-oss-safeguard-20b | 93.1% | 167 | 19 | 500 ms | $0.14 |
| Gemma 4 26B | 91.7% | 150 | 9 | 1,200 ms | $0.04 |
| gpt-5-mini | 89.0% | 184 | 57 | 2,180 ms | $0.48 |
| Llama Guard 4 | 60.6% | 152 | 173 | 376 ms | $0.05 |
三个出乎意料的发现:
英语下滑幅度很小。 英语 98.5%,其他七种语言 93.4%,只差五个点。Jev 的全部九次漏检概率都在 0.16-0.49 之间——是犹豫,不是自信地判错。它在全部 520 个案例中都正确识别了评论语言。
最贵的聊天模型对店铺来说太严格。 gpt-5-mini 检出了全部 184 条攻击性评论,但也误报了 336 条可接受内容中的 57 条,大约六分之一,多数标记为「骚扰」。这正是前面提到的「愤怒但文明」的投诉在规模化时的表现。
Jev 的犹豫出现在政策本身模糊的地方。 审核员单独标出了 186 条政策未明确裁决的评论。其中 39% 落入 Jev 的不确定区间(0.3-0.7),而清晰案例只有 14% 落入。这个区间不是噪声,大致对应一个谨慎的人类审核员也会停顿的位置。
准确率(Accuracy)作为审核指标存在结构性缺陷:它把假阳性和假阴性视为同等错误,但对电商店铺而言二者代价严重不对称——误拦一个真实顾客,损失的是这单及后续复购;漏放一条差评,损失往往只是少一条被隐藏的内容。因此表格里更该看的是「184 条中检出」和「336 条中误报」两列的绝对数,而非准确率排名。以 gpt-5-mini 为例,它 89.0% 的准确率低于 Jev 的 94.0%,但它在 184 条攻击性内容上一条不漏(假阴性为零),代价是 57 条误报。是否接受这种权衡,取决于店铺把假阳性还是假阴性视为更严重的失误。
短姓名字段:它掉队了,但分界线不是字母表
短字段是完全不同的任务。名字没有上下文,一个词,有时还经过伪装。
在有上下文的书面攻击性名字中,Jev 抓住了 30 条中的 28 条。但面对词表中孤立的脏话词,情况截然不同:
| 语言组 | Jev@0.5 | Jev@0.2 | gpt-5-mini | Flash-Lite | 已验证词数 |
|---|---|---|---|---|---|
| 英语 | 5 | 5 | 6 | 6 | 6 |
| 西班牙语、俄语 | 8 | 9 | 10 | 10 | 11 |
| 日语、中文 | 8 | 9 | 9 | 8 | 10 |
| 韩语 | 1 | 2 | 2 | 4 | 4 |
| 阿拉伯语、泰语、印地语(罗马化)、越南语 | 3 | 9 | 9 | 10 | 15 |
| 德语、法语、意大利语、葡萄牙语、荷兰语 | 4 | 9 | 14 | 13 | 22 |
| 波兰语、捷克语、匈牙利语、瑞典语、芬兰语、土耳其语 | 7 | 19 | 28 | 25 | 39 |
在英语、西班牙语、俄语、日语、中文中,Jev 抓住了 27 个已验证词中的 21 个(gpt-5-mini 25 个)。在其他十六种语言中,它只抓住了 80 个中的 15 个(gpt-5-mini 53 个)。
预期中分界线会沿文字系统走:拉丁字母扛住,西里尔文、阿拉伯文和 CJK 掉队。结果恰好相反——俄语和中文与英语持平,而大多数拉丁字母欧洲语言(德语、法语、荷兰语、匈牙利语、芬兰语、土耳其语)掉队。文档里说的「效果不均」是真的,但它不沿字母表分布。
伪装拼写带来第二个问题。在书面伪装名字上,Jev 抓住 25 个中的 13 个;gpt-5-mini 抓住全部 25 个。更糟的是,Jev 的概率会随伪装的外观本身上升——给一个完全干净的名字加上 leet 字符或点号,概率平均上升 0.16(英语中 0.32)。gpt-5-mini 在这 125 个伪装干净名字上零误报,它能看穿伪装。Jev 部分是在对外观做出反应。
词表词(Lexicon Word)与上下文中的词并非同一测试条件。词表词是脱离句子的孤立脏话或攻击性词汇,模型接收到的只有字符序列本身,没有任何语义线索。真实场景中一个名字出现在刻字、签名或收货人字段里,同样缺乏上下文——这正是测试选取词表词的原因:它模拟的是短字段审核里最坏的情况。与之相对,评论测试中的攻击性内容大多嵌在完整句子内,模型可以通过搭配、语气和句法结构判断。理解这条区别,才能解释为什么同一模型在两种任务上的表现会出现断崖式落差。
概率值:哪里可以设阈值
决策模型放在审核第一层的核心优势不是价格,而是代码可以分支的概率值。在评论场景中,这一点如承诺般有效。在短名字场景中,它的犹豫代价高昂。
Jev 在已验证词上的中位概率是 0.29,在干净名字上是 0.03。降低阈值能抓更多,但伪装干净名字的概率也同步上升:
| 触发阈值 | 词表词(107) | 伪装词(105) | 干净名字(125) | 伪装干净名字(125) |
|---|---|---|---|---|
| 0.5 | 36 | 37 | 0 | 7 |
| 0.3 | 53 | 66 | 0 | 29 |
| 0.2 | 62 | 91 | 2 | 55 |
| 0.1 | 87 | 102 | 12 | 81 |
短字段上单靠阈值解决不了问题。有效的是组合方案:Jev 在它确定的时候给出答案,聊天模型接管不确定区间。文档中常见的 0.3-0.7 区间在这里太窄——大多数漏检都落在 0.3 以下。
在评论场景中,第二个模型的选择比区间的选择更重要。Jev 加 gpt-5-mini 在 0.3-0.7 区间上给出 91.7%,反而比单用 Jev 差,因为 gpt-5-mini 的严格被带进来了。Jev 加 Flash-Lite 在同一区间上给出 95.4%,14% 的流量送到第二模型,每千次 0.055 美元。
阈值与不确定区间是概率输出的两种用法,不应混为一谈。阈值是单点判据:概率高于 0.5 即判定违规,低于即放行,实现简单但没有申诉空间。不确定区间则是一段分岔带:落在 0.3 到 0.7 之间的样本被标记为「拿不准」,交给第二个模型或人工复核。区间取值需要按场景调——评论场景下 0.3-0.7 足够,因为模型的犹豫恰好出现在政策本身模糊时;但短字段的多数漏检落在 0.3 以下,意味着真正的犹豫区间更靠下。区间越宽,兜底流量越大、成本越高;区间越窄,漏检越多。拟合区间需要留出验证集,否则容易在测试样本上过拟合。
多语言店铺的路由配方
| 场景 | 证据 | 推荐方案 |
|---|---|---|
| 评论、评价 | 520 条已验证真实评论,8 种语言 | Jev 优先,Flash-Lite 接管 0.3-0.7 区间。不要用 gpt-5-mini:它砍掉六分之一的合理评论 |
| 短名字:英、西、俄、日、中 | 书面名字和词表名字 | Jev 优先,gpt-5-mini 接管 0.1-0.7 区间。这些语言的词表名字上组合达到 gpt-5-mini 水平 |
| 短名字:其他 16 种语言 | 词表名字 | 用聊天模型:gpt-5-mini 保召回,Flash-Lite 保价格。Jev 在这里大约五个裸脏话词抓住一个 |
| 13 种无攻击性评论数据的语言;乌克兰语的任何场景 | 仅干净文本 | Jev 不会拦住普通顾客;是否抓住滥用未测量 |
还有一个表格看不到的问题:政策措辞中一个名词的改变就能移动判定——把字段名换成另一个词后,Jev 在同样 435 条文本上有 4 个答案改变,Gemma 5 个,gpt-5-mini 1 个。这里每一个数字都带着这个噪声。
这个测试没有证明什么
标签是模型标注的,不是母语者。两个模型一致不等于一个母语者——低资源词汇上的共同盲区能通过这个检查。每种语言的文本量很少,结论按语言组而非单个单元格得出。25 种语言中只有 12 种测试了攻击性评论,乌克兰语完全没有攻击性数据。审核员本身是 OpenAI 模型,与 gpt-5-mini 和 gpt-oss-safeguard 同族。阈值是在被评分的同一批文本上拟合的,没有留出集。这是一个快照,不是最终裁决。
对决策模型路线的意义
最初的建议经过测试后依然成立,但有了一个修正。对于评论和评价——用句子写成的文本——校准过的决策模型在所有可测试语言中都能作为第一层过滤器有效工作,它的不确定区间与政策本身模糊的位置吻合。对于短姓名字段,在一小部分语言之外,它还不是唯一的过滤器:一个裸脏话词和一个伪装词恰恰是它缺乏上下文的地方,而它的概率会对文本的外观做出反应。
厂商说「在你自己的内容上测试」。这就是那次测试,而它最有用的结果不是模型排名。是那条分界线不沿英语和世界其他语言之间走,而沿一个句子和一个孤立的词之间走。
补记:OpenAI 推出了同类端点,画了同一条线
在 Jev 发布两周后,OpenAI 发布了一个形状相同的决策端点:Decisions API(公开测试,模型 gpt-6-luna)。它返回概率或选择而非文本,只对输入计费,每百万 token 0.10 美元。开发者用同样的已验证条目、同样的政策和问题运行了它,并在旁边把同一个模型当普通聊天模型跑了一遍。
| Decisions API | gpt-6-luna 聊天模式 | Jev 1.13 | |
|---|---|---|---|
| 干净文本误报,共 360 | 0 | 0 | 1 |
| 已验证评论准确率(520) | 96.9% | 98.1% | 94.0% |
| 裸脏话词检出,共 107 | 38 | 95 | 36 |
| 评论 p50 延迟 | 243 ms | 2,281 ms | 250 ms |
| 每千次评论成本 | $0.10 | $0.10 | $0.05 |
决策端点画出了与 Jev 相同的线。在评论上它比 Jev 更好——同样的 175/184 检出率,误报从 22 降到 7——但在孤立词上同样弱。同一个模型通过聊天 API 能抓住 107 个裸词中的 95 个,所以弱点属于快速决策模式,不属于模型知道什么。
这个结论现在对两家厂商都成立了:决策模型是句子的好过滤器,但不是孤立词唯一需要的过滤器。
相关推荐

大厂AI工程化面试:前端监控到Agent全链路可观测性
从PerformanceObserver采集性能指标、onerror与unhandledrejection捕获异常,到RAG链路重排优化、上下文压缩控制token成本,再到对标LangSmith与Sentry的全站AI全链路可观测性体系设计,拆解大厂AI工程化面试的三层递进考点。

WorkBuddy保姆级教程:手把手搭建专属AI Agent工作助理
WorkBuddy保姆级教程:从豆包等聊天模型的局限讲起,手把手教你搭建专属AI Agent工作助理,实现本地文件批量处理与自动化操作,非程序员也能轻松上手。

Windows下用LangChain-Chatchat+DeepSeek搭建本地知识库
本文整理B站教程,详解Windows下用LangChain-Chatchat与DeepSeek搭建本地知识库的全流程,包括Anaconda环境配置、Ollama模型管理、镜像源加速及常见报错解决,助你快速实现RAG问答。