一个聚合站余额、五个副业项目:不分成多个账号怎么把用量归到项目
面向个人开发者的轻量用量归因方案:用请求元数据、按项目分 key、日志前缀三种手段,把同一个聚合站余额下的多项目消耗拆开,配合 USDC 扣费账单实现一眼可查。
同时跑三五个周末实验的人,最容易遇到的不是钱不够,而是钱花得不明不白。聚合站一个余额、一个 API key 就能调 Claude、GPT、DeepSeek、Qwen、GLM、Kimi,省事是省事,可到了月底看账单,只知道「这个月烧了多少 USDC」,不知道是哪个项目烧的。下面是一套不用开多账号、不用改业务逻辑就能落地的打标规范。
先想清楚:归因三个层次
用量归因本质是把「一次 API 调用」映射到一个项目标签。可以分三层来做,从粗到细,成本递增:
- 账户层:按项目拆多个 API key。粒度最粗,但零改造。
- 请求层:在请求元数据里带项目标识。粒度最细,能区分子任务。
- 日志层:本地日志文件名/字段加前缀。补足前两层的盲区。
实际操作中三层通常叠加使用,而不是三选一。
方案一:按项目分 key,最省事
如果聚合站允许一个账号下创建多个 API key,这是性价比最高的一步。
- 给每个活跃项目建一个独立 key,key 名字直接写成项目代号,例如
proj-notesum、proj-crawler。 - 每个 key 配置到对应项目的环境变量,别共用
.env。 - 如果一个 key 只服务于一个项目,那么聚合站后台的按 key 用量报表就是现成的项目账单。
- 归档项目时禁用对应 key,能立刻止血——忘记关掉的实验项目是隐性消耗的主要来源。
局限:一个 key 只能对应一个标签。如果同一个项目里想再区分「抓取」和「总结」两个阶段,就需要下面的请求层方案。
方案二:请求元数据打标
大多数兼容 OpenAI 风格接口的聚合站会透传 user 字段或允许自定义 header。用它来携带项目标识是最轻的做法。
user字段:不少服务端会把该字段写进调用日志或用量明细。约定格式如proj=notesum;env=dev,不要塞敏感信息。- 自定义 Header:例如
X-Project-Id、X-Run-Id。前提是聚合站不会因为未知 header 拒绝请求,通常不会。 - 封装一层薄客户端:在项目里写一个
callLLM()包装函数,统一注入project、run两个字段,业务代码只调这个包装函数。这是把规范变成习惯的关键——靠人肉记得加字段,迟早会漏。
推荐的命名约定(纯文本、可 grep 即可):
- 项目:小写短横线,
proj-notesum - 环境:
dev/prod - 运行批次:日期或短哈希,
run-20240612-a1
不在标签里写用户 ID、邮箱等个人信息。
方案三:本地日志前缀,兜底用
请求元数据只有在服务端记录并可查询时才有用。如果聚合站后台不提供按字段筛选,退回本地日志是最可靠的兜底。
- 每个项目一个日志文件,命名如
logs/notesum-2024-06.log。 - 每行结构化记录:时间、模型名、输入输出 token 数(如果响应里返回)、项目标签、批次号。
- 定期用一个几十行的小脚本按项目聚合 token 数,再乘以对应模型的单价,就能估算出各项目消耗。
- 日志文件本身就是成本审计的原始数据,不依赖任何平台后台。
三种方案怎么配合
一个实用的组合是:
- 每个项目一个 API key —— 拿到账户层账单。
- 请求里带
proj/run字段 —— 拿到子任务粒度。 - 本地日志按项目分文件 —— 作为独立于平台的交叉验证。
三者对齐同一个命名约定,后期查「某个周末的实验到底花了多少」时,三步都能指回同一个标签。
用 USDC 账单做月度对账
聚合站按官方价 ×1.3 从余额里扣 USDC,充值本身无 KYC,这意味着你的成本数据天然就是链上可查的。
- 记下每次给余额充值的日期和金额。
- 月底用后台的用量明细(或本地日志估算)摊到各项目。
- 余额差额与各项目消耗之和应当大致吻合;差得多的往往是忘记关掉的 key、或是没带标签的调用。
如果同时向聚合站贡献 key 换取返利(按官方价 ×1.1,优质 ×1.2 返 USDC),把返利也记成一条独立的收入项,别和项目消耗混在一起。这样每个项目的真实净支出才看得清。
容易踩的坑
- 标签不一致:这周写
notesum、下周写note_sum,聚合时就是对不上的两笔。约定一次,写进项目的.env.example。 - 只打 key 不打请求:一个项目两个阶段共用 key 时,账户层报表就不再够用。
- 信号量放错位置:把项目标签塞进 prompt 正文,既污染输入又浪费 token,应放在元数据/日志侧。
- 忘了清理:实验结束只删代码不删 key 和定时任务,用量会以极慢的速度持续漏。
先做方案一和方案三,通常半天内就能落地;方案二等你确实需要区分项目内阶段时再补,收益更高但需要改一点代码。