pre / core /api /anthropic.py
yangtb24's picture
Upload 53 files
5ad3e05 verified
"""
Anthropic API相关功能模块 - 提供Anthropic Claude API的调用和验证功能
"""
import requests
def validate_api_key(api_key):
"""
验证Anthropic API密钥是否有效
Args:
api_key (str): 需要验证的Anthropic API密钥
Returns:
dict: 包含验证结果的字典,包括:
- success (bool): API密钥验证成功为True,失败为False
- return_message (str): 验证响应的具体消息,成功时为"200: Success!",失败时为错误详情
- balance (float): 账户余额,固定为0
- states (str): 账户状态,付费版或免费版
"""
url = "https://api.anthropic.com/v1/messages"
headers = {
"x-api-key": api_key,
"content-type": "application/json",
"anthropic-version": "2023-06-01"
}
payload = {
"model": "claude-3-5-sonnet-20241022",
"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("anthropic-ratelimit-input-tokens-limit")
if rateLimit:
tokens = int(rateLimit)
if tokens == 40000:
states = "Tier1"
elif tokens == 80000:
states = "Tier2"
elif tokens == 160000:
states = "Tier3"
elif tokens == 400000:
states = "Tier4"
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": ""
}