"""通义千问API连接测试脚本"""
import sys
from pathlib import Path

# 添加项目路径到sys.path
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))

from modules.api_client import APIClient

def test_qianwen_api():
    """测试通义千问API连接"""
    print("=" * 50)
    print("通义千问API连接测试")
    print("=" * 50)
    
    try:
        # 创建API客户端
        print("\n1️⃣ 正在初始化API客户端...")
        client = APIClient()
        
        # 设置为qianwen提供商
        print("2️⃣ 切换到通义千问提供商...")
        client.set_provider('qianwen')
        
        # 获取配置信息
        config = client.get_provider_config()
        print(f"\n📋 当前配置:")
        print(f"   - 提供商: qianwen")
        print(f"   - 模型: {config.get('model', 'N/A')}")
        print(f"   - API地址: {config.get('base_url', 'N/A')}")
        print(f"   - API密钥: {'已配置' if config.get('api_key') else '未配置'}")
        print(f"   - 最大tokens: {config.get('max_tokens', 'N/A')}")
        print(f"   - 温度参数: {config.get('temperature', 'N/A')}")
        
        # 检查API密钥
        if not config.get('api_key'):
            print("\n❌ 错误: API密钥未配置")
            print("   请在 config/api_config.yaml 中配置 qianwen.api_key")
            return False
        
        # 发送测试请求
        print("\n3️⃣ 发送测试请求...")
        test_prompt = "请用一句话介绍你自己。"
        print(f"   测试Prompt: {test_prompt}")
        
        print("\n⏳ 等待API响应...")
        response = client.call_api(test_prompt)
        
        # 显示响应
        print("\n✅ API连接成功!")
        print(f"\n📤 API响应:")
        print("-" * 50)
        print(response)
        print("-" * 50)
        
        # 响应统计
        print(f"\n📊 响应统计:")
        print(f"   - 响应长度: {len(response)} 字符")
        print(f"   - 响应行数: {response.count(chr(10)) + 1} 行")
        
        print("\n" + "=" * 50)
        print("✅ 通义千问API连接测试成功!")
        print("=" * 50)
        return True
        
    except Exception as e:
        print("\n" + "=" * 50)
        print("❌ API连接测试失败!")
        print("=" * 50)
        print(f"\n错误类型: {type(e).__name__}")
        print(f"错误信息: {str(e)}")
        
        # 常见错误提示
        print("\n💡 可能的解决方案:")
        if "api_key" in str(e).lower() or "unauthorized" in str(e).lower():
            print("   - 检查API密钥是否正确")
            print("   - 确认API密钥是否有效且未过期")
        elif "timeout" in str(e).lower() or "connect" in str(e).lower():
            print("   - 检查网络连接")
            print("   - 确认API地址是否正确")
            print("   - 尝试使用VPN或代理")
        elif "max_tokens" in str(e).lower():
            print("   - 调整max_tokens参数")
        else:
            print("   - 查看详细错误信息")
            print("   - 检查API配置文件格式")
        
        import traceback
        print(f"\n📝 详细错误堆栈:")
        print("-" * 50)
        traceback.print_exc()
        print("-" * 50)
        
        return False

if __name__ == "__main__":
    success = test_qianwen_api()
    sys.exit(0 if success else 1)
