先这样答
上下文超出限制时,我会按“截断、压缩、外置、升级”四层机制处理,并针对不同内容采用不同策略。第一层是截断。系统按既定策略丢弃最老或最不相关的内容,先快速释放上下文空间。截断不能一刀切。对话历史、工具结果和检索内容的作用不同,需要分别处理。
第二层是压缩。系统把较长的历史对话摘要化,同时保留当前目标、约束和关键结论。这样既能减少上下文占用,也能让后续处理继续围绕原任务展开。第三层是外置。系统把较长的工具结果存到外部,只在上下文中保留引用句柄。模型需要使用时,再按需回取对应内容。
如果前三层仍然无法满足任务,就进入升级层。可以切换到长上下文模型,也可以采用分治方式拆分任务。工程落地时,我会先摘要对话历史,再截断工具结果,并减少检索内容的 Top-K。三类内容各用各的策略,避免统一截断破坏目标、约束或关键结论。
面试官会怎么追问
-
「为什么不能直接把最早的内容全部删掉?」 最早的内容可能包含任务目标、约束或关键结论。直接删除会让后续处理失去依据。更稳妥的做法是先判断内容类型,再选择截断或摘要,并保留任务所需的信息。
-
「对话历史、工具结果和检索内容分别怎么处理?」 对话历史优先做摘要,保留目标、约束和关键结论。工具结果优先截断,较长结果可以外置,并在上下文中留下引用句柄。检索内容通过减少 Top-K 控制长度。
-
「什么时候需要换长上下文模型或拆任务?」 当截断、压缩和外置后,现有上下文仍然无法承载任务时,再考虑升级。可以换用长上下文模型。也可以把任务分治拆开,分别处理各部分。
回答的坑
- 只回答“截断最早内容”,会漏掉压缩、外置和升级,也没有区分不同内容的处理策略。
- 只说换长上下文模型,会跳过摘要、工具结果截断和检索 Top-K 调整这些更靠前的工程步骤。
同系列的题
—— 本题完 ——