教程

1M Token 是什么?AI 大模型超长上下文窗口有什么用?GPT、Claude、Gemini 对比

「100 万 Token」不是更会聊天的代名词。它是一次请求里模型能同时看见的预算。预算变大,整仓、整本手册、整段音视频才进得去;输出上限、计费档和有效召回并不会自动跟着变大。

2026 年各家旗舰模型的宣传页几乎都写着 1M Token。产品文案把它说成「读完整本书」「一次塞进整个代码仓库」,选型会却经常卡在另一组数字:这次调用要花多少钱、输出会不会被截断、中间那 40 万 Token 模型还记不记得。本文用工程口径解释 1M Token:它是上下文窗口的容量上限,不是理解力证书。读完你可以估算自己的材料大概占多少 Token,对照 GPT、Claude、Gemini 的窗口、输出与加价规则,并决定哪些 JSON 该进窗口、哪些该先在浏览器里校验。

1M Token 是什么:先把计量单位说清楚

Token 是模型读写文本的最小计费与计长单位。它不是字,也不是词。英文里一个常见词往往略多于一个 Token;中文、代码、JSON 键名、Base64 和空白缩进的换算都不一样。同一段 OpenAPI 文档,换一家模型、换一版分词器,Token 数会漂。所以「1M Token」首先是该模型这次请求允许占用的格子数,不是「一百万个汉字」或「一百万个英文单词」。

窗口量级 直觉对照(只作数量级,不是承诺)
1 Token英文大约 0.7–1 个词;中文常常 1–2 个字;代码和 JSON 更碎
8K–32K一篇长文、一份接口说明、一小段对话
128K–200K一本书的很大一部分,或中等仓库加几轮 Agent 轨迹
1M(约 100 万–105 万)厚手册 + 多文件仓库 + 长历史的量级;Claude 新分词器下同样 1M 能装的纯文本往往更少

上下文窗口(context window)是一次请求里输入 + 输出 + 推理/思考 Token(若单独计量)共享的预算。系统提示、工具 Schema、检索片段、多轮历史、模型正在生成的答复,都从同一口井里打水。窗口写成 1M,并不表示你能塞进 100 万 Token 的仓库,再指望它再写出 12 万 Token 的报告——输出也占窗口,而且各家还有单独的 max output。

把 1M 理解成硬盘容量更合适:格子在,不保证随机读中间任意一页都一样准。针在干草堆里能找着,不代表多跳推理、跨文件对照、长 JSON 里漏字段的检查也能撑到标称上限。选型时先问「这次要同时看见什么」,再问「看见之后要稳定产出什么形状」。

超长上下文窗口真正能干什么

窗口从 128K 跳到 1M,改变的是你还要不要先切块。以前必须检索或摘要才能塞进去的材料,现在可以整包交给模型。真正赚到的场景通常长这样:

  1. 整仓或大半个仓库:跨文件追调用链、对比两份实现、在一次请求里同时看见接口定义和测试夹具。
  2. 长文档与合同:政策手册、审计底稿、多附件 PDF。问题依赖前后文同时在场,而不是单页关键词命中。
  3. 多模态大包:Gemini 一类接口可以把文本、图、音视频、PDF 算进同一窗口。数小时音频或长视频转写不再必须先切片。
  4. Agent 长轨迹:工具定义、多次 tool result、中间失败重试都留在窗口里,模型才能根据完整观察选下一跳。循环本身见
  5. 对照与抽取:把两版 OpenAPI、两份导出 JSON、一份 Schema 放在同一请求里做 diff 级阅读,再按 Structured Output 吐出结构化差异。

这些场景有一个共同点:答案依赖同时看见多份材料。如果任务其实是「在十万页里找一句原话」,先检索往往更便宜、也更稳。1M 窗口的价值是减少错误切片,不是取消信息架构。

还有一类被高估的用法:把整站日志、整库 dump、未脱敏的生产 JSON 直接贴进提示词。窗口够大,泄露面和账单也一起变大。能进窗口的,应当是你已经决定可以离开本机的那一份。敏感字段先在本地抹掉,形状不对的 JSON 先修,再谈「一次喂进去」。

标称窗口 ≠ 有效窗口:输入、输出、计费

产品页上的 1M 是受理上限:超过就拒请求或截断。它不是「在 100 万 Token 处推理质量仍等于 8K」。RULER 一类评测里,有效长度常常只有标称的一半上下;用户侧更常见的体验是过了 200K–500K,跨文件对照开始漏,中间指令被忘掉。工程上应把标称窗口当天花板,把你自己的回归集当有效窗口。

第二组被忽略的数字是最大输出。GPT-5.6 Sol / Terra 与 Claude 旗舰同步请求大约 128K;Gemini 3.1 Pro 文档写的是 65,536,且默认 maxOutputTokens 往往更小,不显式调高就会静默截断。读完整本手册再「写一份同等篇幅的新规范」,窗口够,输出不一定够。下面这份预算把输出和余量写成一等公民,而不是塞完再看:

{
  "window": 1050000,
  "budget": {
    "system": 2400,
    "tools": 1800,
    "repoPack": 420000,
    "docs": 180000,
    "history": 80000,
    "reservedOutput": 128000,
    "headroom": 238800
  },
  "rule": "never fill to the sticker; reserve output plus 20 percent headroom"
}

第三组数字是钱。OpenAI 对 GPT-5.6 Sol / Terra 写明:输入超过约 272K Token 时,整单按 2 倍输入、1.5 倍输出计价。Gemini 长上下文常见另一档加价(文档多以超过 128K 或 200K 为界,下单前核对当前价表)。Claude Sonnet 5 文档把 1M 写成默认窗口、按标准价计,没有单独的「开长上下文」开关——但分词器更碎,同一段字可能变成更多 Token,等效成本照样升。Prompt cache 能救重复前缀,救不了每次都换的大包。

2026 对比:GPT、Claude、Gemini

下表按 2026 年 9 月各家公开模型卡归纳旗舰档,不把「全家所有快照」写进同一格。数字会变,下单以官方页为准;对比的是选型时真正分叉的轴:窗口、输出、加价、模态。

维度 GPT-5.6 Sol / Terra Claude Sonnet 5 / Opus 5 Gemini 3.1 Pro
上下文窗口 1,050,000 1,000,000(Haiku 4.5 仍为 200K) 1,048,576
最大输出 128,000 128,000(Batch 另有更高档) 65,536(默认值往往更低)
长上下文计费 输入 >272K:整单 2× 输入 / 1.5× 输出 文档称 1M 为默认、无单独加价档;新分词器更碎 常见超过 128K 或 200K 加价,以官方价表为准
输入模态 文本、图像 文本、图像(PDF 等走平台能力) 文本、图像、音频、视频、PDF
同系列注意 Luna 窗口约 400K,别把 alias 当成同一容量 同一 1M,新分词器能装的纯文本更少,需重新计数 多模态最宽;输出天花板更矮,长文生成先算输出
更适合 长报告、Responses 工具链、要 128K 输出的任务 长文档推理、Agent 循环、要稳定读完材料再作答 整仓 + 音视频/PDF 一次喂入,最终答复较短或走 Schema

官方出处请直接看模型卡,不要只记第三方汇总表:OpenAI 的 GPT-5.6 Sol 写明 1,050,000 窗口、128K 输出与 272K 加价线;Anthropic 的 Claude Sonnet 5 概览 把 1M / 128K 写成默认;Google 的 Gemini 3.1 Pro Preview 写 1,048,576 输入与 65,536 输出。价表和快照名会改,集成代码应读 usage 字段,而不是写死去年的常数。

怎么选,取决于瓶颈在哪。要一次吐出接近十万 Token 的迁移说明或长 JSON 数组,输出上限比窗口更要紧,GPT 与 Claude 旗舰更宽。要在同一次请求里听完会议录音再对照设计稿和仓库,Gemini 的模态是真实差异,不是营销形容词。要在 1M 里做多跳修改且中间指令不能丢,别只看标称——用你自己的「三处针、两处矛盾」回归集量有效召回,而不是只跑一次 needle-in-a-haystack。

三家都支持工具调用和 Structured Output,但外壳字段不同,最终 JSON 仍要本地校验。Gemini 一侧「只要 JSON」和「按 Schema 吐字段」的开关,见站内 Gemini API JSON 输出教程,本文不重复 SDK。

什么时候该塞满,什么时候该检索

1M 窗口没有取消 RAG,它只是把「切块边界」往后推。决策可以压成四条:

  1. 答案必须同时看见 A 和 B(两份规格、调用方和被调用方、Schema 和实例)→ 优先进同一窗口,不要各切各的摘要。
  2. 答案是「在很大语料里定位一小段」→ 先检索再把命中段 + 元数据送进窗口,别为了省检索管道付 272K 加价。
  3. 材料每次请求都变(新 diff、新导出)→ 长上下文很贵;能缓存的前缀(系统提示、工具清单、稳定手册)与易变包分开。
  4. 材料不能离开浏览器(密钥、生产用户字段)→ 窗口再大也不该上传。本地清洗、校验、抽样之后,再决定是否进云端模型。

Agent 循环尤其容易把窗口吃满:每一步 tool result 都留下。maxSteps 之前就该摘要旧观察,而不是指望 1M 当无限日志。工作原理见 AI Agent 是什么。

即便决定「整包进窗口」,也要打包,不要把 node_modules 和压缩产物算进 1M。一份显式的 context pack 比「把仓库拖进去」可审计:

{
  "pack": "context",
  "files": [
    { "path": "openapi.json", "tokens": 12000, "role": "contract" },
    { "path": "schema.ticket.json", "tokens": 400, "role": "outputShape" },
    { "path": "fixture.valid.json", "tokens": 800, "role": "example" }
  ],
  "omit": ["node_modules", "*.lock", "generated/**", "minified bundles"]
}

pack 里的 outputShape 应来自你真正会 parse 的那份 Schema,而不是模型自由发挥的键名。形状约束见 AI Structured Output。

长上下文里的 JSON:先本地校验再喂模型

超长窗口放大的是坏输入的杀伤半径。一份缺逗号的导出、一份 extra 字段疯长的工具回执、两份同名不同义的 Schema,塞进 40 万 Token 之后,你很难用肉眼定位。模型会顺着坏 JSON 继续编,账单照付。所以长上下文工作流应在上传前固定三步:

  1. Parse:确认每一份要进窗口的文件是合法 JSON / JSON5,而不是「看起来像」的日志或截断导出。
  2. Schema:对照你打算让模型遵守的那份契约;多文件时先确认它们是否还同源。
  3. Diff:新旧夹具、模型 arguments 与下游 body、两版 OpenAPI 先在本地看出差异,再问模型「为什么」或「怎么改」。

在浏览器里即可做完,数据不用先上传:JSON 格式化看 parse 与结构;JSON Schema 校验钉字段和枚举;JSON Diff对比两份将要同时进窗口的材料。校验失败的文件不要进 pack。

模型吐出的长 JSON 仍可能语法坏或形状漂,分层见 AI 生成 JSON 错误指南。Agent 工具 arguments 与最终答复是两份契约,不要共用一个窗口预算当「已经校验过」。

常见问题 FAQ

1M Token 等于一百万个汉字吗?

不等于。Token 是分词器切出来的片段。中文、英文、代码、JSON、图片和音频的换算都不同;同一家厂商换一版分词器,同样 1M 能装的字数也会变。要知道自己的材料占多少,用该模型的计数接口量,不要用「页数 × 经验系数」代替。

窗口都是 1M,是不是选哪家都一样?

不一样。输出上限、长上下文加价、模态、有效召回差得很远。GPT-5.6 的 272K 加价线、Gemini 更矮的输出天花板、Claude 新分词器更碎,都会让「同样 1M」变成不同账单和不同截断点。用你的回归集测,不要只对标称窗口。

有了 1M 窗口,还需要 RAG 吗?

需要。1M 适合必须同时看见的那一包材料。语料远大于窗口、或每次只有一小段相关时,检索仍然更便宜、权限更好控、也更好更新。很多生产系统是「检索圈出候选 + 长窗口精读」,不是二选一。

为什么把整个 JSON 仓库塞进去,模型还是漏字段?

窗口负责「看得见」,不负责「按契约说话」。漏字段、类型漂、markdown 包一层,是形状问题,要用 Structured Output / Schema,并在本地再校验。材料在中间被稀释时,有效召回也会掉——先保证进窗口的是合法、同源、已 diff 过的 JSON。

总结与下一步

1M Token 是 2026 年旗舰模型的共同量级:一次请求大约能同时看见一百万个 Token。它让整仓、整本手册、多模态大包变得可行,但不自动等于更强推理、更长输出或更低单价。GPT、Claude、Gemini 的分叉在输出上限、加价线和模态,不在「有没有 1M」这一个复选框。

下一步:用官方计数器量你的手册和仓库;按本文预算表预留输出与余量;对照三家模型卡核对加价阈值。要进窗口的 JSON,先在 JSONVue 做 parse、Schema 和 Diff。形状怎么钉死读 Structured Output,失败怎么分层读 JSON 错误指南。