xlcp/test_llm_api.py
tangweijie ef46c8d06b 更新项目配置和文档
- 更新.mcp.json配置
- 添加LLM API测试文件
- 新增项目需求文档
- 优化项目结构
2026-01-19 22:20:09 +08:00

167 lines
4.4 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
"""
测试LLM API调用
"""
import requests
import json
import time
# API配置
BASE_URL = "https://oneapi.gongjulian.cn/v1"
API_KEY = "sk-lB2Fc9ssY5UuwmiV5dD441F997364d29Be547e008dF5Cf41"
MODEL = "deepseek-ai/deepseek-v3.2"
def test_api():
"""测试API连接"""
url = f"{BASE_URL}/models"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
print("=" * 60)
print("测试1: 获取模型列表")
print("=" * 60)
try:
response = requests.get(url, headers=headers, timeout=30)
print(f"状态码: {response.status_code}")
print(f"响应: {response.text[:500]}")
return response.status_code == 200
except requests.exceptions.Timeout:
print("超时: 请求超过30秒")
return False
except requests.exceptions.ConnectionError as e:
print(f"连接错误: {e}")
return False
except Exception as e:
print(f"错误: {e}")
return False
def test_chat_completion():
"""测试聊天完成接口"""
url = f"{BASE_URL}/chat/completions"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": MODEL,
"messages": [
{
"role": "user",
"content": "请简单介绍一下你自己。"
}
],
"max_tokens": 100,
"temperature": 0.7
}
print("\n" + "=" * 60)
print("测试2: 聊天完成接口")
print("=" * 60)
print(f"URL: {url}")
print(f"Model: {MODEL}")
try:
start_time = time.time()
response = requests.post(url, headers=headers, json=payload, timeout=60)
elapsed = time.time() - start_time
print(f"状态码: {response.status_code}")
print(f"耗时: {elapsed:.2f}")
if response.status_code == 200:
result = response.json()
content = result.get("choices", [{}])[0].get("message", {}).get("content", "")
print(f"响应内容:\n{content}")
return True
else:
print(f"错误响应: {response.text[:500]}")
return False
except requests.exceptions.Timeout:
print(f"超时: 请求超过60秒")
return False
except requests.exceptions.ConnectionError as e:
print(f"连接错误: {e}")
return False
except Exception as e:
print(f"错误: {e}")
return False
def test_simple_prompt():
"""测试简单提示词"""
url = f"{BASE_URL}/chat/completions"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": MODEL,
"messages": [
{
"role": "user",
"content": "1+1等于几"
}
],
"max_tokens": 50,
"temperature": 0.1
}
print("\n" + "=" * 60)
print("测试3: 简单数学问题")
print("=" * 60)
try:
start_time = time.time()
response = requests.post(url, headers=headers, json=payload, timeout=30)
elapsed = time.time() - start_time
print(f"状态码: {response.status_code}")
print(f"耗时: {elapsed:.2f}")
if response.status_code == 200:
result = response.json()
content = result.get("choices", [{}])[0].get("message", {}).get("content", "")
print(f"响应: {content}")
return True
else:
print(f"错误: {response.text[:300]}")
return False
except requests.exceptions.Timeout:
print("超时")
return False
except Exception as e:
print(f"错误: {e}")
return False
if __name__ == "__main__":
print("LLM API 连接测试")
print(f"API地址: {BASE_URL}")
print(f"模型: {MODEL}")
print()
results = []
results.append(("模型列表", test_api()))
results.append(("聊天完成", test_chat_completion()))
results.append(("简单问题", test_simple_prompt()))
print("\n" + "=" * 60)
print("测试结果汇总")
print("=" * 60)
for name, success in results:
status = "通过" if success else "失败"
print(f"{name}: {status}")
all_passed = all(r[1] for r in results)
print()
if all_passed:
print("所有测试通过!")
else:
print("部分测试失败请检查API配置和网络连接")