原文地址:Building an AI Text Detector From Scratch,by Sebastian Raschka, on 2025-08-15
从零构建AI文本检测器
一个涵盖数据集构建、模型训练、本地部署与RLVR的端到端项目
Substack最近在界面中推出了AI检测功能,这非常有意思。
与此同时,很多人向我询问有哪些值得动手实践的本地LLM项目,可以作为演示,展示小语言模型(SLM)的能力。
把这两件事结合起来,我觉得实现一个AI检测器会是个很有意思的选题。我还会把它作为验证器,训练一个小语言模型来生成能够规避检测的文本。这是一个小型教学项目,用于研究AI检测器的局限性,同时探索一种基于验证器的LLM应用方向——它不同于常规基于数学和代码训练的推理模型。

图1:Substack现已内置AI检测器功能。
如上所述,本教程的核心目标是通过搭建一个简易的AI检测器,讲解其工作原理。
在实际场景中,这类检测器可以用来过滤垃圾内容,也可以用来优化个人写作风格,避免文本变成AI生成的风格。举个例子,如果你写了一篇长文,想优化拼写和语法,用语法检查工具润色、提升可读性是很诱人(也确实很实用)的做法。这类工具很多,包括ChatGPT这类通用LLM都能做到。但这也带来了风险:即便内容本质上还是你自己写的,经过这类工具过度润色后,文风会变得像AI生成的,进而被标记为垃圾内容。
比如,有了AI检测工具,我们就可以提出要求:“修正我的语法,同时保证我的文本AI生成率得分为0%。”
言归正传,我们会在本文搭建一个功能完整的检测工具,目标有两个:一是讲解AI检测工具的工作原理;二是以它为案例,讲解更通用的技术——如何构建一个可与LLM配合使用的评分器或验证器。
免责声明:AI检测本质上是一场猫鼠游戏。AI检测器可以学会识别某些AI生成内容的特征模式,但下一代LLM可能会偶然或刻意地不呈现这些模式,从而规避检测。之后检测器又要更新迭代以识别新的模型,如此循环往复。此外,检测器也难免会出现误报(把人类写的文本判定为AI生成),这一点后面会详细展开。
项目目标
本项目有多重目标。总的核心目标自然是讲解AI检测器的工作原理,同时展示一个完整的LLM落地项目,涵盖评估、训练与本地部署,可用于实际场景。
项目最终会产出一套可供用户和智能体调用的AI检测API,以及一个易用的前端界面。

图2:项目后续开发的本地浏览器界面预览。它可以返回整段文本的AI评分,也能高亮显示各个文本片段的得分。
方法概述
我们会开发一种与Pangram模型类似的方案——据我所知,Substack的AI检测功能底层用的就是这类模型。
我在2023年写过一篇关于AI文本检测的短文:https://sebastianraschka.com/blog/2023/detect-ai.html
本质上,检测AI生成文本的方法有很多种,包括有监督分类器、基于扰动的概率检验、困惑度度量以及水印方案等。
在本教程中,我们会搭建一个输出0-100分的模型。它本质上是一个带概率评分的分类器,评分代表分类器判定文本为AI生成的概率。(更准确地说,这个分数是分类器基于其训练分布,对“AI生成”这个类别估计的概率。我们不能把它当作“文本由AI撰写”的通用概率。)
为此,我们会微调一个DistilBERT分类器(和我早期一篇Substack文章里描述的方法类似:https://magazine.sebastianraschka.com/p/finetuning-large-language-models ),具体细节我们到对应阶段再展开。