为什么上下文工程比模型选型更重要

很多人做 LLM 应用第一反应是「换个更强的模型」。但实际项目里,你把同一个模型的提示词改好,效果提升往往比换模型还明显。上下文工程就是研究「怎么给模型喂信息」的工程学科——同样的模型,上下文喂得好的团队效果就是比喂得差的好一大截。

上下文工程包含三件事:系统提示设计(告诉模型它是谁、该怎么做)、少样本示例(给模型看几个正确例子)、以及上下文窗口管理(控制每次喂给模型的信息量和优先级)。这三件事做好了,模型表现就稳定了。

上下文工程的核心原则:模型的输出质量,80% 取决于你给它看了什么,20% 取决于它本身有多强。
本文核心知识点
  • 系统提示定义模型的角色、任务边界和输出格式,是上下文的第一层。
  • 少样本示例在提示里放几个输入输出样例,让模型快速对齐风格和格式。
  • 窗口管理上下文窗口有限,要按优先级取舍,别塞无关信息。
  • 迭代优化上下文工程靠 A/B 测试迭代,不是一次写好就完事。
上下文工程配图:左侧堆叠半透明面板,箭头流向中央发光提示框,周围散落文档图标,蓝色渐变扁平风格
上下文工程的示意:各种信息源经过筛选和排序,流入模型的输入窗口。

系统提示:给模型定规矩

系统提示是整个对话的基调。它告诉模型:你是谁、你要做什么、你不能做什么、输出格式是什么。好的系统提示应该像一份岗位说明书——职责清晰、边界明确、有明确的交付标准。

# 一个好的系统提示包含四部分
# 1. 角色定义:你是谁
#    "你是一个专业的客服助手"
# 2. 任务描述:你要做什么
#    "根据用户问题,从知识库中找到答案并回复"
# 3. 行为约束:你不能做什么
#    "不知道就说不知道,不要编造信息"
# 4. 输出格式:怎么回复
#    "用简洁的中文,分点回答,不要超过三段"

少样本示例:用例子教模型

光靠文字描述「你应该这样做」不够直观。少样本示例是在提示里放几个输入输出对,让模型一看就懂你要什么风格、什么格式。一般放 3-5 个示例就够了——放太多会占用上下文窗口,放太少模型学不到规律。

少样本示例的设计要点
  • 覆盖典型选最常见的场景做示例,别选极端 case。
  • 正反结合可以放一个「不好的回答」加一个「好的回答」做对比。
  • 格式一致所有示例的输出格式必须严格一致。
  • 数量适中3-5 个最佳,太多会挤占上下文。

上下文窗口:别塞太多也别塞太少

上下文窗口有限——哪怕是 128K 的窗口,塞满了也会出问题:模型注意力分散,抓不住重点。上下文工程的核心技能之一就是取舍:哪些信息必须给、哪些可以不给、哪些给了反而干扰。

信息类型优先级说明
系统提示最高必须有,定义模型行为
用户当前问题最高核心输入,不能丢
相关参考资料高RAG 检索到的相关文档
历史对话中保留最近几轮,早期对话可摘要
少样本示例中按需放,不是每次都要

上下文压缩与优先级

当上下文快满了怎么办?压缩。历史对话不需要全文保留,可以做摘要——把早期对话压缩成几句话的摘要,放在上下文里。相关资料也可以做摘要——RAG 检索回来的文档太长,可以先让模型提取关键信息再喂回去。这就是上下文工程里的「先摘再喂」策略。

# 上下文压缩的常用做法
# 1. 历史对话摘要:每 5 轮对话做一次摘要,替换原文
# 2. 长文档截取:只取和问题最相关的段落,不是全文
# 3. 多轮 RAG:先粗筛相关文档,再精排,只送最相关的 3-5 段
# 4. 工具结果压缩:工具返回的大段输出先提取关键信息