AI 检测 API

本页面向把 AI 筛查接入现有编辑或审核流程的工程师。SlopTotal 用 23 个独立检测器分析同一段文字,并展示每一个分数,免费且无需账号。

在自己的服务器上运行

一个容器,无需账号,无需 API 密钥。在 CPU 上运行;首次扫描会把约 2 GB 的模型下载到卷中。

shell
docker run -p 8000:8000 -v sloptotal-models:/app/models ghcr.io/pablocaeg/sloptotal

分析一段文本

发送文本或一个 url。返回的是完整报告:校准后的分数、结论以及每个引擎的结果。

shell
curl -X POST http://localhost:8000/api/analyze \
  -H "Content-Type: application/json" \
  -d '{"text": "Paste at least 50 characters of text here..."}'

响应(节选)

json
{
  "id": "8a17312e3cb5",
  "source_type": "text",
  "word_count": 95,
  "overall_score": 77.9,
  "overall_verdict": "Likely AI-generated",
  "engines_flagged": 13,
  "engines_total": 23,
  "language": "en",
  "language_support": "supported",
  "engine_results": [
    {
      "engine_name": "Fakespot",
      "score": 1,
      "verdict": "slop",
      "details": "AI probability: 100.0% (Fakespot APOLLO RoBERTa)"
    },
    {
      "engine_name": "Linguistic Markers",
      "score": 1,
      "verdict": "slop",
      "details": "Found 5 AI markers (density: 84.2/1k words): \"ever-evolving\", \"landscape\", \"moreover\", \"in conclusion\", \"ultimately\""
    },
    …
  ]
}

所有引擎都在忙时,API 返回 202 和一张票据:轮询 /api/queue/ticket/{id},直到报告生成。返回 429 表示队列已满,请在给出的秒数后重试。

接口

接口作用CPU 上的典型耗时
POST/api/analyze 对一段文本或 url 生成 23 个引擎的完整报告 2–8 s
POST/api/quick-score 四个分类器加启发式检查,适用于浏览器扩展和批量检查 0.1–0.5 s
POST/api/paragraph-score 每个段落一个分数 1–3 s
POST/api/scan/site AI 应用生成器留下的痕迹,以及页面文字的快速评分 1–3 s
POST/api/extract 上传的 .pdf、.docx、.txt 或 .md 文件中的文字 < 1 s
GET/api/report/{id} 一份已保存的报告 < 0.1 s

所有接口和字段见 README

托管 API. 本站背后的 API 位于 https://api.sloptotal.com。它是共享的,受队列限制,报告保存 30 天。如果用量稳定或文本需要保密,请自己运行。

引擎在找什么

用 任意大语言模型 生成的文字训练的分类器、衡量每个词有多容易预测的统计测试,以及对 AI 模型常用结构和套话的检查。

短文字给出的信号很弱。请至少使用 80 个词,条件允许时用 200 个词以上。文字越长,判断越稳。

如何解读结果

分数范围是 0 到 100。分数达到 55 的人类文字不到 2%;达到 80 的不到 0.5%。

先看分数,再看引擎表。几乎所有引擎一致时,分数是有力的证据。引擎意见分歧时,这段文字往往借助了 AI 或经过大量修改,值得人工仔细阅读,最好还能和作者当面聊一聊它是怎么写出来的。

背景

适用对象:把 AI 筛查接入现有编辑或审核流程的工程师。引擎会查找 任意大语言模型 的特征,并配合统计检验。

23 个引擎如何得出分数

SlopTotal 不只问一个模型的意见。它运行 23 个独立检测器并展示全部 23 个分数,因为有用的信息往往藏在分歧里。其中 9 个是经过训练、用来区分人类文字和机器文字的神经网络分类器,包括 DeBERTa-v3-large、RoBERTa-large 和一个 440 万参数的 BERT-tiny。7 个是不需要训练的统计测试:它们用困惑度、词元排名、log-rank 以及两个模型之间的交叉熵,衡量文字对 GPT-2 模型来说有多容易预测。其余 7 个直接分析文字本身:句子长度的变化、词汇、结构、含糊其辞的表达,以及 AI 模型常用的套话。

总分不是平均值。一个在 SlopBench 上拟合的逻辑回归模型,会按照每个引擎在已知其他引擎结果的情况下还能补充多少信息来分配权重,因此以同样方式出错的引擎不会被重复计算。很短的文字会被拉向中间值,因为寥寥几个词承载不了多少证据。

判定区间是根据人类文字设定的:45 分是人类文字中得分最高的 5% 的起点,55 分是最高的 2%,80 分是最高的 0.5%。所以 55 分以上意味着只有不到 2% 的人类文字能得这么高。其他语言有各自的模型,每种语言都标注为支持、实验性或尚不可靠。

在 3,252 篇文字上测量

准确度数字如果不说明是在什么上测的,就没有多大意义。SlopTotal 在 SlopBench 上测量。这是一个开放基准,包含 1,626 篇全部写于 ChatGPT 出现之前的人类文字,以及 1,626 篇主题相同、长度相同、由 14 个当前模型(包括 GPT-6、DeepSeek、Qwen、Llama、Mistral、Gemma 和 GLM)写成的 AI 文字。它涵盖新闻、百科、科学摘要、问答回答、Reddit 帖子、评论、学生作文、非母语者写的英语和小说,因为只在一种文字上测试过的检测器,数字一到真实环境就会垮掉。

有两部分专门用来发现不公平:1532 年至 1915 年间出版的 87 段文学作品,任何高分都必然是误判;以及英语为第二语言者写的作文,他们正是最常被检测器冤枉的人。每个主要数字都是在模型没有用来调参的文体上测得的,结果连同失败一起公布在代码库中。

检测在哪里失效

无论哪个检测器,短文字都不可靠。少于大约 80 个词时,分数会因用词不同而大幅波动,从大约 200 个词开始才会稳定。如果一条推文得到了一个非常笃定的结论,请怀疑这个结论。

稍加修改的 AI 文字是最难的情况。人每改写一遍,机器的痕迹就少一些,而且不存在一个改到某种程度就不再重要的临界点。源代码不在检测范围内:这些引擎是用自然语言训练的,无法可靠地检测 AI 写的代码,所以 SlopTotal 不作此承诺。

分数是证据,不是判决。用这 23 个分数决定该看哪里、该问什么,然后去问。任何检测结果都不应单独决定一个成绩、一次录用或一篇文章能否发表。

常见提问

SlopTotal 能检测 任意大语言模型 写的文字吗?

能。分数用 14 个当前模型的文字校准,分类器也用类似 任意大语言模型 的输出训练过。大量修改过的文字往往落在中间区间,所以请查看引擎表。

免费吗?

免费。无需账号,没有积分,也没有付费方案。