czty's picture
Add files using upload-large-folder tool
b2c86fd verified
Raw
History Blame Contribute Delete
2.55 kB
import os, json, datetime, urllib.request, urllib.error
key = os.getenv("ANTHROPIC_API_KEY", "").strip()
if not key:
print("❌ 未设置 ANTHROPIC_API_KEY")
raise SystemExit(1)
print("✅ KEY已设置:", key[:8] + "..." + key[-4:])
headers = {
"x-api-key": key,
"anthropic-version": "2023-06-01",
"content-type": "application/json",
}
# 1) 验证 key 可用
msg_payload = {
"model": "claude-opus-4-7",
"max_tokens": 8,
"messages": [{"role": "user", "content": "ping"}]
}
req = urllib.request.Request(
"https://api.anthropic.com/v1/messages",
data=json.dumps(msg_payload).encode(),
headers=headers,
method="POST",
)
try:
with urllib.request.urlopen(req, timeout=30) as r:
body = json.loads(r.read().decode())
print("✅ messages 接口可用")
print("usage:", body.get("usage", {}))
except urllib.error.HTTPError as e:
print("❌ messages 接口失败:", e.code, e.read().decode(errors="ignore")[:500])
# 2) 查询最近7天花费(组织管理员 key 才可能成功)
end = datetime.date.today()
start = end - datetime.timedelta(days=7)
cost_payload = {
"starting_at": f"{start.isoformat()}T00:00:00Z",
"ending_at": f"{end.isoformat()}T23:59:59Z",
"bucket_width": "1d"
}
req2 = urllib.request.Request(
"https://api.anthropic.com/v1/organizations/cost_report",
data=json.dumps(cost_payload).encode(),
headers=headers,
method="POST",
)
try:
with urllib.request.urlopen(req2, timeout=30) as r:
body = json.loads(r.read().decode())
print("✅ cost_report 返回成功")
print(json.dumps(body, ensure_ascii=False)[:2000])
except urllib.error.HTTPError as e:
print("ℹ️ cost_report 不可用(常见于非管理员key):", e.code, e.read().decode(errors="ignore")[:500])
# 3) 查询可用模型列表
models_req = urllib.request.Request(
"https://api.anthropic.com/v1/models",
headers=headers,
method="GET",
)
try:
with urllib.request.urlopen(models_req, timeout=30) as r:
body = json.loads(r.read().decode())
models = body.get("data", [])
print(f"✅ models 接口可用,共 {len(models)} 个模型")
for m in models[:20]:
model_id = m.get("id", "")
display_name = m.get("display_name", "")
created_at = m.get("created_at", "")
print(f"- {model_id} | {display_name} | {created_at}")
except urllib.error.HTTPError as e:
print("❌ models 接口失败:", e.code, e.read().decode(errors="ignore")[:500])