Anthropic为每个模型标注训练截止日期和可靠知识截止日期两个指标,两者差距是理解模型知识盲区的重要依据。
Anthropic 为每个 Claude 模型公布了一个训练数据截止日期,而对于当前一代模型,它还公布了第二个更早的日期,称为可靠知识截止日期。两者之间的差距可以解释人们在模型"知道什么"和"不知道什么"这件事上感到困惑的大部分原因。
最权威的列表是 Anthropic 模型概览页面上的模型对比表,其中有一列是训练数据截止日期。截至本文落款日期,其中列出:
Claude 3 Opus 和 Claude 3 Haiku — 2023 年 8 月。
Claude 3.5 Sonnet — 2024 年 4 月。
Claude 3.5 Haiku — 2024 年 7 月。
Claude 3.7 Sonnet — 2024 年 11 月。
Claude Opus 4 和 Claude Sonnet 4 — 2025 年 3 月,文档记录的可靠知识截止日期为 2025 年 1 月。
这个页面会定期更新是有原因的:表格每隔几个月就会增加新行,最新的模型不会列在上面。在本文更新日期之后发布的模型会有自己的条目,唯一正确的做法是阅读当前的表格,找到你正在调用的确切模型 ID。你不应该将本文中未列出的模型视为最新。
训练语料库并不是某一天干净利落的快照。数据的收集、过滤和处理会持续数月,而且一件事离语料库收集截止日期越近互联网上关于它的记载就越不完整。一件发生在截止日期三年前的事件已经被总结、订正、讨论过、被后来的一千篇文档引用过,如果有错误也已悄然修正。而发生在截止日期前三周的事件只出现一次,且是早期报道,没有任何上述的强化。
所以模型的知识并不是在某个墙边戛然而止。它在语料库的最后几个月里逐渐稀薄。训练数据截止日期是收集结束的时间;可靠知识截止日期是 Anthropic 发布的、模型可以被信赖的估计时间点。两者之间的"尾巴"就是模型听说过某事但会把细节搞错的地方——这比不知道更糟糕,因为它回答得很流畅。
这也解释了为什么"知识截止日期"和"训练数据截止日期"不是同义词,尽管到处都把它们当作同义词用。前者是关于语料库的事实,后者是关于行为的声明,而且只有第一个有精确值。Anthropic 如果为某个模型同时公布了两个日期,较早的那个才是用于规划的数字;如果只公布了训练截止日期,就假设可靠边界在它前面几个月,而不是恰好在它上面。
还有一个细节:截止日期约束的是模型吸收了什么,而不是它能处理什么。一个截止日期是 2025 年初的模型,如果你在上下文中提供上个月发布的库的文档,它完全可以很好地处理那个库——截止日期约束的是回忆,而不是理解。相反,无论多少提示都无法恢复一个从未在语料库中的事实。把这两者区分开,就能把截止日期从一个你抱怨的限制变成一个你围绕它设计的参数。
这也解释了另一种相关行为,看起来像 bug:模型对自身的发布、自身名称或后继者信誓旦旦地说错。它不可能在语料库收集时还不存在的模型的文档上受过训练。
"你的知识截止日期是什么时候?"是最直接的发现方式,也是错误的方式。答案和所有其他答案一样生成方式:作为最 plausible 的延续。有三件独立的事情使它不可信。
语料库在末尾附近变稀薄,所以模型关于自身训练时期看到的内容相对较少,它其实是在用关于更早模型的文档来回答。
系统提示词经常声明一个日期,在 Anthropic 自家产品上也是如此。模型重复系统提示词中的日期是在报告配置,而不是在自省——而通过 API 调用的场景(是你写的系统提示词),它没有什么可重复的。
答案会因措辞和采样而异。一个你问两次得到两个不同值的事实,不是你可以依赖的事实。
模型对比表是来源。模型本身不是。
公布的日期是语料库的属性,而不是你主题的属性。文档化密集领域的覆盖——主流编程语言、大型公共 API——比小众领域更接近截止日期,因为关于前者更早就有更多内容被写出来了。所以值得回答的问题不是"模型什么时候停止知道东西",而是"它什么时候停止知道我的东西",而这是可以用一个你自己运行的简短、诚实的测试来回答的。
从你的领域中挑选十五到二十个有已知日期的事实,分布在公布截止日期前的十八个月里。版本发布、重命名字段、废弃端点、变更默认值——任何你可以独立验证日期的东西。
用中性的形式问每一个,避免泄露答案。"X 的默认值是什么?"而不是"X 现在默认为 Y,这是真的吗?",后者会引导同意。
使用 temperature: 0,系统提示词留空或极简,不提供日期。你测量的是回忆,而系统提示词中的一个日期会改变模型猜测的内容。
根据真实答案打分,并按事实日期绘制正确率。你要找的不是悬崖,而是准确率开始下滑的那个月份。
结果是一个你可以有所行动的数字:过了这个点,你的应用就必须提供事实而不是依赖回忆。它也往往能平息关于新模型是否值得迁移的争论,因为它把"它的截止日期晚了四个月"转化成了关于你实际问它的那些事情的一条陈述。
对于任何时间敏感的事务,截止日期是需要围绕它工程化应对的属性,而不是等待它自行消失。
把今天的日期放进系统提示词。一句话——"今天是 2026-08-11。"——消除了一整类错误,模型不再假设当前是它的训练时期并错误地计算相对日期。
为你需要它保持最新的事实提供材料。检索不是绕过截止日期的解决方案,它就是设计方案。一个模型在阅读你提供的文档时,关于那份文档没有截止日期问题。
指示它区分回忆和提供的上下文。要求它在答案来自记忆而不是提供的材料时明确注明,使过时的答案变得可见而不是混在其中。
固定模型 ID。截止日期属于一个特定的带日期的模型,而一个悄然迁移到更新模型的别名也会把截止日期一起迁移过去。这通常是改进,但它仍然是一个你没有计划的行为变化。参见固定 Claude 模型版本。
对于任何用模型辅助写代码的人来说,有一个值得明确说明的后果:截止日期之后发布的库 API 正是模型产生自信、看似合理但错误的调用的领域。修复方法同上——把当前文档放进上下文——而且效果比问模型"你确定吗?"好得多。