113 lines
3.8 KiB
Python
113 lines
3.8 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
GRSAI Gemini 兼容层模型测试脚本 (并行版本)
|
|
测试所有 nano-banana 模型在 Gemini 兼容层下的表现
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
import time
|
|
from concurrent.futures import ThreadPoolExecutor, as_completed
|
|
|
|
API_KEY = "sk-c8846cb8d4834db087f0126466bf1358"
|
|
BASE_URL = "https://grsai.dakka.com.cn"
|
|
|
|
MODELS = [
|
|
"nano-banana-fast",
|
|
"nano-banana",
|
|
"nano-banana-pro",
|
|
"nano-banana-pro-vt",
|
|
"nano-banana-pro-cl",
|
|
"nano-banana-pro-vip",
|
|
"nano-banana-pro-4k-vip",
|
|
]
|
|
|
|
def test_model(model_name):
|
|
"""测试单个模型"""
|
|
url = f"{BASE_URL}/v1beta/models/{model_name}:generateContent"
|
|
headers = {
|
|
"Content-Type": "application/json",
|
|
"x-goog-api-key": API_KEY
|
|
}
|
|
payload = {
|
|
"contents": [{"parts": [{"text": "一只可爱的小猫"}]}],
|
|
"generationConfig": {
|
|
"responseModalities": ["IMAGE", "TEXT"]
|
|
}
|
|
}
|
|
|
|
start_time = time.time()
|
|
|
|
try:
|
|
response = requests.post(url, headers=headers, json=payload, timeout=180)
|
|
elapsed = time.time() - start_time
|
|
|
|
if response.status_code != 200:
|
|
return model_name, False, f"HTTP {response.status_code}: {response.text[:50]}", elapsed
|
|
|
|
data = response.json()
|
|
|
|
if "error" in data:
|
|
return model_name, False, f"错误: {data['error'].get('message', str(data['error']))[:50]}", elapsed
|
|
|
|
if "candidates" in data and data["candidates"]:
|
|
parts = data["candidates"][0].get("content", {}).get("parts", [])
|
|
for part in parts:
|
|
if "inlineData" in part:
|
|
base64_data = part["inlineData"].get("data", "")
|
|
if len(base64_data) > 100:
|
|
kb_size = len(base64_data) * 3 // 4 // 1024
|
|
return model_name, True, f"base64: {len(base64_data)} 字符 (~{kb_size} KB)", elapsed
|
|
else:
|
|
return model_name, False, f"数据异常: \"{base64_data}\" (仅 {len(base64_data)} 字符)", elapsed
|
|
elif "text" in part:
|
|
return model_name, False, f"返回文本: {part['text'][:30]}...", elapsed
|
|
|
|
return model_name, False, "未知响应格式", elapsed
|
|
|
|
except requests.exceptions.Timeout:
|
|
return model_name, False, "请求超时 (>180s)", time.time() - start_time
|
|
except Exception as e:
|
|
return model_name, False, f"异常: {str(e)[:50]}", time.time() - start_time
|
|
|
|
def main():
|
|
print("=" * 60)
|
|
print("GRSAI Gemini 兼容层模型测试 (并行)")
|
|
print("=" * 60)
|
|
print(f"测试 {len(MODELS)} 个模型,所有模型同时请求...\n")
|
|
|
|
results = {}
|
|
start_total = time.time()
|
|
|
|
# 并行执行所有测试
|
|
with ThreadPoolExecutor(max_workers=len(MODELS)) as executor:
|
|
futures = {executor.submit(test_model, model): model for model in MODELS}
|
|
|
|
for future in as_completed(futures):
|
|
model_name, success, message, elapsed = future.result()
|
|
status = "✅" if success else "❌"
|
|
print(f" {status} {model_name:<25} | {elapsed:>5.1f}s | {message}")
|
|
results[model_name] = (success, message, elapsed)
|
|
|
|
total_time = time.time() - start_total
|
|
|
|
print("\n" + "=" * 60)
|
|
print("测试结果汇总")
|
|
print("=" * 60)
|
|
|
|
success_count = sum(1 for s, _, _ in results.values() if s)
|
|
|
|
# 按原始顺序显示
|
|
for model in MODELS:
|
|
if model in results:
|
|
success, message, elapsed = results[model]
|
|
status = "✅" if success else "❌"
|
|
print(f" {status} {model}")
|
|
|
|
print("-" * 60)
|
|
print(f" 成功: {success_count}/{len(MODELS)} | 总耗时: {total_time:.1f}s")
|
|
print("=" * 60)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|