| """ | |
| Deepseek API相关功能模块 - 提供Deepseek API的调用和验证功能 | |
| """ | |
| import requests | |
| def validate_api_key(api_key): | |
| """ | |
| 验证Deepseek API密钥是否有效并获取账户余额 | |
| Args: | |
| api_key (str): 需要验证的Deepseek API密钥 | |
| Returns: | |
| dict: 包含验证结果的字典,包括: | |
| - success (bool): API密钥验证成功为True,失败为False | |
| - return_message (str): 验证响应的具体消息,成功时为"200: Success!",失败时为错误详情 | |
| - balance (float): 账户余额,成功时为账户总余额,失败时为0 | |
| - states (str): 账户状态 | |
| """ | |
| url = "https://api.deepseek.com/v1/user/balance" | |
| headers = { | |
| "Authorization": f"Bearer {api_key}" | |
| } | |
| try: | |
| response = requests.get(url, headers=headers) | |
| if response.status_code == 200: | |
| response_data = response.json() | |
| is_available = response_data.get("is_available", False) | |
| if not is_available: | |
| return { | |
| "success": False, | |
| "return_message": "429: Insufficient balance", | |
| "balance": 0, | |
| "states": "" | |
| } | |
| balance_infos = response_data.get("balance_infos", []) | |
| balance = 0.0 | |
| try: | |
| exchange_rate_response = requests.get("https://api.exchangerate-api.com/v4/latest/USD") | |
| exchange_rate_response.raise_for_status() | |
| exchange_rate_data = exchange_rate_response.json() | |
| exchange_rate = exchange_rate_data.get("rates", {}).get("CNY") | |
| if exchange_rate is None: | |
| exchange_rate = 7.2 | |
| except Exception as e: | |
| exchange_rate = 7.2 | |
| has_cny = False | |
| has_usd = False | |
| for balance_info in balance_infos: | |
| currency = balance_info.get("currency") | |
| total_balance = float(balance_info.get("total_balance", 0)) | |
| if currency == "CNY": | |
| balance += total_balance | |
| if total_balance > 0: | |
| has_cny = True | |
| elif currency == "USD": | |
| balance += total_balance * exchange_rate | |
| if total_balance > 0: | |
| has_usd = True | |
| states = "" | |
| if has_cny and has_usd: | |
| states = "CNY/USD" | |
| elif has_cny: | |
| states = "CNY" | |
| elif has_usd: | |
| states = "USD" | |
| return { | |
| "success": True, | |
| "return_message": "200: Success!", | |
| "balance": balance, | |
| "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": "" | |
| } |