"""
测试模型 API 功能
"""
import requests
import json

BASE_URL = "http://localhost:8000/api"

def login():
    """登录获取 token"""
    response = requests.post(f"{BASE_URL}/users/login", data={
        "username": "admin",
        "password": "admin123"
    })
    if response.status_code == 200:
        token = response.json()["access_token"]
        print("✓ 登录成功")
        return token
    else:
        print("✗ 登录失败:", response.text)
        return None

def create_test_model(token):
    """创建测试模型"""
    headers = {"Authorization": f"Bearer {token}"}
    
    # 使用一个公开的测试 API（这里使用 OpenAI 兼容格式）
    test_model = {
        "name": "gpt-3.5-turbo",
        "api_key": "sk-test-key-replace-with-real-key",
        "base_url": "https://api.openai.com/v1"
    }
    
    response = requests.post(f"{BASE_URL}/ai-agents/models", json=test_model, headers=headers)
    if response.status_code == 200:
        model_id = response.json()["id"]
        print(f"✓ 创建测试模型成功: ID={model_id}")
        return model_id
    else:
        print("✗ 创建模型失败:", response.text)
        return None

def test_model(token, model_id):
    """测试模型"""
    headers = {"Authorization": f"Bearer {token}"}
    
    print(f"\n正在测试模型 ID={model_id}...")
    print("="*60)
    
    response = requests.post(f"{BASE_URL}/ai-agents/models/{model_id}/test", headers=headers)
    
    if response.status_code == 200:
        result = response.json()
        
        if result["success"]:
            print("✓ 模型测试成功")
            print(f"  模型名称: {result['model_name']}")
            print(f"  响应时间: {result['latency_ms']:.2f}ms")
            print(f"  模型回复: {result['response']}")
        else:
            print("✗ 模型测试失败")
            print(f"  错误信息: {result['message']}")
            if 'error' in result:
                print(f"  详细错误: {result['error']}")
    else:
        print("✗ 测试请求失败:", response.text)
    
    print("="*60)

def main():
    print("="*60)
    print("测试模型 API 功能")
    print("="*60)
    
    # 登录
    token = login()
    if not token:
        print("无法继续测试，请先创建管理员账号")
        return
    
    # 创建测试模型
    print("\n--- 创建测试模型 ---")
    model_id = create_test_model(token)
    
    if model_id:
        # 测试模型
        print("\n--- 测试模型响应 ---")
        test_model(token, model_id)
    
    print("\n" + "="*60)
    print("测试完成！")
    print("="*60)
    print("\n注意：")
    print("1. 如果测试失败，请确保 API Key 是有效的")
    print("2. 如果使用 OpenAI API，需要替换为真实的 API Key")
    print("3. 如果使用其他模型，请调整 base_url 和 model name")

if __name__ == "__main__":
    main()
