Gemini 1M 上下文还是把长文档截断

Gemini 3.1 Pro 号称 100 万 token,长文档却被切到一半。几乎都是 8K 输出上限,不是输入。修复路径在此(截至 2026 年 6 月)。

Gemini 3.1 Pro 宣传 100 万 token 的上下文窗口。你扔进一个 400 页的 PDF,要它按章节总结,结果回答到一半就断了。或者你贴了一整个代码库,回复只引用了前四分之一。

最快的修复: 1M 这个数字针对的是输入。每次回复另有上限,而且即便用 Gemini 3.1 Pro,默认上限也只有 8,192 个输出 token(上限最高 65,536)。如果你在 API 或 AI Studio 里,把 max_output_tokens 调到 65536。如果你在消费版 Gemini app 里,就把任务拆成多轮,并要求紧凑、结构化的输出。大多数”1M 上下文骗人”的反馈,其实是输出上限或选错面板的问题,不是输入被截。

本文内容截至 2026 年 6 月(Gemini 3.1 Pro 于 2026 年 2 月 19 日发布,Gemini 2.5 那一代已从 app 下线)。

先对号入座

把你的现象对到原因,再跳到对应的修复步骤。

现象最可能的原因修复
回答在句子中间停住,模型其实”还知道”输出 token 上限(默认 8,192)步骤 1 / 步骤 2
同样 prompt 在 app 里比 AI Studio 短消费版输出限制步骤 1 / 步骤 3
超长单轮 prompt 像是被静默裁剪单消息 / 等级上下文上限步骤 6
你用的是免费版 Gemini上下文是 32K,不是 1M步骤 6
扫描件 PDF,检索质量很差文档被当图片读了,而非文字步骤 5
”Thinking” 跑得很长,可见回答很短推理 token 吃掉了输出预算步骤 1 / 步骤 4

常见原因

1. 是输出上限,不是输入上限(最常见)

你可以给 Gemini 输入最多 1M token。但每次回复另有上限。截至 2026 年 6 月,默认是 8,192 个输出 token,Gemini 3.1 Pro 的模型上限是 65,536。“每章都总结”这种动辄 3 万字的需求,一次回复装不下,不管你输入了多少。

如何判断: 回复在句子或段落中间戛然而止,模型显然”还知道”,只是输出预算用光了。在代码很多的回答里,app 有时会直接显示提示:A code sample in this response was truncated because it exceeded the maximum allowable output.

2. 消费版比 AI Studio 或 API 更早截断输出

gemini.google.com 比 AI Studio 或 API 更早截断输出。1M 上下文技术上是有的,但 app 的 UI 层不让你调 max_output_tokens —— 只有 API 和 AI Studio 才暴露这个旋钮。

如何判断: 同样 prompt + 同样文档,app 给的回答明显比 AI Studio 短。

3. 聊天面板的单消息与算力配额限制

app 还有单轮限制。2026 年起 Google 把 Gemini Apps 改成了按算力计费的用量模型:每一轮按 prompt 复杂度、所用模型/工具、对话长度打分,以 5 小时为刷新窗口,直到触及每周上限。超长单轮 prompt 可能被裁剪或拒绝。

如何判断: 回答在某个圆整 token 数附近断掉,或者你跑了几轮重型长文档后收到”已达上限”的提示。

4. 免费版拿不到完整 1M

免费 Gemini 上下文上限是 32K token(以 Google 自己的 Gemini Apps 用量页为准)。完整 1M 窗口是 Google AI Pro($19.99/月,旧称 “Gemini Advanced”)或 AI Ultra($99.99/月)的功能,AI Studio 和 API 里也有。

5. 文档被当成图片传了,而不是文字

如果 PDF 是扫描件(没有 OCR 文字层),Gemini 会把每一页当图片处理。图片页的 token 计量方式不同,检索效果也远不如真正的文字,长扫描件因此很快就崩。

6. Thinking 吃掉了输出预算

Gemini 3.1 Pro 会产生内部推理 token,这些和可见回答共用同一份输出预算。在 HIGH thinking 等级下,大约有 18,000-30,000 token 可能耗在推理上,留给可见回答的空间就被挤掉了。降低 thinking 等级能腾出输出空间。

最短修复路径

步骤 1:认真做长上下文,用 API

消费版不是为 1M token 工作负载设计的。用 API,并显式设置输出上限和 thinking 等级。当前的模型字符串是 gemini-3.1-pro-preview

from google import genai
from google.genai import types

client = genai.Client(api_key="YOUR_API_KEY")

with open("long-doc.pdf", "rb") as f:
    doc = f.read()

response = client.models.generate_content(
    model="gemini-3.1-pro-preview",
    contents=[
        types.Part.from_bytes(data=doc, mime_type="application/pdf"),
        "每章用 200 字总结。",
    ],
    config=types.GenerateContentConfig(
        max_output_tokens=65536,
        thinking_config=types.ThinkingConfig(thinking_level="low"),
    ),
)
print(response.text)

这里有两点关键:max_output_tokens=65536 把回答上限提到模型最大值;thinking_level="low" 防止推理把这份预算吞掉。Gemini 3.1 Pro 的合法 thinking 等级是 "low""medium""high"("minimal" 只在 Flash 系列上有,3.1 Pro 没有),不指定时 API 默认用 "high",所以要主动设。每次都查一下 response.candidates[0].finish_reason —— 如果是 MAX_TOKENS,说明你确实是被输出上限截断了,该调高它或拆分任务。

步骤 2:不想写脚本就用 AI Studio

AI Studio 把 API 的旋钮都暴露出来了,做原型免费。

aistudio.google.com
-> 模型:Gemini 3.1 Pro
-> 把文档丢进 prompt
-> 打开右侧的 "Run settings"
-> 把 "Max output tokens" 调到 65536
-> 长回答时把 "Thinking" 设为 Low 或 Medium

注意:直接上传的单个 PDF 大约限制在 1,000 页和几 MB 以内,更大的文件要先拆分再传。

步骤 3:把任务分到多轮

如果非用消费版不可,单轮输出上限每轮都会重置,所以把活儿摊开:

第 1 轮:"只总结第 1-5 章。完成后说 DONE。"
第 2 轮:"现在总结第 6-10 章。"
第 3 轮:"现在第 11-15 章。"

每一轮都有自己独立的输出预算,分轮做能拿到单条超长 prompt 拿不到的完整覆盖。

步骤 4:让输出结构化、更短

“每章 200 字摘要”比”全面分析”压缩率高得多。明确指定长度:

对每一章,只输出:
- 标题
- 3 个 bullet(每个最多 15 字)
- 1 句关键引用(最多 30 字)
到第 10 章为止。

紧凑的结构和 bullet,在同样的输出预算下能塞下更多章节。

步骤 5:确认文档是按文字而不是图片被读进去的

PDF 要看是不是真正的文字 PDF —— 文字 PDF 可以直接用。扫描 PDF 需要先做 OCR(Adobe Acrobat 的 OCR、ABBYY,或另存为 Google 已 OCR 过的 Doc)。想快速验证,就让 Gemini 原样引用第 50 页的某句话 —— 如果引不出来,那一页很可能是图片而不是文字。

步骤 6:确认你的等级,以及用对面板

如果你用免费版 Gemini,上下文是 32K,不是 1M。升级到 Google AI Pro 在 app 里拿到 1M 窗口,或者用 AI Studio(免费、完整窗口、可调输出上限)做长文档。任何超过约 50 页的内容,优先用 AI Studio 或 API,而不是聊天 app。

如何确认已修复

  1. API: 打印 response.candidates[0].finish_reasonSTOP 表示模型自己写完了;MAX_TOKENS 表示还被卡着 —— 调高 max_output_tokens 或降低 thinking 等级。
  2. AI Studio: prompt 下方的 token 计数会显示输出 token;完整回答会以自然的收尾结束,而不是停在半句话。
  3. 覆盖检查: 问一句”你覆盖了多少章,最后一章是哪一章?”如果数字和文档对得上,就没有内容被丢。

预防

  • 任何超过约 50 页的文档,默认用 AI Studio 或 API。聊天 app 适合快查,不适合长文档工作流。
  • API 调用始终显式设 max_output_tokens。默认 8,192 是”被截断”投诉的头号来源。
  • 主动设 thinking_level(长回答用 lowmedium),别让推理吃掉可见输出。
  • 扫描 PDF 先 OCR,每个上传 PDF 控制在约 1,000 页以内。
  • 多段总结要逐段指定长度,并分多轮跑,不要一条巨型 prompt 全塞进去。

相关

外部参考:Gemini Apps 用量限制(Google 支持)Gemini 3 开发者指南

标签: #Gemini #排查 #thinking