
关于
上下文是推理时语言模型可用的完整状态。包括模型生成响应时可关注的所有内容:系统指令、工具定义、检索文档、消息历史和工具输出。
name: context-fundamentals description: "上下文是语言模型在推理时可用的完整状态。它包括模型在生成响应时可以关注的所有内容:系统指令、工具定义、检索到的文档、消息历史和工具输出。" risk: unknown source: community
上下文工程基础
上下文是语言模型在推理时可用的完整状态。它包括模型在生成响应时可以关注的所有内容:系统指令、工具定义、检索到的文档、消息历史和工具输出。理解上下文基础是有效进行上下文工程的前提。
适用场景
在以下情况下激活此技能:
- 设计新的智能体系统或修改现有架构
- 调试可能与上下文相关的意外智能体行为
- 优化上下文使用以降低 token 成本或提升性能
- 向新团队成员介绍上下文工程概念
- 审查与上下文相关的设计决策
核心概念
上下文由几个不同的组件组成,每个组件具有不同的特征和约束。注意力机制创建了一个有限的预算来约束有效的上下文使用。渐进式披露通过仅在需要时加载信息来管理此约束。工程学科的核心是策划能实现预期结果的最小高信号 token 集合。
详细主题
上下文的解剖
系统提示 系统提示建立智能体的核心身份、约束和行为准则。它们在会话开始时加载一次,通常在整个对话过程中持续存在。系统提示应该极其清晰,使用简单、直接的语言,并针对智能体设定适当的抽象层级。
适当的抽象层级平衡了两种失败模式。一个极端是,工程师硬编码复杂的脆弱逻辑,造成脆弱性和维护负担。另一个极端是,工程师提供模糊的高层指导,无法为期望的输出提供具体信号,或错误地假设共享上下文。最佳抽象层级取得平衡:足够具体以有效指导行为,又足够灵活以提供强有力的启发式规则。
使用 XML 标签或 Markdown 标题将提示组织成不同的部分,以区分背景信息、指令、工具指导和输出描述。随着模型能力的提升,确切的格式变得不那么重要,但结构清晰性仍然有价值。
工具定义 工具定义指定智能体可以执行的操作。每个工具包括名称、描述、参数和返回格式。工具定义在序列化后位于上下文的前部,通常在系统提示之前或之后。
工具描述共同引导智能体行为。糟糕的描述迫使智能体猜测;优化的描述包含使用上下文、示例和默认值。整合原则指出:如果人类工程师无法明确说出在给定情况下应该使用哪个工具,那么智能体也不能被期望做得更好。
检索文档 检索文档提供特定领域的知识、参考材料或任务相关信息。智能体使用检索增强生成(RAG)在运行时将相关文档拉入上下文,而不是预加载所有可能的信息。
即时加载方法维护轻量级标识符(文件路径、存储的查询、网页链接),并使用这些引用动态地将数据加载到上下文中。这模仿了人类认知:我们通常不会记忆整个信息语料库,而是使用外部组织和索引系统按需检索相关信息。
消息历史 消息历史包含用户和智能体之间的对话,包括之前的查询、响应和推理。对于长时间运行的任务,消息历史可能增长到主导上下文使用。
消息历史作为草稿记忆,智能体在其中跟踪进度、维护任务状态,并在多轮对话中保持推理。有效管理消息历史对于长期任务完成至关重要。
工具输出 工具输出是智能体操作的结果:文件内容、搜索结果、命令执行输出、API 响应等类似数据。工具输出构成了典型智能体轨迹中的大部分 token,研究表明观察结果(工具输出)可达总上下文使用量的 83.9%。
工具输出无论是否与当前决策相关都会消耗上下文。这产生了对观察掩码、压缩和选择性工具结果保留等策略的需求。
上下文窗口与注意力机制
注意力预算约束 语言模型通过注意力机制处理 token,该机制在上下文中所有 token 之间创建成对关系。对于 n 个 token,这会创建 n² 个需要计算的关系。