AI中转接口用量统计成本管控脚本:从零搭建计费监控

如果你在运营一个AI中转接口服务,每天都要处理大量API调用请求,用量统计和成本核算是绕不开的环节。
手动翻日志不仅效率低,还容易漏算。
本文会带你一步步写一个简单的Python脚本,自动统计每个API用户的token消耗、请求次数,再根据自定义单价算出费用,最后输出一份清晰的报告。

统计脚本需要哪些准备

在开始写脚本之前,确保你的中转接口能输出调用日志。
常见的方式有两种:

  • 中转网关自带的日志文件(比如 access.log),每条记录包含时间、用户、模型、输入token数、输出token数。
  • 通过中转接口的管理API拉取用量数据(需要API Key和文档支持)。

本文以第一种为例,假设日志文件格式为:

2025-04-05 10:00:01 | userA | gpt-4 | input:500 | output:200
2025-04-05 10:05:23 | userB | claude-3 | input:300 | output:150

你需要准备一台Linux服务器(CentOS或Ubuntu均可),安装Python 3.6以上版本。
如果还没装,执行:

# Ubuntu/Debian
sudo apt update && sudo apt install python3 -y
# CentOS/RHEL
sudo yum install python3 -y

编写AI接口用量统计脚本

创建一个文件 usage_stat.py,填入以下核心代码:

#!/usr/bin/env python3
import re
from collections import defaultdict

LOG_FILE = "/var/log/ai_gateway/access.log"  # 替换为实际路径
# 自定义单价(单位:元/千token,这里仅作示例)
PRICE_PER_1K_INPUT = 0.01
PRICE_PER_1K_OUTPUT = 0.03

# 正则匹配日志行
pattern = re.compile(r"(?P\S+ \S+) \| (?P\S+) \| (?P\S+) \| input:(?P\d+) \| output:(?P\d+)")

usage = defaultdict(lambda: {"input_tokens":0, "output_tokens":0, "count":0})

with open(LOG_FILE, "r") as f:
    for line in f:
        m = pattern.search(line)
        if m:
            user = m.group("user")
            in_tok = int(m.group("input"))
            out_tok = int(m.group("output"))
            usage[user]["input_tokens"] += in_tok
            usage[user]["output_tokens"] += out_tok
            usage[user]["count"] += 1

print(f"{"用户":<10} {"请求次数":<10} {"输入Token":<12} {"输出Token":<12} {"费用(元)":<10}")
print("-"*60)
for user, data in sorted(usage.items()):
    cost = (data["input_tokens"]/1000 * PRICE_PER_1K_INPUT) + (data["output_tokens"]/1000 * PRICE_PER_1K_OUTPUT)
    print(f"{user:<10} {data['count']:<10} {data['input_tokens']:<12} {data['output_tokens']:<12} {cost:<10.4f}")

保存后,给脚本执行权限:

chmod +x usage_stat.py

然后运行:

python3 usage_stat.py

如果日志路径或格式正确,你将看到一张清晰的表格。

常见执行异常与排查

运行中可能遇到几个问题:

  • ModuleNotFoundError: No module named 'defaultdict':你写的是 from collections import defaultdict,实际是 defaultdict 吗?注意已正确导入。如果没有报错,请检查Python版本。
  • FileNotFoundError: [Errno 2] No such file or directory:日志文件路径不对。先用 ls /var/log/ai_gateway/ 确认文件存在。
  • 输出全为0:日志格式不匹配。查看一行真实日志,调整正则表达式。常见差异:分隔符用 | 但前后有空格,或时间格式不同。
  • 中文乱码:脚本头部加上 # -*- coding: utf-8 -*-,或确保终端支持UTF-8。

如果日志是JSON格式,需要改用 json.loads 解析。
可先打印一行日志格式做调试。

让脚本自动定时执行

人工每天跑一次太麻烦,用crontab搞定。
编辑定时任务:

crontab -e

在末尾添加(每天凌晨2点执行,结果追加到文件):

0 2 * * * /usr/bin/python3 /path/to/usage_stat.py >> /var/log/ai_cost_report.txt 2>&1

保存退出。
测试是否生效:crontab -l 查看列表。
注意脚本路径要写绝对路径,Python路径可以用 which python3 获取。

验证成本数据是否准确

拿到报告后,要对数据的准确性心里有底。
验证方法:

  1. 人工抽样:随机挑一个用户,挑出1小时内的日志条数,手动加总token,与脚本汇总值对比。如果一致,说明解析和累加无问题。
  2. 检查边界:日志中是否有异常行(如缺失字段)。可以在脚本中加入 try/except 或跳过不匹配的行,同时统计总行数和成功解析行数,差值太大说明格式有问题。
  3. 单价确认:脚本中的单价(PRICE_PER_1K_INPUT/OUTPUT)必须与你的中转实际采购价或转售价一致。如果从OpenAI直接拿的价格,注意不同模型价格差异大,建议分开统计。
  4. 交叉验证:如果中转接口有管理后台,对比后台导出的用量和脚本算出来的结果,误差应在1%以内(四舍五入引起)。

经过以上步骤,你已经拥有一个可用的AI中转接口用量统计与成本管控脚本。
后续可根据需要增加邮件推送、Web展示或分模型统计功能。
如果在执行中遇到其他异常,先检查日志路径和权限,再逐行测试脚本中的正则和循环逻辑。

分享到:
上一篇
AI中转站多线路冗余防止接口掉线断连
下一篇
自建AI中转站服务器挖矿病毒查杀防护实战指南
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意