为什么 ChatGPT 不断截断你的写作:名为 Truncation 的隐藏 AI 系统以及我们如何阻止它

发布: (2026年3月8日 GMT+8 12:39)
5 分钟阅读
原文: Dev.to

Source: Dev.to

隐藏的 AI 系统——截断(Truncation)

每个主流的 AI 写作工具(ChatGPT、Claude、Gemini、Copilot)都会在系统层面运行一种行为,悄悄地把你的内容截短。它从不征求许可,也不发出警告,只是把被缩短的输出呈现出来,好像没有缺失任何内容一样。

我们是如何发现的

在使用 AI 辅助创作一部 30 章节、114,000 字的小说时,我们注意到大约在第 12 章时,原本应该有约 6,000 字的场景只剩下约 1,500 字。详细的对话被压缩成类似 “他们长时间讨论了情况” 的单句摘要,原本计划的角色戏份也完全消失。

没有错误信息或警告——只有看似完整的章节。但字数却讲述了不同的故事:我们要求 5,000 字的章节,却只收到约 1,400 字。

模型输出限制

AI 模型有两个容量限制:

模型最大输出 Token 数约等于字数
GPT‑4 Turbo4,096~3,000
GPT‑4o(标准版)4,096~3,000
GPT‑4o(长输出,仅 API)64,000~48,000
GPT‑5128,000~96,000
Claude 3 Haiku / Sonnet / Opus4,096~3,000
Claude 3.5 Sonnet8,192~6,100
Claude Opus 4.664,000~48,000
Gemini 1.5 Pro8,192~6,100
Gemini 2.5 Pro(默认)8,192~6,100
Gemini 2.5 Pro(最大,API)65,536~49,000

如果你让任何标准 AI 模型写一章 5,000 字的内容,绝大多数模型都无法在一次响应中交付。当请求超过模型的输出上限时,截断会自动激活。

元数据可见性

当通过开发者 API 触发截断时,响应会包含一个元数据字段,指示被截断的情况:

  • OpenAI: finish_reason: "length"
  • Anthropic: stop_reason: "max_tokens"
  • Google: finishReason: "MAX_TOKENS"

在网页界面(ChatGPT、Claude、Gemini)中,这些元数据被隐藏,用户无法得知内容已丢失。

实用的缓解措施

  1. 对每次输出进行字数统计
  2. 自行将长请求拆分成更小的块
  3. 让 AI 确认它到底交付了多少内容
  4. 使用 “从[精确引用]继续”,而不是模糊的 “继续”。
  5. 留意那些用摘要句子取代真实内容的情况

Bulletproof Writer v3.1 中的截断防御

在小说创作的经历之后,我们在自己的 AI 写作工具中内置了一套防御系统,称为 截断防御(Truncation Defense)。它分为多个层面运行:

  1. 预检计算——在开始写作前估算请求的内容是否能在模型的输出容量内。
  2. 分块协议——将超大请求拆分为经过计算的片段,并使用明确的续写标记,避免出现空白、重复或摘要桥接。
  3. 零容忍执行——指示 AI 绝不悄悄截断、压缩、摘要或缩短创意内容。
  4. 截断检测——每次输出后,将实际字数与预期字数对比,若有不足立即标记。

如果你使用 AI 写作的文本长度超过约 3,000 字,极有可能已经因为截断而丢失内容。问题不在于它是否发生,而在于你在不知情的情况下已经失去了多少。

Bulletproof Writer v3.1 将截断防御与 90 多条 AI 写作输出完整性规则一起提供。

0 浏览
Back to Blog

相关文章

阅读更多 »

对话数据集的问题

对话数据集的问题:大多数用于训练和评估语言模型的对话数据集仅包含文本——说话者标签、消息,有时……