codex-lb如何追踪Token成本?价格自动同步与成本回填机制完整解析
【免费下载链接】codex-lbCodex/ChatGPT multiple account load balancer & proxy with usage tracking, dashboard, and OpenCode-compatible endpoints项目地址: https://gitcode.com/gh_mirrors/co/codex-lb
codex-lb 是一个开源的 Codex/ChatGPT 多账号负载均衡器与反向代理,内置Token 用量追踪、成本计算与可视化仪表盘。很多用户最关心的问题就是:它如何追踪 Token 成本?价格是怎么自动同步的?历史缺成本的数据又如何自动回填?本文将带你完整解析这套「价格自动同步 + 成本自动回填」机制,无需阅读源码也能看懂。
📊 Token 用量从哪里来?
codex-lb 的成本追踪建立在请求日志之上。每次请求结束时,它会把上游返回的 Token 计数记录下来,并且不重新分词、不估算隐藏的推理用量——你看到的数字就是上游真实上报的值。
几个关键的计数规则(详见 usage-reporting.md):
input_tokens包含完整输入量,缓存命中部分作为子集单独上报(缓存价格更低);output_tokens包含全部输出,推理(reasoning)Token 是它的子集;- 总 Token = 输入 + 输出,不会重复累加缓存与推理部分。
这样设计的好处是:数据可审计、可复核,仪表盘上每条请求都能展开看到精确的 Token 构成。
🔄 价格如何自动同步?
成本 = Token 数量 × 单价,而「单价」是动态变化的。codex-lb 的价格同步机制分为三层:
1️⃣ 双数据源抓取
价格目录会同时从两个公开数据源获取 OpenAI 文本模型的定价:
- models.dev:提供基础输入/输出/缓存读取价格,以及 priority、flex 服务档(service tier)和长上下文阶梯价;
- LiteLLM:补充缺失的服务档费率与额外模型。
两个来源会在本地合并(pricing_catalog.py 中的merge_catalogs),并做严格的字段校验——不完整、非有限数或缺少长上下文阈值的条目会被直接丢弃,绝不让脏数据进入计费。
2️⃣ 每小时定时刷新
后台的元数据刷新调度器(metadata_scheduler.py)每隔1 小时拉取一次最新价格:
- 成功后立即安装到内存目录,并把快照写入磁盘缓存
pricing-cache.json; - 失败后5 分钟重试一次,期间继续使用上次成功加载的价格。
3️⃣ 三级容灾回退
即使上游全部宕机,成本计算也不会中断,回退链如下:
| 优先级 | 来源 | 说明 |
|---|---|---|
| 1 | 内存价格目录 | 运行时的最新快照 |
| 2 | 磁盘缓存 | 上次成功抓取的pricing-cache.json |
| 3 | 内置快照 | 随代码分发的 pricing_snapshot.json 与硬编码默认价(pricing.py) |
内置快照与默认价由每日自动化工作流维护,提交可审查的 PR 更新,运维人员不需要额外配置 API Key。
🩹 成本回填:历史数据缺成本怎么办?
这是最容易忽略但最精妙的部分。设想这种情况:某次请求发生时,该模型的价格还没进入目录(或价格源当时不可用),这条日志的成本只能留空。那么价格到位之后,谁来补账?
答案是一个幂等的分批回填器(cost_backfill.py):
- ✅触发条件:每当价格目录发生变化,调度器立即把回填游标归零,启动全量扫描;
- ✅分批小步走:每次只处理200 条(上限 1000),以自增 ID 为游标推进,重启后从 0 开始扫也完全安全;
- ✅幂等标记:成本字段为
NULL即为「待补」的持久标记,已补的成本(包括 0)绝不会被覆盖; - ✅聚合同事务修正:回填某条日志成本的同时,在同一事务内把账户累计、API Key 累计、小时/15分钟/报表聚合桶一起加上对应金额——仪表盘、报表、账户、API Key 四处数字永远一致;
- ✅多副本安全:回填任务通过领导者选举执行,多副本部署下只有一个副本在干活;
- ✅尊重保留策略:只从不违反数据保留的范围内重建,已经被清理的原始日志不会强行还原,聚合桶的永久累加和也保持不变。
一句话总结:价格一变,账自动补齐,且不会重复补、不会补错。
🖥️ 在仪表盘上如何查看?
- Request Logs(请求日志):Token 单元格显示总量,下方标注缓存命中与推理明细,展开 Details 可见精确构成;
- Reports(报表):展示所选时间范围与筛选条件下的推理总量与覆盖数量,支持按日拆分和 CSV 导出;
- Accounts / API Keys:累计成本随回填实时修正,无需手动刷新。
缺失值始终以—显示而非伪造为 0——codex-lb 坚持「未知就是未知」的数据原则。
📚 相关模块与文档路径速查
| 内容 | 路径 |
|---|---|
| 用量上报与定价规则文档 | docs/usage-reporting.md |
| 内置默认价格表 | app/core/usage/pricing.py |
| 价格目录抓取与合并 | app/core/usage/pricing_catalog.py |
| 内置价格快照 | app/core/usage/pricing_snapshot.json |
| 元数据刷新调度器 | app/core/usage/metadata_scheduler.py |
| 成本回填实现 | app/modules/request_logs/cost_backfill.py |
| 数据库模型定义 | app/db/models.py |
小结
codex-lb 的 Token 成本追踪是一套「真实上报 + 自动同步 + 自动补账」的完整闭环:
- 用量真实——只记录上游上报的 Token 计数,不重算、不估算;
- 价格鲜活——双源抓取、每小时刷新、三级容灾回退;
- 账单自愈——价格到位后自动分批回填历史成本,多处聚合同事务修正。
对于管理多个 Codex/ChatGPT 账号的团队来说,这意味着你无需任何人工干预,就能在仪表盘上拿到一份持续准确、可审计的成本账本。
【免费下载链接】codex-lbCodex/ChatGPT multiple account load balancer & proxy with usage tracking, dashboard, and OpenCode-compatible endpoints项目地址: https://gitcode.com/gh_mirrors/co/codex-lb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考