OpenAI提供了billing相关的接口,用api key 查询账号的用量和额度。但统计数据是针对账号而不是key的,因此当一个账号有多个keys 的情况下无法分辨每个key用量的多少。这是定论,也是openai论坛呼声很高的一个需求。

How to track API usage and cost by API key?

既然有需求在,那么来解决一下。说下我的思路

我需要把API分开给不同的应用或者分享给不同的人,我需要知道他们分别的使用情况,有没有被滥用或闲置。

思路

  1. 搭建 Nginx反代,让所有的API请求经过这台代理。
  2. 通过 Nginx的访问日志捕获所有的请求,包括 key信息
  3. 对日志进行分析统计,统计key的请求数量和发送的信息量

额外地,还需要工具对apikey批量查询用量,这里用别人现成的

https://github.com/ClarenceDan/openai-billing

已知缺点和风险

  1. 需要在可控条件下才具备统计意义,如果APIKey被拿去在其他地方部署不经过代理,请求记录无法被捕获。
  2. 安全风险,key信息保存在日志和数据库中时,有泄露的风险。
  3. 用量计量不精准, 只能大概统计到使用频率。只有 用户->GPT单向请求(用户输入的信息量),但AI返回的信息量长度没有记录。

具体实现:

(还没写)

流水账,以下步骤均在 chatGPT指导下完成

  • 修改 nginx.conf 的 log_format 添加 header http authorization 信息
  • 启用 logrotate 服务对日志文件定期进行分卷(不然日志太大很难进行分析)
  • python脚本对分卷归档的日志文件做扫描分析,统计用量写入mysql
  • cronjob 定时执行python脚本(在logrorate 每次执行后)

没打算吹彩虹屁,吹嘘神乎其神的软广网上已经够多了。
有的人感兴趣或有潜在需求,但目前接触GPT仍然不易且让人迷惑,因此回答几个常见的问题。

还有一些问题我不打算回答,懂的都懂。

gpt20230529231242.png


- 阅读剩余部分 -

cnode 最近发布了 8.0.0 版本的更新,虽然是一个 mainnet release ,但没有打算那么早更新。只是打算作为提早了解的心态找个本地节点进行了尝试,没想到陷进去一整个晚上搞到焦头烂额。从下午一直反复试错,到现在得出结果已经是凌晨 1:26。淦!

主要发现的问题是cntools无法正常使用,表现在所有的wallet显示余额为0,无法对资金进行任何的操作。

按惯例先说结论

由于一个cntools的历史升级,改了查询余额的方式,改用了远程的API,而好死不死这个API因为某些原因在本地不好使。导致所有的资金操作卡死,因为任何的tx操作需要支付fee,余额0会直接导致失败。
提示

ERROR: payment and/or stake signing keys missing from wallet!

解决办法,根据官方的文档恢复旧方式查询(命令行查询 UTxOs 或使用本地部署那个远程API, 不去调用远端的API)


- 阅读剩余部分 -

其中一个relay节点,配置最低的一台。最近两个月不时掉线。掉线之后cnode进城自动重启后会清空 $CNODE/db/immutable/ 目录把整个区块链进行重新同步。
在同步过程耗费巨量时间之后可能在中途再度发生写入错误或者分叉,导致出错。周而复始又清空重新同步导致节点一直无法完成启动。而且持续大量写入SSD, 对硬件寿命和稳定性都造成严重的影响。

*先说结论,问题是否得到彻底解决未知,仍在观察中。具体操作直接跳到最后一段。

以下是这两个月来采取过的几个措施,收效一般。


- 阅读剩余部分 -