一句话定义:截断策略(Truncation)指的是输入内容超出模型的AI 词典:上下文窗口">上下文窗口(context window)后,系统决定保留哪部分、丢掉哪部分的规则。同样一段超长输入,三种砍法会给出三种完全不同的回答。
打个比方:一场三小时的会议只允许你带走十页纪要。撕掉最后几页,等于丢掉刚刚达成的决议;撕掉开头,等于丢掉议程和会前定下的规矩;抽掉中间,议程和结论都在,但支撑结论的论据没了。三种做法都叫“精简”,代价却完全不同。
三种选择的实际后果:
| 策略 | 保留 | 丢弃 | 典型风险 |
|---|---|---|---|
| 砍尾(保留开头) | 系统提示、任务定义 | 最新的对话与提问 | 答非所问,忽略用户刚说的话 |
| 砍头(保留结尾) | 最近若干轮 | 系统提示、初始约束 | 忘掉角色设定与格式要求 |
| 砍中间(保留两端) | 开头提示 + 最近轮次 | 中段历史事实 | 早先给出的数据、约束凭空消失 |
砍头最危险的地方在于,被丢掉的往往是最不该丢的系统提示(system prompt);砍尾的问题则相反,用户最后一句话才是此刻的意图。因此多数工程实现会选择“砍中间”,同时保住提示和最新轮次,但这依然会让夹在中间的关键约束(例如“金额一律用人民币”“不要输出表格”)悄然丢失,而模型不会报错,只会安静地答错。
容易混淆的邻居:上下文窗口是容量上限本身,截断策略是超限之后的处置办法。与之并列的还有几种思路:分块(chunking)把长文档切小分批送入;摘要压缩(summarization)把旧对话压成一段摘要而非直接丢弃;检索(RAG)按相关性挑片段,而不是按位置挑。截断是“按位置丢”,检索是“按相关性留”,后者通常更贵也更准。
对从业者的意义:别把截断当成兜底开关。要监控上下文占用率,在接近上限前主动做摘要或检索,并把不可违背的约束放在离结尾近的位置。具体模型的默认截断行为各有不同,以官方文档为准。
对普通职场人的意义:当你发现长对话里对方“忘了”开头定的规矩,不必重开一轮,最便宜的办法是把关键约束在最新一条消息里再复述一遍。位置决定命运,这句话对模型同样成立。
