本文介绍了一个用于查询 OpenAI 计费信息的应用程序。通过输入 OpenAI API Key,用户可以查询订阅信息、计费使用情况以及最近几天的消费详情。该应用帮助用户了解其使用 OpenAI 服务的费用情况,以便进行成本控制和预算规划。
技术概述本应用使用了以下主要技术和框架:
python:应用的开发语言。Streamlit:用于构建用户界面和交互的开源库。Requests:用于发送 HTTP 请求并处理响应的库。架构设计该应用采用简单的前后端分离架构:
前端:使用 Streamlit 框架构建用户界面,包括输入 OpenAI API Key 和显示查询结果。后端:通过使用 Requests 库发送 HTTP 请求,与 OpenAI API 进行通信并获取计费信息。开发环境搭建要搭建该应用的开发环境,按照以下步骤进行操作:
安装 Python:确保已经安装了 Python。安装依赖库:在命令行中运行以下命令安装所需的依赖库:pip install streamlitpip install requests核心功能实现
以下是应用的核心功能及相应的代码示例:
import streamlit as stimport requestsimport datetimest.title("OpenAI 计费信息查询")# 输入API Keyapikey = st.text_input("请输入您的OpenAI API Key:")# 点击查询按钮if st.button("查询"): # 设置请求头 headers = {"Authorization": "Bearer " apikey, "Content-Type": "application/json"} # 请求订阅信息 subscription_url = "https://api.openai.com/v1/dashboard/billing/subscription" 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: st.error(subscription_response.text) st.stop() # 设置查询日期范围 start_date = (datetime.datetime.now() - datetime.timedelta(days=99)).strftime( "%Y-%m-%d" ) 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: st.error(billing_response.text) st.stop()
# 显示查询结果st.write( f"n总额:t{total:.4f} n" f"已用:t{total_usage:.4f} n" f"剩余:t{total-total_usage:.4f} n" f"n" recent)
## 代码解析以下是关键代码的解析和说明:```pythonimport streamlit as stimport requestsimport datetime
导入所需的库。
st.title("OpenAI 计费信息查询")
使用 Streamlit 库设置应用的标题。
apikey = st.text_input("请输入您的OpenAI API Key:")
通过 Streamlit 库获取用户输入的 OpenAI API Key。
if st.button("查询"): # 设置请求头 headers = {"Authorization": "Bearer " apikey, "Content-Type": "application/json"} # 请求订阅信息 subscription_url = "https://api.openai.com/v1/dashboard/billing/subscription" 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: st.error(subscription_response.text) st.stop()
当用户点击查询按钮时,发送 HTTP 请求获取订阅信息,并根据响应状态码判断请求是否成功。
start_date = (datetime.datetime.now() - datetime.timedelta(days=99)).strftime( "%Y-%m-%d" ) 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: st.error(billing_response.text) st.stop()
复制代码发送 HTTP 请求获取计费信息,并根据响应状态码判断请求是否成功。如果成功,从响应数据中提取总使用量、每日费用等信息,并生成最近几天的使用情况的字符串。```pythonst.write( f"n总额:t{total:.4f} n" f"已用:t{total_usage:.4f} n" f"剩余:t{total-total_usage:.4f} n" f"n" recent )
使用 Streamlit 库将查询结果显示在应用界面上。
测试和部署要进行应用的测试和部署,可以按照以下步骤进行操作:
在开发环境中运行应用代码,确保应用能够正常运行并查询到正确的计费信息。部署应用到目标环境,例如服务器或云平台。配置环境变量,包括 OpenAI API Key 和其他必要的配置信息。启动应用服务,并确保服务正常运行。使用浏览器或其他 HTTP 客户端工具访问部署的应用,验证查询功能和结果的准确性。总结和展望本文介绍了一个用于查询 OpenAI 计费信息的应用。通过该应用,用户可以方便地获取其使用 OpenAI 服务的费用情况。应用使用了 Python、Streamlit 和 Requests 等技术和框架,实现了前后端分离的架构。
未来,可以进一步改进和扩展该应用,例如添加用户身份验证、生成费用报表、设置费用预警等功能,以满足更多用户的需求。同时,可以考虑优化代码结构和性能,提升应用的稳定性和响应速度。
相关文章
猜你喜欢