Prompt Budgeting

Prompt Budgeting 是为上下文的各个组件分配 token 预算的策略,确保在有限的上下文窗口内最大化信息密度。

#type / concept #status / evergreen #tech / ai

[!info] related notes

Prompt Budgeting

一句话定义

Prompt Budgeting 是为上下文的各个组件分配 token 预算的策略。总预算是有限的(如 128K),需要决定每个组件分多少。

核心原理

预算分配表

组件预算范围优先级说明
System Prompt1-2K最高角色和规则
当前用户输入0.5-2K最高当前任务
结构化状态1-2K任务进度
最近消息5-15K对话上下文
检索知识3-10K外部知识
工具结果2-5K工具返回
对话摘要0.5-2K历史压缩
用户画像0.5-1K长期记忆
输出预留4-8K-LLM 生成空间

动态预算调整

class DynamicBudgetAllocator:
    def allocate(self, context: ContextBundle, phase: str) -> dict:
        if phase == "information_gathering":
            # 信息收集阶段:给工具结果更多空间
            return {
                "tool_results": 10000,
                "retrieved_knowledge": 8000,
                "recent_messages": 5000,
                "output_reserve": 4000,
            }
        elif phase == "generation":
            # 生成阶段:给输出更多空间
            return {
                "tool_results": 3000,
                "retrieved_knowledge": 5000,
                "recent_messages": 10000,
                "output_reserve": 8000,
            }

常见坑

  1. 不做预算: 所有内容无限制地塞进去
  2. 预算太死: 不同阶段用相同的预算分配
  3. 不留输出空间: 上下文填满了,LLM 没空间回答
  4. 不监控实际使用: 不知道预算是否合理

参考资料

创建于 2026/6/30 更新于 2026/7/15