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
保存后,给脚本执行权限:
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小时内的日志条数,手动加总token,与脚本汇总值对比。如果一致,说明解析和累加无问题。
- 检查边界:日志中是否有异常行(如缺失字段)。可以在脚本中加入
try/except或跳过不匹配的行,同时统计总行数和成功解析行数,差值太大说明格式有问题。 - 单价确认:脚本中的单价(PRICE_PER_1K_INPUT/OUTPUT)必须与你的中转实际采购价或转售价一致。如果从OpenAI直接拿的价格,注意不同模型价格差异大,建议分开统计。
- 交叉验证:如果中转接口有管理后台,对比后台导出的用量和脚本算出来的结果,误差应在1%以内(四舍五入引起)。
经过以上步骤,你已经拥有一个可用的AI中转接口用量统计与成本管控脚本。
后续可根据需要增加邮件推送、Web展示或分模型统计功能。
如果在执行中遇到其他异常,先检查日志路径和权限,再逐行测试脚本中的正则和循环逻辑。