Closed Ace-Radom closed 1 year ago
也就是说 目前需要两个api来实现这个功能
https://api.openai.com/dashboard/billing/subscription
https://api.openai.com/dashboard/billing/usage
subscription接口的回复如上 只需要指定key即可 其中的 hard_limit_usd
就是该key的总额度 单位为美元
而usage接口的使用则复杂一些
在调用usage接口时需要指定 start_date
和 end_date
格式为 yyyy-mm-dd
该接口会返回这段时间内的 total_usage
单位为美分
需要注意的是:
调用usage接口时指定的起始日期和结束日期之间的时间差不能超过一百天 这意味着没有办法直接通过一次访问就获得整的使用量 需要用循环依次获取然后累加
usage接口必须使用get请求 post请求会报错
那么比较稳定的解决方法就是一次get三个月 从一个时间点起始然后循环到现在 然后把所有的 total_usage
累加起来 然后 hard_limit_usd
减去这个总和 剩下的就是账户余额
方法大概就是这样 我明天下午去尝试实现一下然后PR
但问题其实还是有的 我没有搞懂 soft_limit_usd
hard_limit_usd
和 system_hard_limit_usd
之间的区别 只是看那个repo里用的 hard_limit_usd
而且确实也没错所以……总之我会再研究一下
也不知道这个方法还能活多久……OpenAI貌似不想让人从外部获得这些数据
其实我有一种猜测 老的credit_grants接口被封锁的原因有可能是因为这个接口的回复里有一个id 然后这个id泄露可能会有什么问题 毕竟如果OpenAI只想让用户从浏览器内部获得账户数据没理由不把整个 /dashboard/billing
给封掉 但他们没有这么做【至少目前没有】而且目前调用的两个接口也确实不会回复这个id 当然也就是一个猜测罢了也可能只是那帮子人真的忘了
另外有一点就是usage接口的回复是真的相当之详细 感觉 /usage
命令的功能可以扩充很多很多 但这些毕竟是次要的所以放在第二位实现 主要还是恢复原本 /usage
的功能
Done
repo: LaoYutang/openai-balance
这是一个用go写的程序 已经个人测试可行
最近查到的资料也基本表示这可能是目前唯一可行的方法 我在尝试怎么把这一套移植到python里 估计要一两天时间【go懂的不多】