startrz commited on
Commit
da04961
·
verified ·
1 Parent(s): 4f92dbe

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -0
app.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import openai
3
+ import pandas as pd
4
+ import datetime
5
+
6
+ # Initialize Streamlit app
7
+ st.set_page_config(page_title="OpenAI Usage Dashboard", layout="centered")
8
+
9
+ # Set up OpenAI API key
10
+ st.sidebar.title("OpenAI API Usage Dashboard")
11
+ api_key = st.sidebar.text_input("Enter your OpenAI API Key:", type="password")
12
+ openai.api_key = api_key
13
+
14
+ # Title and description
15
+ st.title("OpenAI Usage Tracker")
16
+ st.write("This app retrieves and displays your OpenAI API usage data for a specified date range.")
17
+
18
+ # Date selection
19
+ start_date = st.sidebar.date_input("Select Start Date:", datetime.date.today() - datetime.timedelta(days=30))
20
+ end_date = st.sidebar.date_input("Select End Date:", datetime.date.today())
21
+
22
+ # Ensure end date is not before start date
23
+ if start_date > end_date:
24
+ st.error("End Date must be after Start Date")
25
+
26
+ # Function to retrieve usage data
27
+ def get_usage_data(api_key, start_date, end_date):
28
+ try:
29
+ openai.api_key = api_key
30
+ usage = openai.api_usage.get(start_date=start_date, end_date=end_date)
31
+ usage_data = usage['data']
32
+ # Create a DataFrame from the usage data
33
+ data = pd.DataFrame(usage_data)
34
+ data['date'] = pd.to_datetime(data['date'])
35
+ data.set_index('date', inplace=True)
36
+ return data[['n_tokens_total']]
37
+ except Exception as e:
38
+ st.error(f"An error occurred: {e}")
39
+ return None
40
+
41
+ # Retrieve and display usage data if API key is provided
42
+ if api_key:
43
+ usage_data = get_usage_data(api_key, start_date.strftime("%Y-%m-%d"), end_date.strftime("%Y-%m-%d"))
44
+
45
+ # Display usage data as a table and line chart
46
+ if usage_data is not None:
47
+ st.subheader("Usage Data")
48
+ st.write("Displaying usage from", start_date, "to", end_date)
49
+ st.dataframe(usage_data)
50
+
51
+ # Display line chart for usage over time
52
+ st.subheader("Token Usage Over Time")
53
+ st.line_chart(usage_data['n_tokens_total'])
54
+
55
+ # Display statistics
56
+ total_usage = usage_data['n_tokens_total'].sum()
57
+ avg_usage = usage_data['n_tokens_total'].mean()
58
+ st.subheader("Statistics")
59
+ st.write(f"Total Token Usage: {total_usage}")
60
+ st.write(f"Average Daily Token Usage: {avg_usage:.2f}")
61
+ else:
62
+ st.info("Enter your API key to view usage data.")
63
+ else:
64
+ st.warning("Please enter your OpenAI API key to proceed.")