liurenchaxin/tests/test_custom_api.py

117 lines
4.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
测试LiteLLM自定义API端点
"""
import requests
import json
import os
def test_litellm_api():
"""测试LiteLLM API端点"""
api_url = "http://master.tailnet-68f9.ts.net:40012"
print(f"🔍 测试LiteLLM API端点: {api_url}")
# 获取用户的API密钥
gemini_key = os.getenv('GEMINI_API_KEY', '')
# 尝试不同的API密钥格式
test_keys = [
f"sk-{gemini_key}", # 添加sk-前缀
gemini_key, # 原始密钥
"sk-test", # 测试密钥
"test-key", # 简单测试
]
for api_key in test_keys:
if not api_key or api_key == "sk-":
continue
print(f"\n🔑 测试API密钥: {api_key[:10]}...")
# 测试模型列表
try:
headers = {"x-litellm-api-key": api_key}
response = requests.get(f"{api_url}/v1/models", headers=headers, timeout=10)
print(f"模型列表状态码: {response.status_code}")
if response.status_code == 200:
models = response.json()
print(f"✅ 找到 {len(models.get('data', []))} 个可用模型")
for model in models.get('data', [])[:3]: # 显示前3个模型
print(f" - {model.get('id', 'unknown')}")
# 测试聊天完成
test_payload = {
"model": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "Hello, this is a test message. Please respond briefly."}
],
"max_tokens": 50
}
chat_response = requests.post(
f"{api_url}/v1/chat/completions",
json=test_payload,
headers=headers,
timeout=30
)
print(f"聊天完成状态码: {chat_response.status_code}")
if chat_response.status_code == 200:
result = chat_response.json()
content = result.get('choices', [{}])[0].get('message', {}).get('content', '')
print(f"✅ API测试成功响应: {content[:100]}...")
print(f"\n🎉 可用的API配置:")
print(f" - 端点: {api_url}/v1/chat/completions")
print(f" - 头部: x-litellm-api-key: {api_key}")
print(f" - 模型: gemini-2.5-flash")
return True
else:
print(f"❌ 聊天测试失败: {chat_response.text[:200]}...")
elif response.status_code == 401:
print(f"❌ 认证失败: {response.text[:100]}...")
else:
print(f"❌ 请求失败: {response.text[:100]}...")
except requests.exceptions.RequestException as e:
print(f"❌ 连接失败: {e}")
return False
def test_environment_setup():
"""测试环境变量设置"""
print("\n🔧 当前环境变量:")
gemini_key = os.getenv('GEMINI_API_KEY', '')
google_key = os.getenv('GOOGLE_API_KEY', '')
print(f"GEMINI_API_KEY: {'已设置' if gemini_key else '未设置'} ({gemini_key[:10]}... 如果已设置)")
print(f"GOOGLE_API_KEY: {'已设置' if google_key else '未设置'} ({google_key[:10]}... 如果已设置)")
return gemini_key
if __name__ == "__main__":
print("🚀 开始测试LiteLLM自定义API端点...")
# 检查环境
api_key = test_environment_setup()
if not api_key:
print("\n⚠️ 警告: 未找到GEMINI_API_KEY环境变量")
# 测试API
success = test_litellm_api()
if success:
print("\n✅ LiteLLM API端点测试成功")
print("\n💡 建议: 可以使用这个端点替代Google官方API")
else:
print("\n❌ LiteLLM API端点测试失败")
print("\n🔍 可能的解决方案:")
print(" 1. 检查LiteLLM服务器配置")
print(" 2. 确认API密钥格式")
print(" 3. 检查网络连接")