先这样答
现象真实存在。长上下文会稀释模型的注意力。指令遵循能力随之下降。长上下文模型普遍存在中间迷失现象。输入过长时,模型容易遗忘中间部分的信息。成本与延迟也会随着上下文长度线性增长。实测体感上存在一个阈值。单次对话上下文超过两万 token 时,代码生成的准确率就开始下降。模型会出现漏改已有正常代码的情况。
应对性能下降需要控制输入量。第一种方法是压缩与截断历史。我们定期清理早期无用对话。系统只保留最近几轮核心交互。第二种方法是剥离稳定内容。开发者不要反复在对话里提及项目背景和代码规范。我们把这些内容沉淀到系统提示词层,或者存入外部存储。第三种方法是按需检索。工具根据当前用户诉求去检索相关代码片段。我们取回必要的依赖文件和函数定义。这种做法替代了全量塞入项目库的低效行为。
面试官会怎么追问
-
「你提到按需检索,具体怎么决定取回哪些代码片段?」 我们解析用户的自然语言指令。系统提取关键词和意图。工具利用向量检索匹配外部存储里的代码块。系统只取回相似度最高的前几个片段供模型参考。
-
「你刚才提到中间迷失现象,具体在代码生成场景里是什么表现?」 模型记住开头给出的系统指令和结尾的用户最新提问。它忽略对话中间提供的特定文件结构或临时变量定义。模型最终生成的代码容易调用不存在的方法。
-
「把稳定内容沉淀到系统层,这会带来什么好处?」 推理引擎通常缓存系统提示词。这种做法避免每次对话都重新计算固定内容的注意力。它直接减少单轮请求的延迟。它也控制了上下文长度的线性增长。
回答的坑
只谈理论概念。考生说不出具体在两万 token 长度时开始出现性能下降的实测体感。
把应对策略全部押注在模型原生能力上。考生忽略了工程上的检索和截断手段。
同系列的题