当提示词超过 LLM 上下文窗口大小时,就需要利用LLM摘要,以减少提示词,保留高质量信息。
摘要时,需要分割提示词,并多次摘要。此时,为了保持上下文的完整性,需要将前一轮摘要结果加入后一轮摘要的输入,每一轮皆如此,直到摘要结束。
例如一个AI学习助手的提示词包括了用户做过的练习题,写过的作文。提示词随着时间积累,可能超过LLM上下文窗口。此时摘要的过程为:
- LLM 上下文减去 system prompt 和 一定余量,计算出 user prompt token 数。
- 取最接近 user prompt token 数的作文和练习题,得到第一轮摘要提示词,送入 LLM ,得到第一轮摘要结果。
- 第一轮摘要结果 + 尽可能多未摘要的作文和练习题,但不超过 user prompt 数,得到第二轮摘要提示词,送入 LLM,得到第二轮摘要结果。
- 循环往复,直到所有练习题和作文都被摘要完成。
切不可为了提升性能,将提示词分割后,并行调用LLM 摘要,最后拼接。这种做法,忽略了原始提示词的完整性,摘要质量不尽如人意。