LLM上下文工程实战:Prompt组装、Token预算与RAG上下文设计

AI与大数据

摘要

  • Context Engineering(上下文工程)是2026年LLM应用落地的核心能力,比Prompt Engineering覆盖面更广、更贴近生产
  • Token预算是硬约束:系统提示词、工具定义、RAG检索、对话历史必须分层分配,否则要么超窗截断、要么成本失控
  • Prompt组装不是字符串拼接,而是有优先级的上下文管道(Context Pipeline),每一层都有明确的预算和淘汰策略
  • RAG上下文注入的3大坑:检索噪声淹没关键信息、Chunk边界切断语义、重复内容浪费Token
  • 本文提供从原理到Python实现的完整方案,含Token预算计算器与生产级Context Manager

目录


为什么Prompt Engineering不够用了

2024年大家还在讨论「怎么写好Prompt」,到了2026年,企业落地LLM应用时真正卡脖子的不是「一句话怎么写」,而是整个上下文怎么组织

一个真实的生产故障

某电商客服AI上线第一周,用户投诉率飙升。排查发现:

现象 根因 影响
AI回答与订单无关 RAG检索了10条历史工单,淹没了当前订单上下文 答非所问
多轮对话后响应变慢 对话历史无限累积,Token超窗后触发截断 丢失用户意图
月API账单超预算3倍 系统提示词重复发送,未利用Prompt Caching 成本失控

这三个问题,没有一个靠「优化Prompt措辞」能解决。它们都属于Context Engineering的范畴。

Prompt Engineering vs Context Engineering

维度 Prompt Engineering Context Engineering
关注点 单条提示词的措辞和格式 整个上下文的组织、预算和生命周期
适用范围 简单问答、一次性任务 多轮对话、RAG、Agent、工具调用
核心技能 角色设定、Few-shot、CoT Token预算、上下文分层、压缩淘汰
生产复杂度 高(涉及缓存、检索、状态管理)
2026面试权重 基础题 高频架构题

简单说:Prompt Engineering管「说什么」,Context Engineering管「给模型看什么」


Context Engineering核心概念

上下文的4个层次

把发给LLM的完整输入想象成一个「信息三明治」:

┌─────────────────────────────────────────────┐
│  Layer 1: 系统层 (System Context)            │
│  角色定义、行为约束、输出格式、安全策略        │
├─────────────────────────────────────────────┤
│  Layer 2: 工具层 (Tool Context)              │
│  Function Calling定义、MCP工具描述、Schema    │
├─────────────────────────────────────────────┤
│  Layer 3: 知识层 (Knowledge Context)         │
│  RAG检索结果、知识图谱、业务规则文档           │
├─────────────────────────────────────────────┤
│  Layer 4: 对话层 (Conversation Context)      │
│  多轮历史、用户当前输入、中间推理步骤          │
└─────────────────────────────────────────────┘

每一层都有独立的Token预算,层与层之间还有优先级关系。当总Token接近窗口上限时,从低优先级层开始淘汰

上下文的生命周期

Context不是一次性组装的,它在一次完整交互中会经历多个阶段:

  1. 组装(Assembly):按优先级合并各层上下文
  2. 验证(Validation):检查Token总量、格式合规、敏感信息过滤
  3. 发送(Dispatch):调用LLM API,利用Prompt Caching减少重复Token
  4. 更新(Update):将模型响应追加到对话层,触发下一轮组装
  5. 压缩(Compaction):对话过长时,摘要或淘汰低价值历史

Token预算:上下文窗口的「财务规划」

为什么要做Token预算

假设你用的是128K上下文窗口的模型,看起来很大,但生产环境中:

  • 系统提示词 + 工具定义:通常占 2K-8K Token
  • RAG检索10条文档:每条500 Token = 5K Token
  • 50轮对话历史:每轮200 Token = 10K Token
  • 模型输出预留:4K Token

合计已经 21K-27K Token。如果业务复杂(多工具Agent、长文档RAG),轻松突破50K。没有预算管理,就是在裸奔

推荐预算分配表(128K窗口)

层级 预算比例 Token上限 淘汰策略
系统层 固定 4K 不淘汰,利用Prompt Caching
工具层 固定 6K 按使用频率动态加载
知识层 弹性 20K 按相关性分数截断
对话层 弹性 30K 滑动窗口 + 摘要压缩
输出预留 固定 8K
安全缓冲 固定 10K 防止估算误差超窗

Token计数器的3种实现

方案1:tiktoken精确计数(推荐)

import tiktoken

def count_tokens(text: str, model: str = "gpt-4o") -> int:
    encoding = tiktoken.encoding_for_model(model)
    return len(encoding.encode(text))

def budget_check(layers: dict[str, str], max_tokens: int = 128000) -> dict:
    usage = {name: count_tokens(content) for name, content in layers.items()}
    total = sum(usage.values())
    return {
        "usage": usage,
        "total": total,
        "remaining": max_tokens - total,
        "overflow": total > max_tokens,
    }

方案2:字符估算法(快速预检)

中文约 1.5-2 字符/Token,英文约 4 字符/Token。用于组装前的快速预检,最终发送前再用tiktoken精确校验。

方案3:API返回的实际用量

调用后从 response.usage 获取真实消耗,用于监控和动态调整预算。


Prompt组装流水线设计

流水线架构

用户输入 ──→ [意图识别] ──→ [知识检索] ──→ [上下文组装] ──→ [预算校验] ──→ LLM API
                  │                │                │                │
                  ▼                ▼                ▼                ▼
            决定加载哪些工具    Top-K文档筛选     按优先级合并      超限则压缩

组装优先级规则

当Token预算不足时,按以下顺序裁剪:

  1. 先裁对话层最旧的消息(保留最近N轮 + 首轮系统交互)
  2. 再裁知识层低分文档(按Rerank分数从低到高移除)
  3. 再裁工具层未使用的工具定义(只保留本轮可能调用的工具)
  4. 最后才动系统层(系统层应尽量固定,利用Prompt Caching)

生产级组装器实现

from dataclasses import dataclass, field
from typing import Optional

@dataclass
class ContextLayer:
    name: str
    content: str
    priority: int  # 数字越小优先级越高(越不容易被裁)
    max_tokens: int
    cacheable: bool = False

@dataclass
class ContextBudget:
    total_limit: int = 128000
    output_reserve: int = 8000
    safety_buffer: int = 10000

    @property
    def available(self) -> int:
        return self.total_limit - self.output_reserve - self.safety_buffer

class ContextAssembler:
    def __init__(self, budget: ContextBudget):
        self.budget = budget
        self.layers: list[ContextLayer] = []

    def add_layer(self, layer: ContextLayer) -> None:
        self.layers.append(layer)
        self.layers.sort(key=lambda l: l.priority)

    def assemble(self) -> str:
        available = self.budget.available
        parts: list[str] = []

        for layer in self.layers:
            tokens = count_tokens(layer.content)
            if tokens <= layer.max_tokens and tokens <= available:
                parts.append(layer.content)
                available -= tokens
            elif tokens > layer.max_tokens:
                truncated = self._truncate(layer.content, layer.max_tokens)
                parts.append(truncated)
                available -= layer.max_tokens

        return "\n\n---\n\n".join(parts)

    def _truncate(self, text: str, max_tokens: int) -> str:
        encoding = tiktoken.encoding_for_model("gpt-4o")
        tokens = encoding.encode(text)
        if len(tokens) <= max_tokens:
            return text
        return encoding.decode(tokens[:max_tokens])

RAG上下文注入最佳实践

RAG是Context Engineering中最容易踩坑的环节。检索到的文档如何「喂」给模型,直接决定回答质量。

文档注入的3种格式

格式1:XML标签包裹(推荐,Claude/GPT均友好)

<retrieved_documents>
  <document source="product_manual_v3.pdf" score="0.92">
    产品保修期为购买之日起12个月,人为损坏不在保修范围内...
  </document>
  <document source="faq_returns.md" score="0.87">
    7天无理由退货需保持商品完好,运费由买家承担...
  </document>
</retrieved_documents>

格式2:编号引用(适合需要溯源的场景)

[1] 产品保修期为购买之日起12个月...(来源:product_manual_v3.pdf)
[2] 7天无理由退货需保持商品完好...(来源:faq_returns.md)

请基于以上参考资料回答用户问题,并在回答中标注引用编号。

格式3:直接拼接(不推荐,模型难以区分来源)

RAG上下文的5条铁律

规则 说明 违反后果
相关性阈值过滤 低于0.7分的文档不注入 噪声干扰,幻觉增加
去重 同一文档的不同Chunk合并 Token浪费
元数据保留 标注来源、时间、版本 无法溯源,合规风险
位置优先 最相关的文档放最前面 模型注意力衰减(Lost in the Middle)
动态Top-K 根据剩余预算调整K值 预算不足时硬截断

Lost in the Middle问题

2023年斯坦福大学的研究发现:当相关信息放在上下文中间位置时,模型的召回准确率显著下降。生产中的应对策略:

  • 最相关的2条文档放在最前面
  • 次相关的放在最后面
  • 中间位置放系统提示词或工具定义等「固定内容」

上下文压缩与淘汰策略

策略1:滑动窗口

保留最近N轮对话,最简单也最有效。推荐 N=10-20(视单轮Token量而定)。

策略2:摘要压缩

当对话超过阈值时,用一个小模型(或同模型)对早期对话做摘要:

SUMMARIZE_PROMPT = """请将以下对话历史压缩为一段摘要,保留:
1. 用户的核心诉求和约束条件
2. 已确认的关键事实(订单号、产品型号等)
3. 尚未解决的问题

对话历史:
{history}

摘要(不超过200字):"""

策略3:结构化状态提取

对于Agent场景,不保留完整对话,而是维护一个结构化的「会话状态」:

{
  "user_intent": "查询订单物流",
  "entities": {"order_id": "ORD-20260703-8842"},
  "resolved": ["已确认订单存在", "物流承运商为顺丰"],
  "pending": ["预计送达时间"]
}

每轮只把状态JSON注入上下文,Token消耗从O(轮数)降到O(1)。

压缩策略选型

场景 推荐策略 原因
客服多轮对话 滑动窗口 + 摘要 平衡成本与上下文连贯性
Agent工具调用 结构化状态提取 工具结果通常很长,状态更精简
代码助手 滑动窗口(保留代码块) 代码不宜摘要,会丢失细节
文档问答 无需压缩对话层 单轮为主,知识层才是大头

Python生产级Context Manager实现

把上面的概念整合为一个可复用的Context Manager:

class ProductionContextManager:
    def __init__(
        self,
        model: str = "gpt-4o",
        budget: ContextBudget = ContextBudget(),
    ):
        self.model = model
        self.budget = budget
        self.assembler = ContextAssembler(budget)
        self.conversation_history: list[dict] = []

    def build_context(
        self,
        user_input: str,
        system_prompt: str,
        retrieved_docs: Optional[list[dict]] = None,
        tools: Optional[list[dict]] = None,
    ) -> str:
        self.assembler.layers.clear()

        self.assembler.add_layer(ContextLayer(
            name="system", content=system_prompt,
            priority=0, max_tokens=4000, cacheable=True,
        ))

        if tools:
            tools_text = self._format_tools(tools)
            self.assembler.add_layer(ContextLayer(
                name="tools", content=tools_text,
                priority=1, max_tokens=6000,
            ))

        if retrieved_docs:
            docs_text = self._format_rag_docs(retrieved_docs)
            self.assembler.add_layer(ContextLayer(
                name="knowledge", content=docs_text,
                priority=2, max_tokens=20000,
            ))

        history_text = self._format_history()
        self.assembler.add_layer(ContextLayer(
            name="conversation", content=history_text,
            priority=3, max_tokens=30000,
        ))

        user_layer = f"<user_query>\n{user_input}\n</user_query>"
        self.assembler.add_layer(ContextLayer(
            name="current_input", content=user_layer,
            priority=4, max_tokens=4000,
        ))

        return self.assembler.assemble()

    def _format_rag_docs(self, docs: list[dict]) -> str:
        filtered = [d for d in docs if d.get("score", 0) >= 0.7]
        filtered.sort(key=lambda d: d["score"], reverse=True)
        parts = ["<retrieved_documents>"]
        for doc in filtered:
            parts.append(
                f'  <document source="{doc["source"]}" score="{doc["score"]:.2f}">\n'
                f'    {doc["content"]}\n'
                f'  </document>'
            )
        parts.append("</retrieved_documents>")
        return "\n".join(parts)

    def update_history(self, role: str, content: str) -> None:
        self.conversation_history.append({"role": role, "content": content})
        if len(self.conversation_history) > 40:
            self._compact_history()

    def _compact_history(self) -> None:
        old = self.conversation_history[:20]
        self.conversation_history = self.conversation_history[20:]
        summary = f"[Earlier conversation summary: {len(old)} messages condensed]"
        self.conversation_history.insert(0, {"role": "system", "content": summary})

面试高频考点与避坑指南

面试常问的5个问题

Q1:Context Engineering和Prompt Engineering有什么区别?

Context Engineering关注整个输入上下文的组织、预算和生命周期管理,是系统级设计;Prompt Engineering关注单条提示词的措辞优化,是技巧级优化。生产环境中前者决定系统能不能跑、跑多少钱,后者决定回答质量好多少。

Q2:128K上下文是不是可以不做压缩了?

不能。128K是理论上限,实际中要考虑:成本(按Token计费)、延迟(上下文越长推理越慢)、注意力衰减(Lost in the Middle)、以及多用户并发时的资源竞争。生产环境必须做预算管理。

Q3:RAG检索10条文档全部注入好不好?

不好。检索结果必须经过相关性过滤(阈值)、去重、Rerank重排,并按预算动态调整Top-K。噪声文档会显著增加幻觉率。

Q4:Prompt Caching和Context Engineering什么关系?

Prompt Caching是成本优化手段,Context Engineering决定哪些内容适合缓存。系统提示词和工具定义等固定内容应标记为cacheable,对话层和RAG结果不适合缓存。

Q5:多Agent系统中上下文怎么管理?

每个Agent维护独立的Context Manager,通过结构化状态(而非完整对话历史)在Agent间传递信息。避免把Agent A的完整上下文传给Agent B,Token会指数级膨胀。

生产避坑清单

表现 解法
无限累积对话历史 多轮后响应变慢、超窗截断 滑动窗口 + 摘要压缩
RAG噪声注入 回答偏离用户问题 相关性阈值 + Rerank
系统提示词重复计费 API成本居高不下 Prompt Caching
工具定义全量加载 8K+ Token浪费在无用工具上 按意图动态加载工具
缺少Token监控 成本失控后才发现 每次调用记录 usage 指标

多模型上下文的差异化管理

2026年生产环境很少只用一种模型。GPT-4o、Claude Sonnet、Gemini Pro可能同时存在于不同业务线,Token计数和上下文格式并不通用

各模型Token计数差异

模型 计数器 中文约估 特殊注意
GPT-4o tiktoken cl100k_base 1.5-2字/Token 工具定义按Token计费
Claude 3.5+ 官方API count_tokens 1.5-2字/Token 支持Prompt Caching标记
Gemini 1.5+ 自有分词器 1.3-1.8字/Token 超长上下文(1M)计费不同

生产级Context Manager应抽象 TokenCounter 接口,按模型注入不同实现,绝不能用GPT的tiktoken估算Claude的用量

class TokenCounter(Protocol):
    def count(self, text: str) -> int: ...

class TiktokenCounter(TokenCounter):
    def count(self, text: str) -> int:
        return len(tiktoken.encoding_for_model("gpt-4o").encode(text))

class AnthropicCounter(TokenCounter):
    def count(self, text: str) -> int:
        # 调用 Anthropic count_tokens API 或本地近似
        return int(len(text) / 1.7)

Prompt Caching生产实践

Anthropic和OpenAI均已支持Prompt Caching,是2026年降本增效的第一手段。

Cache Breakpoint策略

[可缓存] 系统提示词(4K Token)
[可缓存] 工具定义(6K Token)
[不可缓存] RAG检索结果(每次不同)
[不可缓存] 对话历史(持续增长)

每轮对话中,系统层+工具层约10K Token可被缓存,按Anthropic 2026年定价,缓存读取价格为正常的10%。

成本节省测算

假设日请求10万次,系统+工具层10K Token/次:

模式 日Token消耗 日成本(约)
无缓存 10亿 Token $3000
90%缓存命中 1.9亿 Token $600
节省 80%

Context Engineering的核心职责之一,就是识别并标记可缓存层,把静态内容固定在上下文前缀。


上下文质量评估与A/B测试

三维评估指标

指标 定义 测量方式
Faithfulness 回答是否忠于检索内容 LLM-as-Judge + 人工抽检
Relevance 检索内容是否与问题相关 Rerank分数分布
Token Efficiency 每单位Token的信息密度 正确答案Token / 总输入Token

A/B测试框架

experiments = {
    "control": {"rag_top_k": 10, "threshold": 0.5},
    "variant_a": {"rag_top_k": 5, "threshold": 0.7},
    "variant_b": {"rag_top_k": 5, "threshold": 0.7, "rerank": True},
}

对比三组的用户满意度、平均Token消耗、P99延迟,用数据驱动上下文策略迭代,而非靠直觉调参。


Agent场景的上下文隔离

多Agent系统中,最大的Token陷阱是上下文泄漏——把Agent A的完整对话历史传给Agent B。

隔离原则

协调者Agent 只传递:
  - 任务描述(用户原始问题)
  - 结构化状态(order_id, intent)
  - 上游Agent的Artifact(非完整对话)

禁止传递:
  - 其他Agent的系统提示词
  - 其他Agent的工具调用中间结果
  - 完整的多轮对话历史

子Agent上下文模板

<delegated_task>
  <intent>查询物流状态</intent>
  <context>
    <order_id>ORD-20260703-8842</order_id>
    <user_id>USR-456</user_id>
  </context>
  <constraints>只返回物流信息,不处理退款</constraints>
</delegated_task>

企业客服系统改造案例

某SaaS客服平台改造前后对比:

指标 改造前 改造后(Context Engineering)
平均输入Token 45000/次 12000/次
月API成本 ¥28万 ¥9万
答非所问率 23% 6%
P95响应延迟 8.2秒 3.1秒

改造措施:分层Token预算、RAG阈值从0.5提到0.7、对话超20轮自动摘要、系统提示词启用Prompt Caching。


面试高频考点与避坑指南(进阶篇)

Q6:上下文窗口从128K扩展到1M,策略要变吗?

要变。窗口越大,「Lost in the Middle」问题越严重——相关信息埋在90万Token中间,模型反而找不到。更大窗口不等于塞更多内容,而是允许更精细的分层和更长的对话历史。

Q7:怎么判断该用RAG还是直接把文档塞进上下文?

文档总Token < 窗口预算的30% 且文档集固定 → 可全量注入(Long Context)。文档动态增长或总量超过预算 → 必须RAG。2026年趋势是混合:核心文档全量 + 动态检索补充。

Q8:工具定义占8K Token,怎么优化?

三策略:(1) 按意图动态加载子集工具;(2) 合并相似工具为一个带参数的通用工具;(3) 工具描述用简短Schema,详细文档放RAG按需检索。

Q9:如何监控上下文质量?

每次请求记录:各层Token用量、RAG命中率、截断次数、缓存命中率。Grafana面板展示Token成本趋势,异常波动自动告警。


Context Engineering 工具链推荐(2026)

工具 用途 推荐场景
tiktoken GPT Token精确计数 OpenAI模型
Anthropic count_tokens API Claude Token计数 Claude模型
LangSmith / LangFuse 上下文追踪与评估 生产监控
LlamaIndex Response Synthesizer RAG上下文组装 文档问答
Microsoft Guidance 结构化输出约束 格式固定场景

自建 vs 购买

  • 日请求 < 1万:自建Context Manager足够(本文代码即可起步)
  • 日请求 1万-100万:引入LangFuse做追踪,自研核心组装逻辑
  • 日请求 > 100万:需要专用上下文缓存层(Redis)+ 分层预算引擎

上下文模板库:团队最佳实践沉淀

不要把系统提示词散落在代码里。推荐建立团队级上下文模板库:

context-templates/
├── customer-service/
│   ├── system-v3.md        # 客服系统提示词(版本化)
│   ├── tools-schema.json   # 工具定义
│   └── rag-config.yaml     # RAG参数(top_k, threshold)
├── code-assistant/
│   ├── system-v2.md
│   └── tools-schema.json
└── changelog.md            # 每次模板变更记录与A/B结果

每次模板变更走Code Review,记录变更原因和A/B测试结果。这是2026年LLM团队的「基础设施即代码」实践。


动手实战:构建最小可用Context Pipeline

目标

用30行核心代码实现:分层组装 → Token预算校验 → 超限自动裁剪。

Step 1:定义预算

budget = ContextBudget(total_limit=128000, output_reserve=8000, safety_buffer=10000)
manager = ProductionContextManager(budget=budget)

Step 2:准备测试数据

docs = [
    {"source": "faq.md", "score": 0.92, "content": "退货政策:7天无理由..."},
    {"source": "noise.md", "score": 0.45, "content": "无关内容..."},  # 应被过滤
]
history = [{"role": "user", "content": f"消息{i}"} for i in range(50)]  # 触发压缩

Step 3:组装并检查

context = manager.build_context(
    user_input="如何退货?",
    system_prompt="你是客服助手...",
    retrieved_docs=docs,
)
report = budget_check({"assembled": context})
print(f"总Token: {report['total']}, 超限: {report['overflow']}")

Step 4:验证过滤效果

  • noise.md(score=0.45)不应出现在最终上下文中
  • 50条历史消息应被压缩到40条以内
  • 系统提示词应完整保留(最高优先级)

扩展练习

  1. 接入真实RAG检索(LlamaIndex或LangChain),替换硬编码docs
  2. 添加Prometheus指标:context_tokens_by_layer{layer="knowledge"}
  3. 对比启用/禁用Prompt Caching的API成本差异

深度辨析:上下文工程 vs 微调 vs 长上下文

很多团队在「效果不好」时的第一反应是「要不要微调模型」。2026年的决策树应该是:

第一步:检查上下文质量。 如果RAG检索不准、对话历史太长、系统提示词含糊——这些是Context Engineering问题,微调解决不了。业界经验:80%的「模型效果不好」实际上是上下文组织问题。

第二步:检查模型选择。 换更强的模型(如从GPT-4o-mini升到GPT-4o)往往比微调见效快、成本低。微调适合领域术语固定、输出格式严格、且已有大量标注数据的场景。

第三步:考虑微调。 当上下文工程已优化到位、模型选择已合理、但特定领域表现仍不达标时,才考虑SFT/RLHF微调。微调的成本不仅是GPU费用,还包括数据标注、模型版本管理、回滚策略。

长上下文(128K-1M)不是银弹。 窗口越大,模型对中间内容的注意力越分散。与其把100篇文档全塞进去,不如精准检索5篇高相关文档。Context Engineering的核心价值是「用最少的Token给模型看最对的信息」。


2026年Context Engineering技术趋势

趋势1:上下文感知的Reranker。 不再是通用的Embedding检索,而是根据当前对话上下文动态调整检索策略。例如用户已提到订单号,Reranker会提升包含该订单号的文档权重。

趋势2:自适应Token预算。 根据问题复杂度动态分配预算——简单FAQ只给2K知识层Token,复杂多步推理给20K。避免「一刀切」的固定预算。

趋势3:跨会话长期记忆。 将用户偏好、历史交互摘要存储在外部记忆系统(如Mem0、Zep),按需注入上下文,而非无限累积对话历史。

趋势4:多模态上下文管理。 图片、音频、视频内容的Token计数和管理策略与纯文本不同。2026年多模态Agent需要统一的Context Manager处理异构内容。

趋势5:上下文安全。 防止Prompt注入攻击(恶意文档内容覆盖系统指令)、敏感信息泄漏(PII不出现在日志和缓存中)。Context Engineering必须包含安全过滤层。

给LLM工程师的3句话总结

  1. 上下文组织决定系统能不能跑、跑多少钱——比Prompt措辞重要10倍
  2. 四层预算(系统/工具/知识/对话)+ 超限裁剪是生产标配
  3. 先优化Context Engineering,再考虑微调和换模型

推荐学习路线(2周)

第1周:理解分层+Token预算 — 阅读Anthropic Prompt Caching文档 → 用tiktoken实现Token计数器 → 实现四层Context Assembler → 测试超限裁剪逻辑。

第2周:RAG注入+生产化 — 接入向量检索 → 实现RAG过滤和Rerank → 添加对话压缩策略 → 搭建Token监控Dashboard → 准备5个面试标准答案。

最后送一句话:在LLM应用中,你喂给模型什么,决定了它能给你什么。Context Engineering就是「喂什么」的工程学。

建议读者按本文的Context Pipeline架构,先在本地实现最小可用版本,再逐步接入RAG、Prompt Caching和监控。每个模块独立验证后再组合,避免一次改动太多难以定位问题。


总结与延伸阅读

Context Engineering是2026年LLM应用从Demo走向生产的分水岭。核心就三件事:分层管理上下文、严格Token预算、智能压缩淘汰

设计要点回顾

  1. 上下文分4层:系统层、工具层、知识层、对话层,各有独立预算
  2. Token预算是硬约束,128K窗口不等于可以挥霍
  3. RAG注入必须过滤、去重、排序,避免Lost in the Middle
  4. 对话压缩三策略:滑动窗口、摘要压缩、结构化状态提取
  5. Prompt Caching + Context Pipeline是成本优化的组合拳

相关阅读

权威参考

本站提供浏览器本地工具,免注册即可试用 →

#Context Engineering#LLM上下文工程#Prompt设计#RAG上下文#长上下文优化#2026