先这样答
影响 AI Agent 上下文容量的因素,不能只看模型的窗口大小。窗口大小决定单次请求能放入多少 Token,是硬上限。有效注意力长度决定模型实际能稳定利用多长的内容。内容即使没有超过窗口,模型也可能无法同样有效地关注所有位置,典型现象是 lost in the middle。
工程上还要做 Token 预算分配。系统提示词会占一部分,历史对话会占一部分,检索内容和工具结果也会占一部分。请求还要为模型生成预留空间。各部分如何分配,会直接影响当前请求能放多少有效信息。历史过长时,新增内容、检索内容和工具结果就会受到限制。
所以,Agent 的上下文容量不是一个只由窗口数字决定的问题。还要结合单请求成本和延迟来定预算。我的判断标准是,先明确任务需要哪些信息,再在系统提示词、历史、检索、工具结果和生成预留之间分配 Token。这样得到的是可用容量,而不是理论上的窗口容量。
面试官会怎么追问
-
「窗口大小和有效注意力长度有什么区别?」
窗口大小是模型一次请求可以接收的 Token 上限。有效注意力长度是模型能够实际利用并保持稳定关注的内容长度。前者是硬限制,后者反映实际可用程度。 -
「Agent 的上下文预算应该怎么分配?」
先列出系统提示词、历史、检索、工具结果和生成预留这几类开销。再根据当前任务判断哪些信息必须保留,哪些信息可以减少。分配时还要同时看单请求成本和延迟,不能只追求放入更多内容。 -
「为什么不能把窗口全部用满?」
窗口全部用满,只能说明请求没有超过硬上限。模型未必能同样有效地使用其中每一段内容,还可能受到 lost in the middle 的影响。与此同时,更多 Token 会带来更高的单请求成本和更长的延迟。
回答的坑
把上下文容量直接等同于模型窗口大小,忽略有效注意力长度和内容位置带来的实际差异。
只讨论能放多少 Token,不讨论系统提示词、历史、检索、工具结果和生成预留的预算分配,也不讨论成本与延迟。
同系列的题