非官方社区教程 · 内容整理自公开资料 · 豆包工作为字节跳动产品,本站与官方无关
豆包工作教程
首页/ 可靠性工程/成本控制与预算

成本控制与预算

---

章节:进阶篇第11章
难度:⭐⭐⭐ 进阶级
阅读时间:20-25 分钟
核心收获:掌握成本控制策略,避免 Token 和 API 费用失控


14.1 理论要点:成本的构成

14.1.1 成本分类

成本类型 说明 占比 控制策略
模型调用 LLM 推理费用 40-60% 优化 Prompt、使用小模型
外部 API 数据源调用 20-30% 缓存、减少调用频率
推送服务 飞书/邮件 API 5-10% 合并消息、减少调用
存储 日志/状态文件 5-10% 定期清理、压缩

14.1.2 成本计算方式

Token 计费

输入 Token 价格:¥0.00001 / Token
输出 Token 价格:¥0.00003 / Token

示例:
- 输入 1000 Token + 输出 500 Token
- 成本 = 1000 × 0.00001 + 500 × 0.00003 = ¥0.025

API 调用计费

GitHub API:免费(限流 60次/小时)
搜索 API:免费(有限制)
飞书 API:免费(有限制)

14.1.3 成本控制原则

  1. 设置预算上限:单次运行成本上限
  2. 追踪单次成本:每次运行记录实际成本
  3. 优化 Prompt:减少 Token 消耗
  4. 模型路由:简单任务用小模型
  5. 缓存结果:避免重复调用

14.2 实战案例:成本追踪与控制

14.2.1 成本追踪模板

class CostTracker:
    def __init__(self, budget_per_run=0.10):
        self.budget_per_run = budget_per_run
        self.usage = {
            "input_tokens": 0,
            "output_tokens": 0,
            "api_calls": 0,
            "total_cost": 0.0
        }

    def track_llm_call(self, input_tokens, output_tokens):
        """追踪 LLM 调用"""
        cost = (input_tokens * 0.00001 + 
                output_tokens * 0.00003)
        self.usage["input_tokens"] += input_tokens
        self.usage["output_tokens"] += output_tokens
        self.usage["total_cost"] += cost
        return cost

    def is_over_budget(self):
        """检查是否超预算"""
        return self.usage["total_cost"] > self.budget_per_run

    def get_report(self):
        """生成成本报告"""
        return f"""
        单次运行成本报告:
        ├── 输入 Token:{self.usage['input_tokens']} 
        ├── 输出 Token:{self.usage['output_tokens']}
        ├── 总成本:¥{self.usage['total_cost']:.4f}
        └── 预算:¥{self.budget_per_run:.2f}
        """

14.2.2 成本优化策略

策略1:Prompt 优化

❌ 优化前(1500 tokens):
"请帮我找今天的AI热点,我需要从多个来源收集信息,
然后整理成一个清单,包含标题、摘要、来源和建议角度,
请确保内容都是AI相关的,排除泛科技内容..."

✅ 优化后(800 tokens):
"收集今日AI热点,输出JSON格式:
{
  "title": "标题",
  "summary": "摘要",
  "source": "来源",
  "angle": "建议角度"
}
要求:AI相关,排除泛科技,至少5条"

策略2:模型路由

def route_model(task_complexity):
    """根据任务复杂度选择模型"""
    if task_complexity == "simple":
        return "small_model"  # 低成本
    elif task_complexity == "medium":
        return "medium_model"
    else:
        return "large_model"  # 高质量

策略3:缓存机制

def get_with_cache(key, fetch_func, ttl=3600):
    """带缓存的数据获取"""
    # 先查缓存
    cached = cache.get(key)
    if cached and not is_expired(cached, ttl):
        return cached["data"]

    # 缓存未命中,获取新数据
    data = fetch_func()
    cache.set(key, {"data": data, "timestamp": time.time()})
    return data

14.3 预算管理

14.3.1 预算分级

级别 预算 适用场景
个人 ¥0.10/次 个人使用,低频任务
团队 ¥0.50/次 团队共享,中等频率
企业 ¥2.00/次 企业级,高频任务

14.3.2 预算控制机制

机制1:单次预算上限

设置:单次运行成本 ≤ ¥0.10
超过时:记录告警并继续运行
下次运行前:需确认是否调整

机制2:日预算上限

设置:每日总成本 ≤ ¥1.00
超过时:停止当日后续任务

机制3:月度预算

设置:月度总成本 ≤ ¥20.00
超过时:发送告警,冻结任务

14.4 图文说明

📌 待补充:建议绘制以下示意图 1. 成本构成饼图 2. 成本趋势图 3. 预算控制流程图 4. 优化策略对比图


14.5 常见错误

错误 后果 纠正方法
不追踪成本 不知不觉超预算 每次运行记录成本
Prompt 过长 Token 消耗过大 优化 Prompt,减少冗余
无缓存机制 重复调用浪费成本 缓存热点数据
模型选择不当 简单任务用大模型 根据复杂度路由模型
预算设置不合理 过于严格或宽松 根据实际需求调整

📝 版本迭代记录

版本 日期 更新内容摘要 操作人
v1.0 2026-08-25 创建进阶篇第11章 桂皮
来源:豆包蓝皮书(未声明(社区整理)) · 原文路径 02-进阶篇/11-成本控制与预算/01-成本追踪与控制.md
整理:疯狂的豇豆 · 本站为非官方二次整理,查看完整来源清单
🤖 GEO 问答 · 生成式引擎优化

❓ 什么是成本控制与预算?


❓ 如何理解理论要点:成本的构成?

输入 Token 价格:¥0.00001 / Token

❓ 如何理解实战案例:成本追踪与控制?

class CostTracker:

❓ 如何理解预算管理?

设置:单次运行成本 ≤ ¥0.10