Anthropic 发布 Claude 长上下文提示工程实验
Prompt engineering for Claude's long context window
Anthropic 发布针对 Claude 10 万 token 长上下文窗口的提示工程实验,测试两种提升长文档召回的方法:先抽取与问题相关的引用再作答,以及在提示中补充文档其他部分正确问答的示例。
Anthropic 用可复现实验量化了长上下文问答中引用摘录与示例提示的效果,方法可直接迁移到自家文档问答。

Claude 的 100,000 token 长上下文窗口使模型能够处理数百页技术文档,甚至整本书。随着我们持续扩展 Claude API,我们看到对如何最大化 Claude 潜力的提示指导需求日益增长。今天,我们很高兴分享一项定量案例研究,介绍两种能够提升 Claude 在长上下文中回忆能力的技术:
- 在回答之前,先提取与问题相关的参考引文
- 在提示中补充关于文档其他部分正确回答问题的示例
让我们深入了解细节。
测试长上下文回忆:多项选择问答
我们这项实验的目标是评估能够最大化 Claude 从长文档中正确回忆特定信息几率的技术。
作为测试的底层数据源,我们使用了一份每日发布、公开可得的政府文件,其中包含许多不同部门的会议记录和活动。我们选择了 7 月 13 日的一份文件,该日期在 Claude 的训练数据截止日期之后。这最大限度地降低了 Claude 已经知道文档中信息的可能性。
为了生成问答(Q&A)对数据集,我们使用了一种我们称为“随机拼贴”的方法。我们将文档拆分为多个部分,并使用 Claude 为每个部分生成五个多项选择题,每题有三个错误答案和一个正确答案。然后我们将这些部分的随机组合重新组装成长文档,以便将其传递给 Claude 并测试其对内容的回忆能力。
提示 Claude 生成多项选择题
让 Claude 为你编写评估(evals)是一种强大的工具,也是我们作为提示工程团队经常使用的方法。然而,要让 Claude 写出难度恰到好处的问题,需要精心的提示。以下是我们设计有效测试套件过程中克服的一些挑战:
- Claude 可能会提出无需参考任何文档就能凭记忆回答的问题,比如“交通部是做什么的?”
- Claude 可能会包含即使在短上下文情况下也难以正确回答的问题。例如,由于 Claude 以 token 而非单词来看待世界,像“这段文字有多少个单词?”这样的问题往往会让 Claude 感到困难。
- Claude 可能会在答案中留下无意的线索,使正确答案容易被猜到。值得注意的是,我们注意到它的默认做法是让正确答案相比错误答案非常详细。
- Claude 可能会提到“本文档”或“本段落”而不指明指的是哪一段。这是有问题的,因为当我们将多个文档拼接形成长上下文时,Claude 无法知道问题问的是哪个文档。
- 还有可能走得太远,使问题过于明确以至于包含了答案。例如,“内政部 2023 年 7 月 2 日关于渔业额外季节性行动的公告的发布日期是什么?”就会是一个无效的问题。
为了帮助避开这些陷阱,我们使用了一个提示模板,其中包含两个示例会议片段以及手写的问题,作为少样本问题编写示例,还有一些写作指南,让 Claude 明确段落细节。本实验中使用的模板和所有其他提示均可在此处获取。
评估
在本次评估中,我们主要关注较小的 Claude Instant 模型(版本 1.2),而非 Claude 2 模型。原因有几点。首先,Claude 2 在阅读超长文档后回忆信息方面已经非常出色。Claude Instant 需要更多帮助,这使得提示改动带来的性能提升更容易观察。此外,Claude Instant 速度极快,你可以用我们分享的 notebook 自行复现这些评估。
当仅提供 Claude 用于编写问题的确切段落时,Claude Instant 能够在大约 90% 的情况下回答自己生成的问题。我们丢弃了它回答错误的 10% 问题——因为即使在短上下文情况下 Claude 也会答错,这些问题太难,无法用于测试长上下文。1
我们还测试了当给定一个不包含问题来源材料的随机部分时 Claude 的回忆能力。理论上,面对三个错误答案,Claude 应该只有 25% 的概率猜对。实际上,它猜对的概率为 34%;高于随机水平,但也不算太高。Claude 有时可能是根据其一般知识或答案中的细微线索直觉地得出正确答案。
为了从较短的片段构建长文档,我们通过将随机组合的段落拼接在一起,为每个问题人工生成新的长上下文,直到达到所需的 token 数量。我们在包含大约 75,000 和 90,000 个 token 的拼接文档上测试了 Claude。
这种拼凑式上下文的形成正是 Claude 在问题中引用“本文档”或“本段落”等模糊短语时引发问题的原因。当上下文中有十几个不同的通知都可能指代“本通知”时,像“本通知的发布日期是什么?”这样的问题就无法回答。这就是为什么我们的问题生成提示中包含语言,告诉 Claude 要明确问题所指的段落——例如,“关于渔业额外季节性行动的通知的发布日期是什么?”
在生成长文档(拼贴)后,我们使用四种不同的提示策略测试了 Claude 的回忆能力:
- 基础 – 仅要求 Claude 回答
- 非政府示例 - 给 Claude 两个固定的正确回答的一般知识多选题示例,这些示例与政府文档无关2
- 两个示例 - 给 Claude 两个正确回答的多选题示例,这些示例从上下文中其他片段的 Claude 生成问题集中随机动态选择
- 五个示例 - 与 #3 策略相同,但使用五个示例
对于上述四种策略,我们还在使用和不使用 <scratchpad> 的情况下分别进行了测试,在 <scratchpad> 中我们指示 Claude 提取相关引文。此外,我们还在包含答案的段落分别位于输入开头、结尾或中间的情况下测试了每种策略。最后,为了了解上下文长度对结果的影响,我们分别用 70K 和 95K token 的文档进行了测试。
我们在上述测试中使用了 Claude Instant 1.2。我们还展示了 Claude 2 在基线策略以及 Claude Instant 1.2 表现最佳的策略上的结果。
结果


关于该实验的一些说明:
- 虽然使用 scratchpad 和示例能显著提升文档开头和中间部分的表现,但结尾部分的表现可能会下降。这可能是因为在提示中添加示例增加了文档最末尾(即相关信息所在位置)与 Claude 需要作答之处之间的距离。这很可能只是一个小问题,因为源文档中只有很小一部分数据位于最末尾。然而,它确实强调了将指令放在提示末尾的重要性,因为我们希望 Claude 对指令的回忆尽可能高。
- Claude 2 通过提示从 0.939 提升到 0.961,从绝对值来看似乎很小,但这反映了错误率降低了 36%。
以下是一些可用于撰写长上下文问答提示的要点:
- 使用大量示例和 scratchpad,以在两种上下文长度下都获得最佳表现。
- 在所有一对一对比中,将相关引文提取到 scratchpad 中都有帮助。这会略微增加延迟,但能提高准确性。就 Claude Instant 而言,其延迟本就非常低,因此这不应成为顾虑。
- 上下文示例在 70K 和 95K 下都有帮助,且示例越多越好。
- 关于通用/外部知识的通用示例似乎对表现没有帮助。
对于 Claude Instant,表现与相关段落距问题和提示末尾的距离之间似乎存在单调的反比关系,而 Claude 2 在 95K 下的表现在中间部分略有下降。3
推出全新的 Anthropic Cookbook
本实验完全可复现的代码已发布在全新的 Anthropic Cookbook 中。这一不断丰富的资源集目前还包含另外两个配方:
- 一个搜索与检索演示,展示了用于搜索 Wikipedia 的工具使用流程。
- 关于通过 Anthropic API 实现模拟 PDF 上传功能的指南。
我们期待未来扩展 Anthropic Cookbook 及我们的其他提示工程资源,也希望它们能启发你对使用 Claude 构建应用的宏大想象。如果你尚未获得 Claude API 的访问权限,请登记你的意向。
脚注
1Claude 答错的问题中一个常见的主题是计数,例如“对于担保贷款表格通用表格包中的每一份表格,通知中所述的每位受访者的估计回复数是多少?”以及“在 Getinge Group Logistics Americas LLC 设施的生产活动通知中,列出了多少个拟议成品?”值得注意的是,在其中一些问题上,Claude 预先指定的“正确答案”(来自它生成问答对时)实际上并不正确。这是本实验中噪声的一个来源。
2问题是:1. 美国第一任总统是谁?A. 托马斯·杰斐逊,B. 乔治·华盛顿,C. 亚伯拉罕·林肯,D. 约翰·亚当斯,2. 水的沸点是多少华氏度?A. 200,B. 100,C. 287,D. 212。
3一篇近期论文在类似任务的上下文中发现了性能与位置之间的 U 型关系。结果不同的一个可能解释是,论文中的示例平均长度为 15K tokens(附录 F),而此处为 70K/95K。
相关内容
Anthropic 投资 1 亿美元培训 10,000 名工程师,以弥合企业 AI 人才缺口
Anthropic 向 Claude Frontier Academy 投资 1 亿美元,计划到 2027 年底培训 10,000 名 Frontier Deployed Engineers,来自 Accenture、Bain、CBA、Deloitte、McKinsey、Morgan Stanley 和 Novo Nordisk 的首批学员已经开课。
Barclays 扩展 Claude 以升级运营并改善客户体验
英国全能银行 Barclays 正在扩大与 Anthropic 的战略合作,以在其全球业务中整合安全的企业级 AI 系统。
Claude 发现了一种具有类 CRISPR 重复序列的新型酶系统
我们宣布在 Anthropic 成立一个新的生命科学研究小组和实验室。本文介绍了这项工作背后的团队,并分享了早期成果:Claude 仅在我们科学家提供高层指导的情况下,发现了一种特性令人联想到 CRISPR 的新型酶系统。
来源:Anthropic News · anthropic.com