| """ | |
| OpenAI API相关功能模块 - 提供OpenAI API的调用和验证功能 | |
| """ | |
| import requests | |
| def validate_api_key(api_key): | |
| """ | |
| 验证OpenAI API密钥是否有效 | |
| Args: | |
| api_key (str): 需要验证的OpenAI API密钥 | |
| Returns: | |
| dict: 包含验证结果的字典,包括: | |
| - success (bool): API密钥验证成功为True,失败为False | |
| - return_message (str): 验证响应的具体消息,成功时为"200: Success!",失败时为错误详情 | |
| - balance (float): 账户余额,固定为0 | |
| - states (str): 账户状态,对应的Tier等级 | |
| """ | |
| url = "https://api.openai.com/v1/chat/completions" | |
| headers = { | |
| "Authorization": f"Bearer {api_key}", | |
| "Content-Type": "application/json" | |
| } | |
| payload = { | |
| "model": "gpt-4o", | |
| "max_tokens": 1, | |
| "messages": [ | |
| {"role": "user", "content": "Hello"} | |
| ] | |
| } | |
| try: | |
| response = requests.post(url, headers=headers, json=payload) | |
| if response.status_code == 200: | |
| states = "" | |
| rateLimit = response.headers.get("x-ratelimit-limit-tokens") | |
| if rateLimit: | |
| tokens = int(rateLimit) | |
| if tokens == 30000: | |
| states = "Tier1" | |
| elif tokens == 450000: | |
| states = "Tier2" | |
| elif tokens == 800000: | |
| states = "Tier3" | |
| elif tokens == 2000000: | |
| states = "Tier4" | |
| elif tokens == 150000000: | |
| states = "Tier5" | |
| else: | |
| states = "Unknown" | |
| return { | |
| "success": True, | |
| "return_message": "200: Success!", | |
| "balance": 0, | |
| "states": states | |
| } | |
| else: | |
| return_message = "" | |
| try: | |
| error_data = response.json() | |
| if "error" in error_data: | |
| return_message = error_data["error"].get("message", "") | |
| return_message = f"{response.status_code}: {return_message}" | |
| except: | |
| return_message = f"{response.status_code}: {response.text or f'HTTP错误'}" | |
| return { | |
| "success": False, | |
| "return_message": return_message, | |
| "balance": 0, | |
| "states": "" | |
| } | |
| except Exception as e: | |
| error_str = str(e) | |
| print(f"验证API密钥时出错: {error_str}") | |
| return { | |
| "success": False, | |
| "return_message": f"500: 请求异常: {error_str}", | |
| "balance": 0, | |
| "states": "" | |
| } |