GPT运维:对同一账号下的不同API-KEY用量进行跟踪统计。
OpenAI提供了billing相关的接口,用api key 查询账号的用量和额度。但统计数据是针对账号而不是key的,因此当一个账号有多个keys 的情况下无法分辨每个key用量的多少。这是定论,也是openai论坛呼声很高的一个需求。
How to track API usage and cost by API key?
既然有需求在,那么来解决一下。说下我的思路
我需要把API分开给不同的应用或者分享给不同的人,我需要知道他们分别的使用情况,有没有被滥用或闲置。
思路
- 搭建 Nginx反代,让所有的API请求经过这台代理。
- 通过 Nginx的访问日志捕获所有的请求,包括 key信息
- 对日志进行分析统计,统计key的请求数量和发送的信息量
额外地,还需要工具对apikey批量查询用量,这里用别人现成的
https://github.com/ClarenceDan/openai-billing
已知缺点和风险
- 需要在可控条件下才具备统计意义,如果APIKey被拿去在其他地方部署不经过代理,请求记录无法被捕获。
- 安全风险,key信息保存在日志和数据库中时,有泄露的风险。
- 用量计量不精准, 只能大概统计到使用频率。只有
用户
->GPT
单向请求(用户输入的信息量),但AI返回的信息量长度没有记录。
具体实现:
(还没写)
流水账,以下步骤均在 chatGPT指导下完成
- 修改 nginx.conf 的 log_format 添加 header http authorization 信息
- 启用 logrotate 服务对日志文件定期进行分卷(不然日志太大很难进行分析)
- python脚本对分卷归档的日志文件做扫描分析,统计用量写入mysql
- cronjob 定时执行python脚本(在logrorate 每次执行后)
