上下文工程是什么?让模型在每一步读到相关而可靠的信息
用客户问题与项目开发解释上下文工程,说明指令、检索资料、工具结果和历史状态如何选择与更新,并区分提示词写作、RAG 和模型训练。
先理解这个概念
上下文工程是为模型每次推理选择、组织并维护输入信息的做法。它不只润色提示词,还处理需要的资料、可用工具及历史状态。例如回答一个订单问题,要提供对应订单和适用规则,而不是塞入全部客服记录。它改变模型本次看到的信息,不等于重新训练模型,也不保证放得越多回答越好。
一次订单问答需要哪些资料可以说清楚
假设客户询问某笔订单能否退款,本次任务需要该订单事实与对应生效规则,其他客户聊天可能无关。这是自拟例子,用于说明选择范围。输入还应保留规则的限制条件,否则取到了正确文件,回答仍可能扩大适用范围。
提示词描述任务和要求,业务资料提供事实,工具结果反映当前查询状态。它们的来源和作用不同,不应无标记地混成一段文字。尤其外部网页或用户上传内容中的指令,不会因为被读取就自动获得系统规则的身份。
工具返回后下一轮输入也需要重新选择
Agent查询文件后会获得新信息,下一轮应考虑继续保留什么。重复工具输出可能挤占有效资料,过早丢弃错误记录又会让模型重复失败。上下文工程因此是随任务更新的选择过程,而不是开始时写好一份长提示词便永久完成。
实现上可以按当前状态动态提供指令,选择相关工具,并裁剪或总结较长的返回。LangChain将这类处理放在智能体运行过程的相应控制位置;具体框架接口不同,但需要核对模型实际收到的输入,不能只检查资料库里有没有该文件。
压缩与外部记忆不能无条件代替原始依据
长任务可以把进度保存在外部记录中,或对旧消息压缩后再继续。摘要应保留关键约束、来源与未解决项,不能把猜测写成已确认事实。外部记忆还需在需要时正确读取,记录存在并不说明本轮已经采用。
当答案漏掉条件时,比较原文、取回片段和最终输入,才能区分检索遗漏与后续压缩损失。没有统一最佳上下文长度,也没有固定格式适合全部模型。较长窗口扩大可容纳范围,不会自动解决资料矛盾或相关性问题。
与提示词工程和 RAG 各自解决的对象
提示词工程主要处理指令表达,上下文工程还管理其他输入及其持续变化。RAG通过检索提供外部知识,是可用办法之一;没有检索器的项目,也可能需要整理工具结果与会话历史。模型训练则改变参数,与这些运行时处理不同。
在Codex等产品中,项目指令和文件选择是这种管理的具体表现,不能据此假定全部上下文策略相同。出现输入超限时应核对真实请求组成,先保护任务所需信息;单纯把所有内容截短,可能让请求通过却丢失必要证据。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。