#AI#大模型#DevOps

LLM 上下文 token 预算准入:预留、降级梯与拒绝契约

超窗后临时截断会把成本问题变成错误回答。本文把上下文装配改成服务端准入协议,用分桶预留、确定性降级梯和结算指标控制每次调用。

本文要点

  • 主题聚焦:AI、大模型、DevOps
  • 适合人群:独立开发者、全栈工程师、AI 应用开发者
  • 核心价值:快速理解背景、实践路径、常见误区和工程建议
作者 @admin·发布于 2026年4月6日·更新于 2026年7月20日

“模型支持长窗口”不等于每个请求都应获准占满窗口。模板展开、工具 schema、历史、检索证据和输出上限会共同消耗容量;等供应商返回超窗错误后再从字符串尾部截断,可能恰好删掉授权限制或否定证据。Prompt 工程系统 定义指令内容,记忆压缩与整合 管持久记忆;本篇不改写二者,只定义生产网关的准入与降级事务。上下文工程 解释应该选什么信息,编程 Agent 上下文预算 讨论仓库证据分桶。它也不替代 KV Cache 准入:后者承诺 GPU 块,本篇承诺发送给模型的逻辑 token。

以最终渲染结果申请预算

客户端上报的长度只能用于早期提示。网关必须锁定 modelRevision、tokenizerDigest、promptBundleDigest、工具集合和输出 schema,渲染出实际消息,再调用目标模型对应的计数器或使用经过一致性验证的 tokenizer。Google Gemini 的 token 计数与长上下文文档说明了计数接口和窗口约束,但每个供应商的计费、系统内容与多模态换算不同,不能共用一个经验字符比例。

json
{
  "requestId": "req-74d1",
  "tenantId": "t-19",
  "taskClass": "contract-review",
  "modelRevision": "model@2026-07-01",
  "tokenizerDigest": "sha256:2f4a...",
  "promptBundleDigest": "sha256:80c1...",
  "policyRevision": 18,
  "buckets": {
    "immutableRules": 1460,
    "trustedState": 620,
    "evidence": 11840,
    "recentTurns": 3940,
    "tools": 2110,
    "maxOutput": 1600
  },
  "estimatorRevision": "admission-v6"
}

immutableRules、授权范围、输出安全约束与本轮问题是硬桶,不得降级。证据记录来源 ID、排序分和最低保留集合;历史记录轮次边界与状态来源,不能把半个工具调用截走。输出预算是服务端按任务类限制的最大承诺,不直接相信用户传入值。Tokenizer 迁移 中的版本隔离同样适用于长度缓存。

准入状态使用 PROPOSED -> RESERVED -> DISPATCHED -> RUNNING -> PARTIALLY_SETTLED -> SETTLED,拒绝进入 REJECTED,外部结果未知进入 RECONCILING。同一事务按租户、任务类和模型池预留输入、输出与并发额度,幂等键相同但渲染摘要不同必须冲突。只有在供应商调用尚未 dispatch 且有权威证据时才可全量 release;dispatch 成功即确认输入消费,并复用稳定 provider request ID。

流式 usage 按 (requestId, usageEventId) 幂等 capture,原子增加 captured 并减少 remaining output,保持 captured + remaining = reserved + topUps。只有收到 final usage 或经供应商查询、账单对账得到权威终态后,才结算实际用量并释放剩余输出预留;取消、超时和失败先结算已发生用量,结果未知则冻结在 RECONCILING,不能按零释放。lease 过期只允许带更高 fence 的回收者接管核对,不能证明未执行就不得释放。租户配额隔离 负责总额度,本协议提供单次调用的原子明细。

降级是一条固定梯,不是随手裁剪

策略版本为每个任务声明候选阶梯:FULL 保留全部合格证据;DEDUP_EVIDENCE 只去除内容摘要相同且权限一致的低排名副本;COMPACT_HISTORY 使用已通过保真门禁的本次请求压缩物;NARROW_WORKFLOW 关闭非必需工具或改为澄清式流程;最后 QUEUE_OR_REJECT。切换较小模型只有在能力、数据区域、输出 schema 和安全策略兼容矩阵全部通过时才是合法阶梯,不能把容量故障伪装成随机模型路由。

每走一级都从结构化部件重新渲染并重新计数,记录被移除的对象 ID、理由和前后 token。若最低证据集仍装不下,返回机器可判定的 CONTEXT_BUDGET_EXCEEDED,建议缩小范围或异步处理;绝不静默截断。成本感知检索可以先减少候选,但 RAG 成本感知检索 的相关性分数不能覆盖准入层的权限与最低证据约束。

用故障注入验收估算和顺序

固定样本覆盖 CJK、代码、多模态部件、巨大工具 schema、重复证据和接近窗口的多轮会话。注入 tokenizer 热切换、计数服务超时、渲染后新增工具、两请求并发争抢同一租户余额、dispatch 前取消、流式取消、final 丢失以及结算响应丢失。断言旧 digest 的计数缓存不复用,计数不可用时走保守拒绝或已批准的上界,不越过硬桶;usage 重投不重复 capture,dispatch 前取消全量释放,dispatch 后取消结算实际消费,未知结果保持冻结直到对账。

指标至少包括各阶梯请求数、估算与实际 usage 偏差、预留泄漏、超窗供应商错误、硬桶变更数、按阶梯分组的任务成功率与证据引用完整率。硬桶变更数必须恒为零;是否放宽其他门禁应由基线分布和错误预算决定,不写一个脱离模型与任务的通用百分比。

上线先影子计算决策但不改变请求,再对内部租户启用预留,最后按稳定队列逐步放量。回滚时把策略别名 CAS 到上一已验版本并清除相关长度缓存,但保留新的较低全局上限,不能关掉准入回到“先发再说”。事故请求可凭 manifest 重放,确认当时为何获准、走了哪一级以及哪项资源被释放。

延伸阅读

Related

相关推荐