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。
如何确认已修复
- API: 打印
response.candidates[0].finish_reason。STOP表示模型自己写完了;MAX_TOKENS表示还被卡着 —— 调高max_output_tokens或降低 thinking 等级。 - AI Studio: prompt 下方的 token 计数会显示输出 token;完整回答会以自然的收尾结束,而不是停在半句话。
- 覆盖检查: 问一句”你覆盖了多少章,最后一章是哪一章?”如果数字和文档对得上,就没有内容被丢。
预防
- 任何超过约 50 页的文档,默认用 AI Studio 或 API。聊天 app 适合快查,不适合长文档工作流。
- API 调用始终显式设
max_output_tokens。默认 8,192 是”被截断”投诉的头号来源。 - 主动设
thinking_level(长回答用low或medium),别让推理吃掉可见输出。 - 扫描 PDF 先 OCR,每个上传 PDF 控制在约 1,000 页以内。
- 多段总结要逐段指定长度,并分多轮跑,不要一条巨型 prompt 全塞进去。