aggregator-key-cost-observability · ZH · 2026-10-21

给每次调用打标签:在一把 key 上按功能归因花费

当聚合站只按 API key 计费时,无法直接区分不同功能的花费。本文介绍如何通过请求头附加自定义标签,并在本地记录日志,从而在一把 key 上重建按功能归因的花费分布,帮助优化成本。

问题:一把 key,多个功能,花费混在一起

使用 LLM API 聚合站时,通常一个 key 可以调用多个模型。但账单往往只按 key 汇总,你很难知道具体是哪个功能、哪个团队或哪个实验消耗了多少。尤其是当同一个 key 被多个后端服务共用时,成本归因变得模糊。

解决思路:给请求打标签

大多数 API 允许在请求头中添加自定义字段。你可以利用这一点,为每次调用附加一个标识,例如:

X-Feature: summarization

或更结构化的:

X-Tags: feature:summarization,team:content,env:prod

这些头不会影响模型调用,但会被你的本地日志系统捕获。

在客户端埋点

在你的代码中,调用 API 时统一注入标签。下面是一个 Python 示例,使用 requests 库:

import requests

def call_llm(prompt, feature, model="claude"):
    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
        "X-Feature": feature,
    }
    payload = {
        "model": model,
        "messages": [{"role": "user", "content": prompt}],
    }
    resp = requests.post(API_URL, json=payload, headers=headers)
    return resp.json()

实际使用时,你可以根据业务函数传入不同的 feature 值。

本地日志记录

在发起请求的同时,将关键信息写入本地日志(文件或数据库)。建议记录:

  • 时间戳
  • 功能标签(feature)
  • 模型名称
  • 输入 token 数(可从响应中获取)
  • 输出 token 数
  • 请求 ID(如果响应返回)

示例日志条目:

{
  "timestamp": "2025-03-24T10:00:00Z",
  "feature": "summarization",
  "model": "claude",
  "input_tokens": 150,
  "output_tokens": 50,
  "request_id": "req_abc123"
}

从日志重建花费分布

聚合站通常按官方价 ×1.3 扣费。你需要知道每个模型的官方单价才能计算成本。假设你已知官方单价(单位:美元/千 token),则单次调用成本为:

cost = (input_tokens / 1000) * input_price + (output_tokens / 1000) * output_price

实际扣费为 cost * 1.3。

然后,按功能标签聚合日志:

from collections import defaultdict

# 假设已加载日志列表 logs
feature_cost = defaultdict(float)
for log in logs:
    price_in = MODEL_PRICES[log["model"]]["input"]
    price_out = MODEL_PRICES[log["model"]]["output"]
    cost = (log["input_tokens"]/1000)*price_in + (log["output_tokens"]/1000)*price_out
    feature_cost[log["feature"]] += cost * 1.3

print(feature_cost)

输出类似:

{"summarization": 1.25, "translation": 0.80, "chatbot": 3.10}

注意事项

  • 标签一致性:确保所有调用路径都注入相同的标签名,避免遗漏。
  • 日志完整性:如果请求失败,也要记录尝试的标签(可选),以便分析异常成本。
  • 模型价格更新:官方单价可能调整,定期核对你的价格表。
  • 隐私:日志中不要记录 prompt 或响应原文,只记录元数据。

扩展:贡献 key 的归因

如果你同时贡献 key 并获得返 USDC(官方价 ×1.1 或 ×1.2),也可以用类似方法记录贡献收益。但注意,贡献 key 的收益与用户扣费是分开计算的,不要混淆。

通过给请求打标签并本地记录,你可以在仅按 key 计费的聚合站上,清晰地按功能分摊成本,为优化和预算提供依据。