ParthSadaria commited on
Commit
67a227e
·
verified ·
1 Parent(s): 7a2a99d

Create usage_tracker.py

Browse files
Files changed (1) hide show
  1. usage_tracker.py +98 -0
usage_tracker.py ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #bruh just used to check the usage -_-
2
+ import os
3
+ import json
4
+ from datetime import datetime, timedelta
5
+
6
+ class UsageTracker:
7
+ def __init__(self, filename='usage_data.json'):
8
+ self.filename = filename
9
+ self.usage_data = self.load_usage_data()
10
+
11
+ def load_usage_data(self):
12
+ """Load existing usage data from file or create a new structure"""
13
+ try:
14
+ if os.path.exists(self.filename):
15
+ with open(self.filename, 'r') as f:
16
+ return json.load(f)
17
+ except (json.JSONDecodeError, FileNotFoundError):
18
+ pass
19
+
20
+ # Initialize usage data structure
21
+ return {
22
+ "total_requests": 0,
23
+ "models": {},
24
+ "daily_usage": {},
25
+ "api_endpoints": {}
26
+ }
27
+
28
+ def record_request(self, model=None, endpoint=None):
29
+ """Record a request for a specific model and/or endpoint"""
30
+ # Get current date
31
+ today = datetime.now().strftime("%Y-%m-%d")
32
+
33
+ # Update total requests
34
+ self.usage_data["total_requests"] += 1
35
+
36
+ # Track model if provided
37
+ if model:
38
+ if model not in self.usage_data["models"]:
39
+ self.usage_data["models"][model] = {
40
+ "total_requests": 0,
41
+ "first_used": datetime.now().isoformat(),
42
+ "last_used": datetime.now().isoformat()
43
+ }
44
+
45
+ model_data = self.usage_data["models"][model]
46
+ model_data["total_requests"] += 1
47
+ model_data["last_used"] = datetime.now().isoformat()
48
+
49
+ # Track endpoint if provided
50
+ if endpoint:
51
+ if endpoint not in self.usage_data["api_endpoints"]:
52
+ self.usage_data["api_endpoints"][endpoint] = {
53
+ "total_requests": 0,
54
+ "first_used": datetime.now().isoformat(),
55
+ "last_used": datetime.now().isoformat()
56
+ }
57
+
58
+ endpoint_data = self.usage_data["api_endpoints"][endpoint]
59
+ endpoint_data["total_requests"] += 1
60
+ endpoint_data["last_used"] = datetime.now().isoformat()
61
+
62
+ # Update daily usage
63
+ if today not in self.usage_data["daily_usage"]:
64
+ self.usage_data["daily_usage"][today] = {}
65
+
66
+ # Track daily usage for model
67
+ if model:
68
+ if model not in self.usage_data["daily_usage"][today]:
69
+ self.usage_data["daily_usage"][today][model] = 0
70
+ self.usage_data["daily_usage"][today][model] += 1
71
+
72
+ # Track daily usage for endpoint
73
+ if endpoint:
74
+ if endpoint not in self.usage_data["daily_usage"][today]:
75
+ self.usage_data["daily_usage"][today][endpoint] = 0
76
+ self.usage_data["daily_usage"][today][endpoint] += 1
77
+
78
+ # Save updated usage data
79
+ self.save_usage_data()
80
+
81
+ def save_usage_data(self):
82
+ """Save usage data to file"""
83
+ try:
84
+ with open(self.filename, 'w') as f:
85
+ json.dump(self.usage_data, f, indent=4)
86
+ except Exception as e:
87
+ print(f"Error saving usage data: {e}")
88
+
89
+ def get_usage_summary(self, days=7):
90
+ """Get usage summary for the last specified number of days"""
91
+ # Calculate the date threshold
92
+ threshold_date = (datetime.now() - timedelta(days=days)).strftime("%Y-%m-%d")
93
+
94
+ # Prepare summary
95
+ summary = {
96
+ "total_requests": self.usage_data["total_requests"],
97
+ "models": self.usage_data["models"],
98
+ "api_endpoints": self