林逍遥 AI林逍遥 AI
登录
上下文长文本

1M 上下文窗口实战

·6 分钟阅读

Claude 的标准上下文窗口是 200K token。通过 Beta 扩展,Sonnet 和 Opus 支持高达 1M token 的超长上下文——可以一次性处理一整本书、一个完整的代码库、或数百页的文档。

你将学到什么

  • 200K vs 1M 上下文窗口的区别和使用方式
  • 超长上下文的实际应用场景
  • 性能和成本考量
  • 最佳使用策略

上下文窗口基础

模型标准上下文扩展上下文(Beta)最大输出
Opus 4.6200K1M128K
Sonnet 4.6200K1M64K
Haiku 4.5200K64K

启用 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 在超长上下文中仍然保持较高的检索准确率("大海捞针"测试表现优异),但极端长度下可能对中间部分的关注度略低。

最佳实践

  1. 把问题放在末尾:Claude 对上下文末尾的内容关注度最高
  2. 使用结构化标记:用 XML 标签或分隔符组织长文档
  3. 分块 vs 整体:简单问题用分块检索(RAG),复杂分析用整体上下文
  4. 配合 Prompt Caching:长上下文 + 缓存 = 降低后续调用成本 90%
# 结构化组织长上下文
context = """
<document title="合同A">
{contract_a}
</document>

<document title="合同B">
{contract_b}
</document>

请对比以上两份合同的关键差异。
"""

实战练习

Tip: 体验超长上下文的能力。

  1. 找一个你熟悉的项目,收集所有源文件
  2. 一次性送入 Claude,让它分析整体架构
  3. 对比分块检索和整体上下文的回答质量

关键要点

Note: 本文核心总结

  • 标准 200K,Beta 扩展至 1M token(Sonnet/Opus)
  • 适合整书分析、代码库理解、多文档对比
  • 长上下文有延迟和成本代价,配合缓存使用
  • 问题放末尾,用结构化标记组织内容
二维码
微信公众号:lingxiaoyao

关注公众号,获取最新 AI 教程和课程更新

加载评论中...