File size: 3,976 Bytes
5ad3e05 |
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 105 106 107 108 109 110 |
"""
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": ""
} |