Spaces:
Sleeping
Sleeping
File size: 4,366 Bytes
5b6c556 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
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() |