做产品 PMaker
空格的键盘
模型知道的世界,停在某一个日期 训练语料覆盖到这里 这一段它一眼都没见过 知识截止日 今天 模型发布日通常比知识截止日晚好几个月 —— 别拿发布日当截止日用 把「今天」塞进去的三种方式 ① 在提示里写明今天的日期 ② 检索之后把原文贴给它 ③ 声明以我给的为准

截止日之后的事,它不是「知道得不准」,是一无所知。但它照样会用截止日之前的模式往下推一个答案。

知识截止日期

训练语料收集到某一天就停了,那一天之后的世界,模型完全没见过。它不会因此沉默,它会推一个。

你会遇到的现象
  • 它给的代码用的是某个库两年前的写法,新版本早就改了
  • 问它某个模型的最新版本,它笃定地说出一个已经过时的型号
  • 你让它算「距离下周三还有几天」,它算错了,因为它不知道今天是几号

截止日是什么

训练要先把语料收齐,收齐这个动作有个截止时间。之后还要训练几个月、做安全评估、内部测试,才对外发布。所以你用到的模型,知识总是比今天旧一大截,而且比它的发布日还要旧几个月。

还有两条容易被忽略的细节。

截止日附近的知识是稀薄的。一件事发生之后,网上要过一段时间才会积累起足够多的讨论。所以临近截止日的那几个月,语料密度明显偏低,模型对这段时间的了解比对更早时期还浅。别把截止日当成一条「之前全懂、之后全不懂」的干净分界线。

模型自己报的截止日未必准。你问它「你的知识截止到什么时候」,它给的答案也是生成出来的,可能来自系统提示,也可能是编的。要准确的日期,去看官方文档。

为什么它讲错还很自信

因为「不知道」在它那里不是一个状态。截止日之后的事,它没有对应的记忆,但它有大量关于这类事情长什么样的规律。于是它按规律外推:版本号往上加一位、路线图照着惯例往下写、人事任命按行业常态猜一个。推出来的东西非常合理,只是恰好不是真的。

最危险的是变化快、格式固定的领域,因为这两个特征凑在一起,编得最像:

这类内容典型翻车方式
软件库的 API给出上一个大版本的写法,参数名对不上
模型和产品的版本号说出一个不存在的型号,说得很笃定
价格、额度、限制报一个早就调过的数字
政策、法规、合规要求引用已经废止的条款
「最新」「目前」「现在」类问题它理解的「现在」是截止日那一刻
任何相对时间计算不知道今天几号,全盘错
最后两行最常被忽略。凡是提示里出现「最新」「目前」「今年」这类词,你都得先问一句:它知道今天是哪天吗?
截止日不是一条「之前全懂、之后全不懂」的干净分界线 完全没见过 但它照样会推一个 知识截止日 今天 语料 密度 更早的时期,讨论积累充分 临近截止的几个月 了解比更早时期还浅 成本几乎为零、收益最大:把今天的日期写进系统提示 模型自己报的截止日也是生成出来的,要准数看官方文档
那块红色区域里,它不会沉默——它会按规律外推:版本号往上加一位、路线图照惯例往下写。推出来的东西非常合理,只是恰好不是真的。凡是提示里出现「最新」「目前」「今年」,都先问一句:它知道今天是哪天吗。

怎么把今天塞给它

解决办法不在模型侧,在你这边。核心就一句话:凡是会过时的信息,都要由你在这一次请求里提供,不能指望它记得。

还有两件产品层面的事。一是把版本钉死。让它写某个库的代码时,直接告诉它用哪个版本,最好连关键 API 的签名一起给。二是在界面上标出信息的时间——如果答案来自模型记忆,就说清楚这是截止到某个时间的认知;如果来自实时检索,就把来源和抓取时间露出来。用户能看见时间,误判的代价就小很多。

接着看