用 Python 实现 OpenAI 余额查询功能

2023-10-27

大家开发完 OpenAI 的产品后经常需要关注费用情况,也有很多网站支持输入 api_key 查询余额
但是,你真的敢用么?

这里教大家自己用 python 写一段查询 openai key 的代码,如下:

import datetime

# 用您的 API 密钥替换以下字符串
import requests
import settings

subscription_url = "https://api.openai.com/v1/dashboard/billing/subscription"

def getUsage(apikey):
    headers = {
        "Authorization": "Bearer " + apikey,
        "Content-Type": "application/json"
    }
    subscription_response = requests.get(subscription_url, headers=headers)
    if subscription_response.status_code == 200:
        data = subscription_response.json()
        total = data.get("hard_limit_usd")
    else:
        return subscription_response.text

    # start_date设置为今天日期前99天
    start_date = (datetime.datetime.now() - datetime.timedelta(days=99)).strftime("%Y-%m-%d")
    # end_date设置为今天日期+1
    end_date = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime("%Y-%m-%d")
    billing_url = f"https://api.openai.com/v1/dashboard/billing/usage?start_date={start_date}&end_date={end_date}"
    billing_response = requests.get(billing_url, headers=headers)
    if billing_response.status_code == 200:
        data = billing_response.json()
        total_usage = data.get("total_usage") / 100
        daily_costs = data.get("daily_costs")
        days = min(5, len(daily_costs))
        recent = f"最近{days}天使用情况  \n"
        for i in range(days):
            cur = daily_costs[-i-1]
            date = datetime.datetime.fromtimestamp(cur.get("timestamp")).strftime("%Y-%m-%d")
            line_items = cur.get("line_items")
            cost = 0
            for item in line_items:
                cost += item.get("cost")
            recent += f"\t{date}\t{cost / 100} \n"
    else:
        return billing_response.text

    return f"\n总额:\t{total:.4f}  \n" \
                f"已用:\t{total_usage:.4f}  \n" \
                f"剩余:\t{total-total_usage:.4f}  \n" \
                f"\n"+recent


print(getUsage(settings.Config.chat_gpt_key))

查询效果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 Python 实现 OpenAI 余额查询功能 的相关文章

随机推荐

  • getLocation:fail Coordinate address resolution failed -1501

    这表示在获取位置信息时出现错误 具体原因可能是坐标地址解析失败 错误代码 1501 表示这种情况 你可以尝试重新请求位置信息 或者检查你的设备是否能够访问位置信息 例如 确保位置服务已打开
  • java swing实现文件浏览器功能小程序

    闲来无事学习了一下java的桌面应用开发组件Swing 做了个小程序 文件浏览器 只能查看信息不能进行过多操作 文件功能 查看指定文件路径下的所有文件夹和文件 可查看文件夹和文件的详细信息 切换不同排列方式等 基本逻辑 设置列表布局 添加数
  • Android 13 - Media框架(3)- MediaPlayer生命周期

    上一节了解了MediaPlayer api的使用 这一节就我们将会了解MediaPlayer的生命周期与api使用细节 1 MediaPlayer生命周期 MediaPlayer java 一开始有对生命周期的描述 这里对这些内容进行翻译
  • 服务器e4系列,Intel Xeon E系列服务器处理器

    一 Intel Xeon E系列CPU 命名规则 首先 Intel E3 E5 E7代表了3个不同档次的至强CPU 这种命名方式类似桌面上的Core i3 i5 i7 分别对应好 更好 最好 其次 以E3 1220为例 E3 1220中的这
  • RAR Extractor Mac:可以提取所有大多数格式的压缩文件

    RAR Extractor是mac上的解压缩软件 可以提取所有大多数格式 超过50种格式 的压缩文件 支持RAR winmAIl dat ZIP 7z tbz sti tar xar lha lzh hqx bin bz2 bzip2 bz
  • 保存登录的用户名

    自动测试服务器中用到用户的登录问题 在servlet中写上 String username request getParameter username 创建一个session对象 HttpSession session request ge
  • java 新手入门电子书_java从入门到精通第6版电子书 PDF高清版

    java从入门到精通第6版电子书 PDF高清版由软吧下载编辑精心整理 java从入门到精通第6版pdf是在之前的版本上更加详细的书籍 对于想要快速了解java的的话 欢迎下载java从入门到精通第6版pdf哦 欢迎下载使用 如果您觉得本站还
  • Java 初始化 List 的几种方法

    最常见的初始化 List 方法为 List
  • Flink,HDFS,YARN,Zookeeper之中的概念

    无论如何都要看一手资料 能看官方文档就不要看别的博客 有些地方很误导人 Hadoop内部子项目 HDFS YARN都是内部集成的 Hadoop Common The common utilities that support the oth
  • Java线程池中的线程发生OOM会如何?

    环境 JDK1 8 线程池中如果发生OOM后会如何 线程池ThreadPoolExecutor当有线程发生了OOM 线程池会停止工作吗 public static void main String args ThreadPoolExecut
  • React中组件间过渡动画如何实现?

    一 是什么 在日常开发中 页面切换时的转场动画是比较基础的一个场景 当一个组件在显示与消失过程中存在过渡动画 可以很好的增加用户的体验 在react中实现过渡动画效果会有很多种选择 如react transition group react
  • 已解决:ORA-01114(临时表满了)

    记录 ORA 01114 将块写入文件 201 时出现 IO 错误 解决方法 创建一个中转的临时表空间TEMP2重新建立临时表TEMP 1 查询该用户下的默认临时表空间 SQL gt SELECT bytes 1024 1024 1024
  • 【面试系列】划分字母区间

    题意 原题链接 思路 由于每个字母只能被划分在一个区间内 所以我们可以考虑这个字母的区间范围 这样就得到了至多 26 26 26个字母的区间范围 所以有区间范围重叠的字母必须都被分到一个区间内 因此这个问题就转换为合并区间问题 排序后贪心合
  • 从零开始构建SSD网络实现目标识别项目

    前言 由于此项目全过程过于繁杂 我前后做了三四个月 无法把所有内容融入这一篇文章之中 所以本文以逻辑串联为主 记录了我从零开始 构建vgg 300网络 gt 构建 SSD模型 gt 数据标注 gt 训练以及训练模型保存 gt 恢复模型进行预
  • 衡量基因相对表达量的RPKM、FPKM、TPM详解

    衡量基因相对表达量的RPKM和FPKM 及TPM 1 RPKM Reads Per Kilobase per Million 和FPKM Fragments Per Kilobase per Million 1 引入 每一千碱基 per k
  • 编写一个程序,求出200到300之间的数,且满足条件:它们三个数字之积为42,三个数字之和为12...

    定义变量ge shi bai 用于存放个位 十位 百位上的数字 int number 0 使用for循环 for number 200 number lt 300 number 取出百位数 int bai number 100 取出十位数
  • http 接口测试、 压力并发测试、自动化化测试

    Postman 可以在开发中用来调试验证http接口的正确性 JMeter 可以设置并发线程数进行Http接口的压力测试 RobotFramework 可以带逻辑的实现多个接口的自动化测试 RobotFramework入门 一 简要介绍及使
  • QQueue使用介绍

    QT的队列是类QQueue 它的原理其实就只是一个QList的结构 在继承QListj基础上封装了几个函数 template
  • MATLAB-深度网络设计器

    一 操作步骤 1 打开APP中的深度网络设计器 2 点击建立空白网络 3 根据图像数据的具体情况建立神经网络 本文以2为图像数据为例 4 调整分类数 本文演示2分类 5 导入数据 本文演示的数据为 123 文件夹下A B两类图片数据 6 训
  • 用 Python 实现 OpenAI 余额查询功能

    大家开发完 OpenAI 的产品后经常需要关注费用情况 也有很多网站支持输入 api key 查询余额 但是 你真的敢用么 这里教大家自己用 python 写一段查询 openai key 的代码 如下 import datetime 用您