时间上下文注入:让 LLM 真正知道今天是几号
你的 LLM 功能已经上线。用户开始问那些涉及时间的问题——"最新政策是什么?""帮我总结本周发生的事""这条信息还是最新的吗?"——模型自信、流畅地回答,却答错了。
模型不知道今天是几号。它从来都不知道。你熟悉的聊天界面让你忘了这件事,因为那些界面在背后悄悄注入了当前日期。但你的 API 集成不会。你发布的系统在不知道自己处于时间轴哪个位置的情况下,仍然在推理时间相关的问题——这是一类 bug,会在你还没想到去找它之前就出现在生产环境里。
你的 LLM 功能已经上线。用户开始问那些涉及时间的问题——"最新政策是什么?""帮我总结本周发生的事""这条信息还是最新的吗?"——模型自信、流畅地回答,却答错了。
模型不知道今天是几号。它从来都不知道。你熟悉的聊天界面让你忘了这件事,因为那些界面在背后悄悄注入了当前日期。但你的 API 集成不会。你发布的系统在不知道自己处于时间轴哪个位置的情况下,仍然在推理时间相关的问题——这是一类 bug,会在你还没想到去找它之前就出现在生产环境里。
演示每次都能成功。LLM把"显示上个季度收入前十的客户"翻译成完美的SQL,结果瞬间弹出,会议室里所有人都点头认可。然后你把它部署到你实际的数仓上——130张表、1400个字段、十年积累的有机命名惯例——模型开始自信地生成返回错误数字的查询。没有报错,只是答案是错的。
这就是Schema边界问题,也是为什么Text-to-SQL在所有AI能力中,基准测试性能与生产现实之间的差距最大。在Spider 1.0(标准学术基准)上得分86%的模型,在Spider 2.0上准确率下降到约6%,而后者更接近真实企业Schema的复杂度。供应商在干净的玩具Schema上演示,你却要在自己的Schema上部署。
每个构建AI Agent的团队都会做同样的粗略计算:用预期的工具调用次数乘以每次调用的成本,再加上一点缓冲。这个估算在离开白板之前就已经错了——不是错了10%或20%,而是错了5到30倍,具体取决于Agent的复杂程度。40%的Agentic AI试点项目在达到生产阶段之前就被取消,而推理成本失控是最常见的单一原因。
问题是结构性的。单次调用成本估算假设每次推理是独立的。在多轮Agent循环中,它们并非独立。每次工具调用都会增大后续所有调用必须支付的上下文。结果是一条二次方成本曲线伪装成了线性曲线,工程师们直到账单到来才发现这一点。