上下文长文本
1M 上下文窗口实战
·约 6 分钟阅读
Claude 的标准上下文窗口是 200K token。通过 Beta 扩展,Sonnet 和 Opus 支持高达 1M token 的超长上下文——可以一次性处理一整本书、一个完整的代码库、或数百页的文档。
你将学到什么
- 200K vs 1M 上下文窗口的区别和使用方式
- 超长上下文的实际应用场景
- 性能和成本考量
- 最佳使用策略
上下文窗口基础
| 模型 | 标准上下文 | 扩展上下文(Beta) | 最大输出 |
|---|---|---|---|
| Opus 4.6 | 200K | 1M | 128K |
| Sonnet 4.6 | 200K | 1M | 64K |
| Haiku 4.5 | 200K | — | 64K |
启用 1M 上下文:
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=8192,
betas=["long-context-2025-01-01"],
messages=[
{"role": "user", "content": very_long_text + "\n\n请总结以上内容"}
]
)
1M Token 能装多少内容?
| 内容类型 | 大约容量 |
|---|---|
| 英文文本 | ~75 万词(约 3 本长篇小说) |
| 中文文本 | ~50 万字 |
| 代码 | ~25 万行 |
| PDF 文档 | ~500 页 |
应用场景
场景一:整本书分析
# 一次性加载整本书
with open("book.txt") as f:
book_content = f.read()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
betas=["long-context-2025-01-01"],
messages=[{
"role": "user",
"content": f"""以下是一本完整的书籍:
{book_content}
请分析:
1. 本书的核心论点
2. 各章节的主要内容摘要
3. 作者的写作风格特点
4. 书中引用的关键数据和案例"""
}]
)
场景二:大型代码库理解
import os
def collect_codebase(root_dir, extensions=[".ts", ".tsx", ".py"]):
"""收集整个代码库的源文件"""
files = []
for dirpath, _, filenames in os.walk(root_dir):
for fname in filenames:
if any(fname.endswith(ext) for ext in extensions):
fpath = os.path.join(dirpath, fname)
with open(fpath) as f:
content = f.read()
files.append(f"// === {fpath} ===\n{content}")
return "\n\n".join(files)
codebase = collect_codebase("./src")
# 可以将整个代码库放入上下文,让 Claude 全局理解架构
场景三:多文档对比分析
一次性加载多份合同、报告或论文,让 Claude 做横向对比分析。
性能和成本考量
延迟: 超长上下文的首次响应时间会增加("首 token 时间"与输入长度正相关)。
成本: 按 token 计费,100 万输入 token:
- Sonnet: 100 万 × $3/M = $3
- Opus: 100 万 × $5/M = $5
Tip: 使用 Prompt Caching 可以大幅降低重复使用同一长上下文的费用。缓存命中只需 0.1x 价格。
准确性: Claude 在超长上下文中仍然保持较高的检索准确率("大海捞针"测试表现优异),但极端长度下可能对中间部分的关注度略低。
最佳实践
- 把问题放在末尾:Claude 对上下文末尾的内容关注度最高
- 使用结构化标记:用 XML 标签或分隔符组织长文档
- 分块 vs 整体:简单问题用分块检索(RAG),复杂分析用整体上下文
- 配合 Prompt Caching:长上下文 + 缓存 = 降低后续调用成本 90%
# 结构化组织长上下文
context = """
<document title="合同A">
{contract_a}
</document>
<document title="合同B">
{contract_b}
</document>
请对比以上两份合同的关键差异。
"""
实战练习
Tip: 体验超长上下文的能力。
- 找一个你熟悉的项目,收集所有源文件
- 一次性送入 Claude,让它分析整体架构
- 对比分块检索和整体上下文的回答质量
关键要点
Note: 本文核心总结
- 标准 200K,Beta 扩展至 1M token(Sonnet/Opus)
- 适合整书分析、代码库理解、多文档对比
- 长上下文有延迟和成本代价,配合缓存使用
- 问题放末尾,用结构化标记组织内容