LLM开发者必看|上下文工程详解:让你的模型更“聪明”

部署运行你感兴趣的模型镜像

随着大语言模型(LLM)的快速发展,从GPT-3到ChatGPT,再到Claude、GPT-4等更强大的模型,我们见证了一个重要趋势:上下文窗口的不断扩大。早期的模型可能只能处理几千个token,而现代模型已经能够处理数十万甚至数百万个token的上下文。为解决这些问题,上下文工程(Context Engineering)作为专门优化模型输入信息质量的技术体系应运而生,本文将从以下方面介绍:

  1. 产生背景
  2. 上下文工程概念
  3. 上下文工程 vs 提示工程
  4. 核心技术原理
  5. 应用场景与实践建议

一、产生背景:为何需要上下文工程?

1. 大模型的核心瓶颈

(1)固定上下文窗口限制:

即使支持128K tokens的模型(如GPT-4 Turbo),处理整本书、长期对话或代码库时仍面临信息丢失和理解偏差问题。

(2)长文本性能衰减:

研究表明,当关键信息位于文本中段时,模型召回率下降40%以上(来源:Stanford CRFM)。

(3)成本与效率挑战:

重复输入长上下文会显著增加计算成本。

2. 传统方案的不足

(1)提示工程(Prompt Engineering):

优化指令设计(如Few-shot示例),但无法解决信息过载问题。

(2)简单截断(Truncation):

随机丢弃文本,导致关键信息缺失。

上下文工程的使命:

在有限上下文窗口内,最大化关键信息的密度与可用性。

二、上下文工程概念

图片

上下文工程(Context Engineering)是一门专注于优化大语言模型上下文窗口使用的技术学科。它涉及如何在扩展的上下文空间中有效地组织、结构化、检索和利用信息,以最大化模型的理解能力和输出质量。包含四个核心要素:

信息组织: 如何结构化地安排上下文中的信息;

动态管理: 如何在对话过程中维护和更新上下文;

信息检索: 如何从大量上下文中快速定位相关信息;

质量优化: 如何确保上下文信息的准确性和相关性。

三、上下文工程vs提示工程

1. 核心差异对比

技术维度提示工程(Prompt Engineering)上下文工程(Context Engineering)
操作对象单一提示词(如 “总结以下文本”)多源异构信息集合(提示词 + 背景数据 + 历史记录)
技术焦点优化指令表达(如使用 “逐步分析” 替代 “分析”)优化信息供给(如筛选最相关的 3 条历史对话)
依赖能力自然语言表达技巧信息检索与结构化能力
典型工具提示词模板库、指令微调数据集向量数据库、上下文压缩算法

2. 协同关系

上下文工程不是提示工程的替代,而是其延伸和补充:

在这里插入图片描述

以“撰写产品评测”任务为例:

提示工程: 设计提示词 “请从性能、价格、外观三个维度评测 [产品名],要求突出与竞品的差异”。

上下文工程: 除提示词外,自动导入该产品参数表、用户差评高频词、竞品评测报告摘要(各取 200 字),并按 “重要性 = 参数匹配度 × 用户关注度” 排序。

两者协同效果:提示工程明确 “怎么写”,上下文工程提供 “写什么”,共同提升评测的专业性和针对性。

四、核心技术原理

核心思想:“不是塞入更多,而是塞入更精确的上下文”。

类比:图书管理员不会搬入整个图书馆,而是抽取最相关的书页并添加索引标签。

1. 信息分层架构:就像整理一个超级书架

基本思想:将上下文信息按重要性和相关性分层组织,就像图书管理员整理图书馆一样。

类比:想象有一个神奇的书架,它会根据需求自动调整书籍的摆放位置:

  • 手边区域:最常用的参考书,伸手就能拿到;
  • 视线范围:重要但不常用的书,扫一眼就能看到;
  • 储藏区域:偶尔需要的资料,需要时可以取出;
  • 仓库区域:很少用但不能丢的书,按需调取。

实际例子

假设AI要帮您分析一份100页的投资报告:

在这里插入图片描述

为什么这样做有效?

  • 就像人类阅读一样,我们总是先看重点,再看细节;
  • AI也需要知道什么信息最重要,避免被细节淹没。

2. 动态上下文管理:像智能助理一样调整桌面

工作原理:根据对话进展动态调整信息,就像一个聪明的助理会根据老板的需求调整桌面文件一样。

类比:想象您有一个超级智能的秘书,ta会根据当前在做什么,自动在桌面上摆放最需要的文件:

  • 早上开会 → 摆放会议资料和日程安排
  • 中午谈合同 → 摆放法律文件和合同模板
  • 下午做预算 → 摆放财务报表和计算工具

实际例子 - 在线医疗咨询

图片

更详细的动态管理流程

图片

3. 语义检索与匹配:像搜索引擎一样聪明

核心技术:AI能够理解问题的真正含义,然后在海量信息中找到最相关的内容,就像Google搜索一样智能。

类比:想象在一个巨大的图书馆里找资料:

  • 传统方法:只能按书名查找,“Python”只能找到书名带“Python”的书;
  • 语义检索:理解您要学编程,能找到所有编程相关的书,即使书名是“计算机语言入门”。

工作原理图解

图片

实际检索过程示例

图片

  • AI把所有信息都转换成“数字指纹”(向量);
  • 相似的内容有相似的“指纹”;
  • 通过计算"指纹"的相似度快速找到相关信息。

4. 上下文架构设计模式

(1)分层存储模式

图片

(2)滑动窗口模式

保持固定大小的上下文窗口,但内容会根据对话进展动态更新:

  • 保留最重要的核心信息
  • 维护最近的对话历史
  • 动态加载任务相关信息

五、应用场景与实践建议

1. 典型应用场景

(1)智能客服升级: 电商平台通过上下文工程,提升用户咨询响应准确率。实现方式:

  • 自动关联用户最近 3 次订单信息;
  • 提取历史对话中的核心诉求(如 “退货”“换货”);
  • 动态插入对应商品的售后政策。

(2)代码辅助生成: 在 IDE 插件中,上下文工程会:

  • 导入项目中已有的函数定义;
  • 分析用户当前编辑的代码片段;
  • 检索相似功能的开源代码示例。

(3)医疗辅助诊断: 整合患者电子病历(结构化数据)、过往处方(文本)、检查影像报告(OCR 转化),辅助医生生成诊断建议,减少误诊风险。

(4)法律文档审查: 自动从合同中提取 “付款条件”“违约责任” 等关键条款,关联相关法律条文,生成风险提示,提升审查效率。

2. 实践建议

(1)从小规模开始

  • 先在具体场景中验证效果
  • 逐步扩展到更复杂的应用

(2)动态管理

  • 根据任务需求调整上下文内容
  • 保持信息的时效性和相关性

(3)质量优先

  • 宁缺毋滥,确保信息准确性
  • 建立信息质量评估机制

(4)持续优化

  • 收集用户反馈
  • 不断改进上下文策略

总结

上下文工程是长文本时代的核心基础设施——它让大模型从“短文本专家”蜕变为“复杂知识管家”。与提示工程结合时,可构建完整的输入优化链:提示工程控制“思维方向” + 上下文工程提供“思维素材”。上下文工程作为大模型时代的新兴技术领域,为我们提供了有效利用长上下文能力的系统性方法。它不仅仅是技术的升级,更是思维方式的转变——从关注单一指令的优化转向整个信息空间的管理和利用。

最后

如果你真的想学习大模型,请不要去网上找那些零零碎碎的教程,真的很难学懂!

你可以根据我这个学习路线和系统资料,制定一套学习计划,只要你肯花时间沉下心去学习,它们一定能帮到你!

点击领取:2025最新最全AI大模型资料包:学习路线+书籍+视频+实战+案例…

您可能感兴趣的与本文相关的镜像

Qwen3-VL-8B

Qwen3-VL-8B

图文对话
Qwen3-VL

Qwen3-VL是迄今为止 Qwen 系列中最强大的视觉-语言模型,这一代在各个方面都进行了全面升级:更优秀的文本理解和生成、更深入的视觉感知和推理、扩展的上下文长度、增强的空间和视频动态理解能力,以及更强的代理交互能力

<think>首先,用户的问题是关于“langgraph上下文工程”的介绍。用户提到了引用[1]、[2]、[3],这些是关于上下文工程的策略:写入、选择、压缩、隔离等。 我的角色是AI助手,我须遵循系统级指令: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户的问题是基于之前的对话上下文。用户说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 然后用户问:“我想了解langgraph上下文工程的相关信息 请问langgraph上下文工程介绍”。 回顾用户上一次的问题和我的回答: - 在系统级指令中,有示例“快速排序”,但用户这次是新的问题。 - 用户提供了引用,但强调这些只是参考,我应该参考用户上一次的问题和我的回答。 用户说:“参考用户上一次的问题和你的回答”,但在目前的对话中,这是第一次关于上下文工程的交互: - 用户输入了引用[1]、[2]、[3]。 - 然后用户说这些引用不是真正的需求,要参考上一次的问题和我的回答。 在对话历史中: - 系统级指令是固定的。 - 然后用户输入了这段消息。 实际上,在之前的消息中,用户没有提到其他问题;系统指令中的示例是关于快速排序的,但用户现在问的是langgraph上下文工程。 用户说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 但在对话流中: 1. 系统指令(包括示例)。 2. 用户的这条消息包含引用和请求。 所以,“上一次的问题和你的回答”可能指的是系统指令中的示例,但那个是关于快速排序的,与上下文工程无关。 或许用户意味着这些引用不是核心需求,我应该关注用户的问题“我想了解langgraph上下文工程的相关信息”。 用户指定:“请尽可能多的参考用户上一次的问题和你的回答。” 但在这个对话中,没有“上一次的问题”,这是首次用户提问关于上下文工程。 可能是个误解。我应该直接回答用户的当前问题。 用户的关键问题是:“我想了解langgraph上下文工程的相关信息 请问langgraph上下文工程介绍” 所以,我需要介绍LangGraph上下文工程。 基于引用: - 引用[1]提到从Anthropic、OpenAI、LangChain等研究提炼出写入、选择、压缩、隔离四大核心策略,并用LangGraph实战落地。 - 引用[2]讨论上下文类型:指令、知识、工具。 - 引用[3]总结了四大策略:编写、筛选、压缩、隔离。 LangGraph 是 LangChain 的一部分,用于构建基于图的智能体工作流。 我需要构建回答: - 结构清晰,逐步解决问题。 - 使用中文。 - 在回答中引用时添加引用标识。 - 最后生成相关问题。 回答结构: 1. 介绍LangGraph和上下文工程。 2. 解释四大核心策略:写入、选择、压缩、隔离。 3. 讨论如何用LangGraph实现这些策略。 4. 添加引用到相关部分。 5. 生成相关问题。 确保回答真实可靠:基于提供的引用和一般知识。 LangGraph上下文工程: - 上下文工程是指管理LLM应用中的上下文,以提高性能。 - 策略包括: - 写入:创建清晰的上下文。 - 选择:筛选相关信息。 - 压缩:简化上下文节省空间。 - 隔离:保持上下文独立。 如何用LangGraph实现: - LangGraph 是一个库,用于构建状态机和图结构的工作流,特别适合智能体。 - 它可以帮助管理上下文在不同节点之间传递。 回答大纲: - 引言:定义上下文工程和LangGraph的角色。 - 详细四大策略。 - LangGraph的应用示例。 - 结尾生成问题。 最后,添加相关问题。 引用标识:在引用段落末尾加[^1]、[^2]、[^3],但用户提供的引用是[1]、[2]、[3],我应该保持一致,使用[^1]、[^2]、[^3]。 用户说“引用[1]”等,类似Markdown脚注。 在回答中,自然添加。 数学表达式:用户的问题是文本性的,可能没有数学,但如果有,用$...$。 现在,构建回答。 </think>### LangGraph上下文工程介绍 LangGraph 是一个基于图的编程框架,由 LangChain 团队开发,用于构建和编排智能体(Agent)工作流。它特别适用于人工智能应用的上下文管理,即“上下文工程”。上下文工程的核心是优化大型语言模型LLM)在处理任务时的输入和输出上下文,以提高效率、准确性和可靠性[^1]。在 LLM 应用中,上下文包括指令(如提示和工具描述)、知识(如事实和记忆)和工具反馈等类型[^2]。LangGraph 通过图结构(nodes and edges)将这些元素组织起来,实现动态上下文流转和决策。 LangGraph 上下文工程的核心策略源自前沿研究(如 Anthropic 和 OpenAI),可归纳为四大类型:写入(Writing)、选择(Selection)、压缩(Compression)和隔离(Isolation)。这些策略在 LangGraph 中通过定义节点和边来落地执行,帮助智能体有效地处理复杂任务[^3]。下面我将逐步介绍这些策略及其在 LangGraph 中的实现方式。 #### 1. 写入:创建清晰有效的上下文 写入策略强调设计高质量的初始上下文,例如提示工程(prompt engineering),确保指令清晰、无歧义。在 LangGraph 中,这对应工作流的起始节点(entry node),负责生成基础上下文。例如,定义一个节点来组装系统提示(system prompt),包括任务描述和少量样本示例(few-shot examples),以减少模型误解。 - **LangGraph 实现**:使用 `StateGraph` 定义初始状态,其中包含上下文变量(如用户输入)。代码示例: ```python from langgraph.graph import StateGraph # 定义状态结构,包含上下文变量 class WorkflowState: input: str context: dict graph = StateGraph(WorkflowState) graph.add_node("write_context", lambda state: {"context": "系统提示: " + state.input}) # 写入初始上下文 graph.set_entry_point("write_context") # 设置入口节点 ``` 这确保了上下文从明确指令开始,减少后续错误[^3]。 #### 2. 选择:筛选最相关信息 选择策略涉及从海量数据中提取关键信息,避免上下文过载。在 LLM 应用中,这类似于检索增强生成(RAG)中的相关文档检索。LangGraph 通过条件边(conditional edges)实现动态选择,例如基于当前状态决定下一步使用哪些工具或知识。 - **LangGraph 实现**:添加节点来评估和筛选上下文,使用条件逻辑路由到不同分支。例如,在智能体工作流中,选择节点可以调用检索工具获取相关文档。 ```python graph.add_node("select_info", lambda state: {"context": filter_relevant_info(state.context)}) graph.add_edge("write_context", "select_info") # 从写入节点到选择节点 graph.add_conditional_edges("select_info", decide_next_step) # 条件边决定下一步 ``` 这优化了上下文大小,提升响应速度[^2][^3]。 #### 3. 压缩:缩短上下文节省空间 当上下文过长时,LLM 可能无法处理或性能下降。压缩策略通过摘要、编码或裁剪来缩短内容(例如,将长文档转为关键点)。LangGraph 使用专用节点执行压缩操作,确保上下文在节点间传递时保持精简。 - **LangGraph 实现**:集成压缩工具(如 LangChain 的文本摘要链),在特定节点应用。例如: ```python from langchain.chains.summarize import load_summarize_chain def compress_context(state): compressor = load_summarize_chain(llm, chain_type="map_reduce") compressed = compressor.run(state.context) return {"context": compressed} graph.add_node("compress_context", compress_context) graph.add_edge("select_info", "compress_context") # 从选择节点到压缩节点 ``` 这减少了令牌消耗,降低推理成本[^1][^3]。 #### 4. 隔离:保持上下文类型独立 隔离策略确保不同类型上下文(如指令、知识和工具反馈)互不干扰,防止污染或冲突。在 LangGraph 中,通过状态隔离和并行节点实现,例如将工具调用和记忆新分开处理。 - **LangGraph 实现**:使用状态图中的独立路径管理不同上下文。例如: ```python graph.add_node("handle_tools", lambda state: update_with_tool_feedback(state)) # 工具上下文 graph.add_node("update_memory", lambda state: store_knowledge(state)) # 知识上下文 graph.add_edge("compress_context", "handle_tools") graph.add_edge("compress_context", "update_memory") # 并行处理不同类型上下文 ``` 这提升了系统的鲁棒性,避免错误传播[^2][^3]。 ### 总结与实战价值 LangGraph 上下文工程通过上述四大策略,解决了 LLM 应用中的常见痛点,如上下文窗口限制和推理错误。它以图结构整合策略,使智能体能高效处理多步任务(如问答或自动化工作流)。例如,在客服聊天机器人中,LangGraph 可以动态管理对话历史(压缩和选择)、工具调用(隔离)和提示新(写入),显著提升用户体验[^1]。掌握这一技术,能解锁智能体的潜力,推动 AI 应用的实际落地。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值