3、上下文长度管理:长文本处理策略、Token计数与估算、窗口溢出处理、分段输入技巧
上下文长度,说白了就是AI的「短期记忆」容量。
我刚开始做提示词工程时,总觉得上下文越长越好。恨不得把整本手册都塞进去。结果呢?AI开始胡言乱语,答非所问。后来我才明白——上下文不是越长越好,而是越精越好。
3.1 长文本处理策略:别让AI「撑死」
长文本处理,核心就一句话:给AI能消化的,别给它能噎住的。
我个人习惯把长文本分成三类来处理:
- 参考型文本(文档、手册、论文)——只提取关键段落
- 对话型文本(聊天记录、历史问答)——保留最近N轮,删除冗余
- 数据型文本(日志、报表、代码)——结构化压缩,去掉重复
核心原则:上下文不是存储空间,是注意力资源。你给AI塞100页资料,它只会记住前3页和最后1页。
我在项目中遇到过一位同事,非要把50页的产品手册全塞进提示词。结果AI生成的回答里,连产品名称都搞错了。为什么?因为关键信息被淹没了。
我的做法是:先人工提取关键信息,做成摘要。再把摘要喂给AI。你想想看,这就像你给实习生布置任务——你是给他50份文件让他自己翻,还是直接告诉他重点在哪几页?
3.2 Token计数与估算:别凭感觉
很多新手犯的错,就是凭感觉判断上下文长度。
「嗯,这段文字不长,应该没问题吧?」
结果一跑,直接报错:context length exceeded。
Token不是字符,也不是单词。它是AI理解语言的最小单位。一个英文单词通常1-2个token,一个中文字通常1-2个token。但具体多少,得看模型的分词器。
我常用的估算方法:
| 内容类型 | 估算公式 | 示例 |
|---|---|---|
| 英文文本 | 单词数 × 1.3 | 1000词 ≈ 1300 token |
| 中文文本 | 字符数 × 1.5 | 1000字 ≈ 1500 token |
| 代码 | 行数 × 8 | 100行 ≈ 800 token |
| 混合内容 | 按最保守的估算 | 建议用工具精确计算 |
实用技巧:我习惯在开发环境里装一个token计数器插件。每次写提示词前,先跑一遍计数。就像炒菜前先量好盐,省得后面手忙脚乱。
另外要注意:模型的输出也会消耗token。你给AI输入4000 token,它输出2000 token,总共就是6000 token。如果模型上限是4096,那直接就溢出了。
3.3 窗口溢出处理:别让AI「失忆」
窗口溢出,就是AI的「短期记忆」满了。
表现是什么?
- AI突然忘记了你几分钟前说过的话
- 回答变得断断续续,逻辑不连贯
- 直接报错,拒绝继续生成
为什么会这样?因为AI的上下文窗口是固定的。就像一张白纸,写满了就不能再写了。新内容会覆盖旧内容。
我曾经做一个长文档分析项目,文档有2万字,但模型上下文只有8K。一开始我硬塞,结果AI只分析了开头和结尾,中间全丢了。后来我换了策略:
- 分段处理:把文档切成多个段落,每个段落单独分析
- 汇总整合:把每个段落的分析结果再喂给AI,让它做总结
- 迭代优化:如果总结还是太长,就再分一层
避坑指南:我曾经犯过一个低级错误——把分段后的结果直接拼接,没告诉AI这是分段处理的。结果AI以为这些段落是连续的,产生了逻辑矛盾。后来我每次分段输入时,都会加一句:「以下内容是文档的第X部分,请基于此进行分析。」
还有一个技巧:优先保留最新的对话。如果上下文快满了,我会删掉最早的历史记录,保留最近的几轮对话。因为AI对最近的内容记忆最清晰。
3.4 分段输入技巧:把大问题拆成小问题
分段输入,说白了就是「分而治之」。
我总结了一套分段输入的标准流程:
- 明确边界:每段内容要有明确的开始和结束
- 独立完整:每段内容要能独立理解,不依赖其他段落
- 标注来源:告诉AI这段内容来自哪里,上下文是什么
- 控制长度:每段不超过模型上下文上限的60%
举个例子,假设你要分析一份100页的合同:
# 错误做法
「请分析这份100页的合同,找出所有风险点。」
(AI:上下文溢出,直接报错)
# 正确做法
「以下是合同第1-10页的内容,请分析其中的风险点:
[粘贴内容]
请只基于以上内容进行分析。」
「以下是合同第11-20页的内容,请分析其中的风险点:
[粘贴内容]
请只基于以上内容进行分析。」
「现在请综合以上所有分析结果,给出完整的风险评估报告。」
你想想看,这就像你让一个实习生整理100份文件。你是让他一次性看完,还是让他先看10份,汇报一次,再看10份,再汇报一次?
关键点:分段输入时,一定要告诉AI「只看这一段」。否则AI会尝试把所有段落联系起来,反而更容易混淆。
嗯,这里还要注意一个细节:分段之间的衔接。如果你让AI分析完第一段,再分析第二段,最后汇总——那汇总的时候,AI可能已经忘了第一段的内容。我的做法是:在汇总阶段,把每段的关键结论也一起喂给AI,而不是让它重新回忆。
说白了,上下文管理就是一场「记忆游戏」。你要帮AI记住该记住的,忘掉该忘掉的。别让它记太多,也别让它忘太快。
最后分享一个我自己的习惯:每次写提示词前,先问自己三个问题——
- 这段内容AI真的需要吗?
- 能不能再精简一点?
- 如果上下文满了,哪些内容可以删?
养成这个习惯,你的上下文管理能力就及格了。