ELIA / user_study /scripts /check_usage.py
aaron0eidt's picture
Deploy static demo
5b6c556
import requests
import json
# API Configuration
API_CONFIG = {
"api_key": "6e3def45d61b0b20547a1fcbab6464d8",
"api_endpoint": "https://chat-ai.academiccloud.de/v1",
"model": "qwen2.5-vl-72b-instruct"
}
def check_usage():
# Checks the current API usage by making a single call and checking the headers.
headers = {
"Authorization": f"Bearer {API_CONFIG['api_key']}",
"Content-Type": "application/json"
}
data = {
"model": API_CONFIG["model"],
"messages": [{"role": "user", "content": "Hello"}],
"max_tokens": 10,
"temperature": 0.1
}
try:
response = requests.post(
f"{API_CONFIG['api_endpoint']}/chat/completions",
headers=headers,
json=data,
timeout=30
)
print("=== API Usage Statistics ===")
print(f"Status Code: {response.status_code}")
print()
# Extract rate limit information from the headers.
rate_limit_info = {}
for header, value in response.headers.items():
if 'ratelimit' in header.lower():
rate_limit_info[header] = value
if rate_limit_info:
print("Rate Limit Information:")
for header, value in rate_limit_info.items():
print(f" {header}: {value}")
print()
# Calculate and display usage percentages.
if 'X-RateLimit-Limit-Month' in rate_limit_info and 'X-RateLimit-Remaining-Month' in rate_limit_info:
monthly_limit = int(rate_limit_info['X-RateLimit-Limit-Month'])
monthly_remaining = int(rate_limit_info['X-RateLimit-Remaining-Month'])
monthly_used = monthly_limit - monthly_remaining
monthly_percentage = (monthly_used / monthly_limit) * 100
print(f"Monthly Usage:")
print(f" Used: {monthly_used:,} requests")
print(f" Remaining: {monthly_remaining:,} requests")
print(f" Total Limit: {monthly_limit:,} requests")
print(f" Usage: {monthly_percentage:.1f}%")
if 'X-RateLimit-Limit-Day' in rate_limit_info and 'X-RateLimit-Remaining-Day' in rate_limit_info:
daily_limit = int(rate_limit_info['X-RateLimit-Limit-Day'])
daily_remaining = int(rate_limit_info['X-RateLimit-Remaining-Day'])
daily_used = daily_limit - daily_remaining
daily_percentage = (daily_used / daily_limit) * 100
print(f"\nDaily Usage:")
print(f" Used: {daily_used:,} requests")
print(f" Remaining: {daily_remaining:,} requests")
print(f" Total Limit: {daily_limit:,} requests")
print(f" Usage: {daily_percentage:.1f}%")
if 'X-RateLimit-Limit-Hour' in rate_limit_info and 'X-RateLimit-Remaining-Hour' in rate_limit_info:
hourly_limit = int(rate_limit_info['X-RateLimit-Limit-Hour'])
hourly_remaining = int(rate_limit_info['X-RateLimit-Remaining-Hour'])
hourly_used = hourly_limit - hourly_remaining
hourly_percentage = (hourly_used / hourly_limit) * 100
print(f"\nHourly Usage:")
print(f" Used: {hourly_used:,} requests")
print(f" Remaining: {hourly_remaining:,} requests")
print(f" Total Limit: {hourly_limit:,} requests")
print(f" Usage: {hourly_percentage:.1f}%")
if hourly_remaining == 0:
reset_time = response.headers.get('RateLimit-Reset', 'Unknown')
print(f" Reset in: {reset_time} seconds")
if response.status_code == 429:
print(f"\n⚠️ Rate limit exceeded!")
print(f"Error: {response.text}")
elif response.status_code == 200:
print(f"\n✅ API call successful")
else:
print(f"\n❌ API call failed with status {response.status_code}")
print(f"Error: {response.text}")
except Exception as e:
print(f"Exception: {e}")
if __name__ == "__main__":
check_usage()