Spaces:
Sleeping
Sleeping
| 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() |