LLM 提示词中 “现在” 的五种定义
一名客服代理告诉用户“根据我们截至今天的最新定价”,并引用了上季度的价格表。系统提示词正确地注入了 today is {current_date}。检索层提取了具有最高时效性评分(freshness score)的文档。模型回答得信心十足。每个组件都严格执行了其规定的任务,但用户得到了一个错误的答案,而值班工程师却无法复现这个问题,因为当他们在晚上 9 点回溯追踪记录(trace)时,“今天”已经变成了不同的一天。
这并不是一个罕见的 Bug。这是一种几乎存在于每一个生产级 LLM 流水线中的失效模式,因为“现在”隐式地存在于提示词的五个不同层级中,而这些层级是由不同的人在不同时间、针对不同的“现在”定义编写的。只要请求是从前端用户会话同步运行的,这些层级通常能达成一致。一旦请求被重放用于调试、在夜间进行批处理、在固定于 3 月的评估框架(eval harness)中运行,或者被排队并在一个小时后消费,各层级就开始产生分歧——模型产生了一个在提示词内部逻辑自洽但在外部环境中错误的答案。
