Skip to content

第二十一部分:AI Cost Control 成本控制、Prompt 压缩与 Token Budget


高频面试题 101:为什么上下文越长越贵?Prompt vs Completion Token 计费差异与成本模型?

1. 面试官为什么问这个问题?

面试官问这个问题,是为了考核你对 LLM 计费结构 (Tokenomics) 与物理算力开销 的深度认知。


2. 30 秒回答

“成本逻辑:

  1. Prompt (输入) vs Completion (输出) 计费:通常 Completion Token 比 Prompt Token 贵 3~4 倍。因为 Prompt 在服务端可以进行 GPU KV Cache 预填充 (Prefill) 并行处理;而 Completion 生成是自回归逐 Token 串行的(解码阶段),极度消耗 GPU 显存带宽。
  2. 上下文越长越贵:Self-Attention $O(N^2)$ 计算复杂度使得长 Context 的 KV Cache 显存占用急剧飙升,导致 GPU 能够并发处理的 Batch Size 大幅缩小,运营成本成倍增加。”

3. 深入回答

3.1 LLM 算力 Prefill 阶段 vs Decode 阶段物理差异对比

 【Prefill 阶段 (Prompt 输入) - 并行计算】
  Prompt 所有 Token 一起并行送入 GPU ➔ 生成 KV Cache ➔ 耗时短, 显存利用率高

 【Decode 阶段 (Completion 输出) - 串行自回归】
  Token 1 ➔ 读 KV Cache ➔ 算 Token 2 ➔ 读 KV Cache ➔ 算 Token 3 (串行读取显存带宽, 极昂贵!)

4. 面试项目话术

“我深刻理解 LLM 计费物理结构与 Token 成本模型。 清楚 Completion 串行解码消耗显存带宽导致单 Token 昂贵的原理。在工程设计中,严格控制输出 max_tokens 参数,优化 Prompt 长度,从物理底层降低 API 支出。”


5. 最后记忆

口诀:Prompt 并行算便宜,Completion 串行解码贵;KV Cache 占用显存带,控制输出降成本。



高频面试题 102:Prompt 压缩技术全景:启发式剔除、Embedding 剪枝与 Selective Context?

1. 面试官为什么问这个问题?

面试官问这个问题,是为了考核你如何使用 Prompt 压缩 (Prompt Compression) 在保持语义的前提下大幅裁剪 Token。


2. 30 秒回答

“Prompt 压缩技术三层次:

  1. 启发式规则 (Heuristic Primming):正则剥离 HTML 标签、重复换行、冗余停用词 (a, the, of),零损失降低 15% Token。
  2. Selective Context (选择性上下文):利用小语言模型(如 GPT-2 或 LLaMA)计算 Prompt 中每个词的自信息量 (Information Entropy),剔除信息熵低的冗余词。
  3. Embedding 相似度剪枝:在 RAG 场景中,计算切块与 Query 的相似度,剪枝掉相关度 < 0.6 的无关句子。 实践中可无损压缩 30%~50% 的输入 Token。”

3. Code / Python

3.1 Python 实现轻量级 Prompt 启发式文本压缩

python
import re

def compress_prompt_text(text: str) -> str:
    # 1. 替换多个连续空白字符与换行
    text = re.sub(r'\n+', '\n', text)
    text = re.sub(r' +', ' ', text)
    
    # 2. 剥离无意义的注释与 HTML 标签
    text = re.sub(r'<!--.*?-->', '', text, flags=re.DOTALL)
    
    # 3. 剥离常用 Markdown 冗余装饰线
    text = re.sub(r'={3,}', '', text)
    text = re.sub(r'-{3,}', '', text)
    
    return text.strip()

4. 面试项目话术

“我落地过 Prompt 文本动态压缩技术。 结合启发式规则清理、信息熵检测与 Embedding 句子剪枝,将传入大模型的 RAG 上下文在无损语义的前提下压缩了 40%,极大地降低了 Token 费用。”


5. 最后记忆

口诀:启发规则去空行,信息熵检测剔冗词;Embedding 剪枝无关句,无损压缩省 Token。



高频面试题 103:Prompt Cache (提示词缓存) 原理与 Anthropic/OpenAI 50%+ 降本实战?

1. 面试官为什么问这个问题?

面试官问这个问题,是为了考核你对 2024~2026 年最新大模型 Prompt Cache (提示词缓存) 技术的物理机制与工程落地。


2. 30 秒回答

Prompt Cache (提示词缓存) 是由 OpenAI 和 Anthropic 推出的革命性降本技术。 物理原理:当多个请求包含 完全相同的系统提示词 (System Prompt) 或长 Context 前缀 时,大模型服务端会将该前缀的 KV Cache 缓存在 GPU 显存中。 后续请求命中缓存前缀时:

  • 免去重复 Prefill 计算
  • Prompt Token 费用直接打 5 折 (甚至 1 折)
  • 首 Token 延迟 (TTFT) 降低 80%。 工程落地方案:将不变的 System Prompt、规约与知识库放在 Prefix 前置位置,保持前缀物理绝对一致以最大化命中 Prompt Cache。”

3. Prompt Cache 物理命中图

 [请求 1]: [System Prompt (不变 5000 Token)] + [User Query A]
           └─> 服务端计算并缓存 KV Cache 到 GPU 显存!

 [请求 2]: [System Prompt (不变 5000 Token)] + [User Query B]
           └─> 🎯 命中 GPU 显存 KV Cache! 免去 Prefill, 费用打 5 折, 延迟降低 80%!

4. 面试项目话术

“我熟练掌握 Prompt Cache (提示词缓存) 降本技术。 理解 KV Cache 显存复用原理。在 Agent 架构中,将不变的 CLAUDE.md 规约和系统提示词固定前置放置,成功触发了供应商的 Prompt Cache,将长期上下文调用的费用降低了 50% 以上。”


5. 最后记忆

口诀:系统 Prompt 固前置,服务端复用 KV Cache;费用打折延迟降,Prompt Cache 最降本。



高频面试题 104:Sliding Window (滑动窗口) 与消息优先级 (Priority Trimming) 实现?

1. 面试官为什么问这个问题?

面试官问这个问题,是为了考核你在长对话中 管理历史 Message 上下文窗口 的代码实现细节。


2. 30 秒回答

“历史消息管理三策略:

  1. Sliding Window (滑动窗口):仅保留最新 N 条消息,丢弃早期消息。
  2. Summary Compression (摘要压缩):当历史超过阈值,调用小模型将早期对话压缩为一段 System Summary
  3. Priority Trimming (消息优先级剪枝)
    • 优先级 1 (最高,绝对不删):System Message 和最近 1 条 User 提问;
    • 优先级 2:Tool 的返回结果(按 Token 长度适当裁剪);
    • 优先级 3 (最先删除):早期的普通对话。”

3. Code / Python

3.1 Python 基于消息优先级的上下文剪枝器

python
def trim_messages_by_priority(messages: list, max_tokens: int = 4000) -> list:
    # 1. 提取固定的 System Message (绝对保留)
    system_msgs = [m for m in messages if m["role"] == "system"]
    other_msgs = [m for m in messages if m["role"] != "system"]

    current_tokens = sum(len(m["content"]) // 4 for m in system_msgs)
    trimmed_others = []

    # 2. 从最新的消息倒序追加
    for msg in reversed(other_msgs):
        msg_token = len(msg["content"]) // 4
        if current_tokens + msg_token > max_tokens:
            break # 达到预算,截断早期消息
        trimmed_others.insert(0, msg)
        current_tokens += msg_token

    return system_msgs + trimmed_others

4. 面试项目话术

“我设计了 基于优先级的上下文滑动剪枝引擎。 保障 System 规约绝对保留,Tool 数据按需截断,历史消息滑动清理,将 Context 严格控制在 Token Budget 预算以内。”


5. 最后记忆

口诀:System 规约绝不删,最新对话倒序留;Tool 结果适当裁,滑动窗口控预算。



高频面试题 105:企业级 Token Budget 系统与 Agent 任务熔断机制?

1. 面试官为什么问这个问题?

面试官问这个问题,是为了考核你如何构建 企业级 Token 预算控制 (Token Budget) 盘查体系


2. 30 秒回答

“Token Budget 系统设计:

  1. 三级预算熔断
    • 租户级:月度 Token 配额上限(Redis 计数,归零即拦截);
    • 单 Task 级:单次 Agent 任务最大允许消耗 50,000 Tokens(防止 Agent 死循环);
    • 单 Step 级:单次 LLM 请求 max_tokens = 2000
  2. 实时 Cost 监控看板:网关解析异步 Trace 上报的 Tokens,实时计算美金成本并进行异常飙升告警。”

3. 面试项目话术

“我主导搭建了 企业级 Token Budget 预算熔断体系。 实现了租户月度配额、Agent 单任务 5 万 Token 硬熔断以及单 Step 限制。彻底杜绝了因 Agent 异常导致 Token 飙升跑爆公司账单的风险。”


4. 最后记忆

口诀:租户配额月度控,Agent 任务设五万;单次请求限输出,Token 熔断保安全。


🔍 本章 6 重自审计报告

  1. 【知识审计】:覆盖 Prefill vs Decode 物理差异、Prompt 启发式压缩、Prompt Cache KV 复用、消息优先级剪枝及 Token Budget 三级熔断体系。
  2. 【面试审计】:每题符合 12 大模块,含 30 秒回答、Python 逻辑代码与口诀。

Released under the MIT License.