← 返回题目列表

长上下文场景下如何设计 Prompt?信息越多效果越好吗?

高频 中等 第 5 / 25 题 更新于 2026/07/25
长上下文Context WindowPrompt 设计

简化版

长上下文不等于有效上下文。 材料越多,token 成本、延迟、噪声越高,模型还可能忽略中间位置的关键信息(lost in the middle)。正确做法是:先检索、去重、压缩资料,把核心规则放在稳定位置,在材料之后重申当前问题,并为输出预留足够 token。长窗口能减少切分,但替代不了 RAG——先选高相关证据再交给模型,比无差别堆料更经济可控。

详细版

长上下文 Prompt 的原则:

  1. 算清系统指令、历史、文档、工具定义、输出的总 token 预算;
  2. 只留与当前任务相关的资料,去重复/过期;
  3. 用标题、文档 ID、标签分隔多份资料;
  4. 核心规则保持单一版本,避免前后冲突;
  5. 在资料之后重述当前问题和输出契约
  6. 长对话做摘要,但保留不可丢的事实和用户决策;
  7. 为输出预留空间,避免输入占满导致截断;
  8. 用不同长度、不同证据位置的测试集评估。

完整版教学

一、窗口里到底装了什么(易被低估)

上下文窗口是共享额度,装的远不止用户那句话:

[系统/开发者指令] + [历史对话] + [Few-shot 示例] + [RAG 文档]
  + [工具定义] + [工具结果] + [用户问题] + [预留给输出的空间]
  全部之和 ≤ 窗口上限

高频事故:开发者只统计”用户文本”,严重低估真实占用 → 旧消息被悄悄截断,或答案没生成完就到上限。所以组装前必须算总账。

二、为什么”更多信息”反而更差

三个机制让无差别堆料适得其反:

  • 注意力竞争:无关材料和正确证据抢注意力;
  • 冲突/近似错误:塞进冲突版本或「像但错」的案例,误导模型;
  • 中间遗忘(lost in the middle):研究发现模型对长上下文中部的信息利用较弱,正确证据放中间 vs 首尾,命中率明显不同。
把关键答案藏在 50 页资料的第 25 页 → 模型很可能"看漏"
把同样答案放在开头或结尾 → 命中率明显更高

所以标称支持 128K,只表示”能接收”,不保证每个位置都同样好用

三、资料怎么组织

  • 每份资料带来源、日期、标题,用一致标签分开;
  • 最相关证据优先,重复块先合并;
  • 有版本关系时明确哪个版本有效,别让模型自己猜;
  • 「总结全部材料」的全局任务可先分层摘要;「精确问答」优先给原始片段,别只依赖机器摘要(摘要会丢关键细节)。

四、指令放置与重申

核心稳定规则放对应角色、靠前。长资料之后可再短重申当前问题和输出格式,帮模型在长上下文里聚焦——但绝不制造两套略有出入的规则

✓ 资料后短重申:"基于以上资料,回答:{问题},输出 JSON {answer, sources}"
✗ 危险:开头一套规则、结尾又一套措辞不同的规则 → 行为不稳

权威规则只有一个来源,重申只是「短提醒」。

五、对话历史怎么压缩

长对话不该机械保留每句寒暄。压缩成结构化状态:

保留例子
用户已确认的事实和偏好「用中文、面向初学者」
未完成的任务「还要生成第 3 部分」
关键决策及理由「选方案 B,因为成本低」
必须保留的实体/数字/权限状态订单号、金额、已授权
最近几轮原始消息保持对话连贯

易错点:摘要会出错,重要数字和用户授权应从结构化状态读取,而不是只依赖模型摘要。

六、防截断事故

组装前估算 token、设定各部分预算 + 最低输出预留。超限时按明确优先级删除

超预算时的删除顺序:
  1. 先删重复和低相关文档
  2. 再压缩历史对话
  3. 绝不静默裁掉系统规则或关键用户约束
+ 记录最终发给模型的上下文组成 → 才能排查"这次怎么忘了某条规则"

七、常见误区与追问

  • 误区:窗口越大、塞得越多越好。 有中间遗忘和注意力竞争,无差别堆料常更差。
  • 误区:长窗口能替代 RAG。 RAG 负责”选什么”、长窗口负责”装多少”,互补而非替代。
  • 误区:只算用户文本的 token。 指令/历史/文档/工具/输出都占额度,易低估导致截断。
  • 追问:什么是 lost in the middle? 模型对长上下文中部信息利用弱,证据位置影响命中率。
  • 追问:为什么要在资料后重申问题? 帮模型在长上下文聚焦,但不能造两套冲突规则。
  • 追问:历史怎么压缩才安全? 存结构化状态(事实/任务/决策/权限),关键数字别只靠摘要。
  • 追问:超预算了删什么? 先删重复/低相关文档、再压历史,绝不静默删系统规则和关键约束。

八、加强记忆

长上下文像更大的会议桌:能放更多资料,但堆满不代表大家看得清。核心心法钉死:长≠有效(中间遗忘 + 注意力竞争,无差别堆料更差)、先检索去重压缩再入窗(RAG 选”什么”、长窗口装”多少”,互补)、规则保持唯一来源、问题放最后聚焦、给输出留空间防截断。组装前算总账(别只算用户文本),超预算按「重复文档→历史→绝不删系统规则」的顺序删,并记录最终上下文组成以便排查。