什么是 上下文预算(Context Budget)?

上下文预算(Context Budget)是一项应用层策略,用于在序列化指令、工具、用户输入、历史、证据、工具结果与生成预留之间分配模型请求的有限 Token 容量。

工作原理

上下文预算是位于模型端点容量限制之下的应用分配策略。Context Window 说明端点最多能接受什么,预算则说明当前工作负载允许花费多少,并为生成保留多少空间。可移植的规划约束是:序列化输入、生成预留、供应商或运行时余量与安全边际之和,不得超过适用的模型和端点限制。有些 API 公布输入输出共享上限,有些分别限制输入、输出、推理或特定功能,因此不存在适用于所有供应商的单一减法公式。

预算对象应是组装后的完整请求,而不只是用户可见文本。常见 Bucket 包括 System 与 Developer Policy、Tool Schema、当前输入、对话历史、检索证据、Memory、示例、成组的 Tool Call 与 Result、多模态表示及输出格式 Schema。每个 Bucket 都应声明 Hard Cap、Soft Target、Protection Class 与 Overflow Action。固定百分比只能作为待验证假设:文档问答可能把多数输入留给证据,Agent 则可能需要更多 Tool 与状态容量。只有显式策略仍能保护必需下限和总上限时,才允许借用未使用配额。

必须在最终 Chat Template 或供应商序列化之后,使用目标模型的 Tokenizer 或 Token Count Endpoint 计数。Role Wrapper、JSON Schema、Tool Description、图像、PDF、音频和供应商附加格式都会让原始文本估算失真。计数接口本身也可能只提供估算,因此要保留经过测量的余量,并用响应 Usage 对账计划值。预算策略应绑定 Model、Endpoint、Tokenizer、Serializer、Prompt、Tool Catalog、Retrieval 与 Output Schema Revision;任一身份变化都要重新计算。

溢出行为属于契约。受保护的 System 与安全策略、授权范围、当前任务、必需输出 Schema、Source ID、未决冲突及原子的 Tool Call/Result Group 不能被静默切断。弹性 History 可以采用 Sliding Window 或已验证 Checkpoint;检索证据可以先授权,再 Rerank、Deduplicate、缩小范围或拆分;Tool Result 可以字段投影、分页,或保存后注入受限引用。必需内容仍无法放入时,应显式失败、要求用户缩小任务、路由到兼容端点或拆分工作,不能依赖未声明的截断。

单次调用的 Context Budget 不等于 Agent Run Budget、账单上限、Rate Limit 或权限系统。多步 Agent 还需分别限制 Model Call、Tool Call、Wall Time、Retry、Byte 及整次运行的总 Token。每个 Tool Result 都可能成为下一次请求的输入,因此纳入上下文前要校验类型与大小,并保持 Call/Result 原子性。数据必须先完成授权与分类,再参与预算;为适配容量而删除内容不会让未授权数据变安全,超大不可信结果还可能形成成本或可用性攻击。

Prompt Caching 可以减少重复 Prefill 计算或费用,但 Cached Token 仍占用逻辑上下文,不会扩大预算。Context Compression 可以缩小某个 Bucket,却会引入 Loss Budget 与 Provenance 义务。应记录每个 Bucket 的计划和实际 Token、溢出原因与动作、被省略或转换的 Source ID、生成用量、供应商报告的 Reasoning 或 Cached Token、Finish Reason、延迟、成本和任务结果,同时避免记录 Secret 或隐藏推理文本。

预算策略必须随完整 Release 一起评测。在相同 Model、Data 与 Output Contract 下,将多个预算方案与未预算或更大上下文对照组比较。测量 Task Success、Critical-evidence 与 Policy-constraint Recall、Citation Support、Incomplete-output 与 Overflow Rate、各 Bucket 的 p50/p95/p99 Utilization、TTFT、端到端延迟及每个成功任务成本。测试多语言、代码、大型 Schema、多模态输入、长会话、超大 Tool Result、冲突证据、Prompt Injection、供应商 Revision 变化,以及不存在安全分配方案的样本。

主要特点

  • 应用策略而非模型容量:Context Window 是上限,预算定义当前工作负载在其下方的具体分配
  • 完整请求计量:序列化指令、Tool、历史、证据、媒体、生成、运行时余量与安全边际均显式记录
  • 分桶契约:每类内容都有 Cap、Target、Protection Class、Priority 与确定性 Overflow Action
  • 绑定 Revision:Model、Endpoint、Tokenizer、Serializer、Prompt、Tool Catalog、Retrieval 与 Schema 都会影响计数
  • 安全溢出语义:保留受保护内容,否则缩小、拆分、改路由、复核或拒绝请求
  • 按结果验收:Token 利用率与节省量必须和质量、证据保留、延迟、成本及滥用测试一起评估

常见用途

  1. 组装带已授权证据、引用元数据与受保护生成预留的 RAG 请求
  2. 用原始近期轮次、已验证 Checkpoint 与可检索来源历史限制长对话
  3. 只加载当前任务相关的 Tool Schema,并对超大 Tool Result 执行字段投影或分页
  4. 按模型专属计数为多语言、代码、表格或多模态请求选择路由
  5. 在单独受限的多步 Agent 执行中约束每次模型调用的容量

示例

loading...
Loading code...

常见问题

上下文预算与上下文窗口有什么区别?

Context Window 是模型与端点的容量上限;Context Budget 是应用在该上限之下,为指令、Tool、当前输入、历史、证据、结果与生成预留制定的分配策略。请求即使装得下,也可能因成本过高、延迟过长、噪声过多或风险不符合当前工作负载而违反预算。

应用应如何计算上下文预算?

先读取确切模型与端点限制,为生成容量和经过测量的安全余量预留空间,再用目标 Tokenizer 或供应商接口计算完整序列化输入。必须包含 Role Wrapper、Tool 与输出 Schema、历史、检索证据、Tool Result 和多模态表示,并用实际 Usage 对账估算值、版本化预算策略。

Cached Token 仍会占用上下文预算吗?

会。Prompt 或 Context Caching 可以减少重复 Prefill 计算或费用,但缓存前缀仍是逻辑输入并占用 Context Window。缓存不会产生额外容量、授权过期内容,也不能替代输出预留和有效上下文评测。

请求超过上下文预算时应该怎么办?

按超限 Bucket 的声明动作处理:减少 Tool Schema、缩小并重排证据、压缩历史、投影或分页 Tool Result、拆分任务,或路由到兼容端点。不能静默删除受保护策略、授权、当前任务、必需 Schema、Source Identity,也不能只保留 Tool Call/Result Group 的一半。

所有 LLM 应用都应使用相同预算比例吗?

不应。分配取决于任务、模型、语言、Tool Catalog、检索分布、输出契约、风险、延迟目标与成本目标。百分比只能作为候选,应在代表性和对抗性评测中比较多个方案,并选择能够通过质量、安全与运营门禁的最小预算。

相关术语

相关文章