Spaces:
Paused
Paused
| #!/usr/bin/env python | |
| # -*- coding: utf-8 -*- | |
| """ | |
| 测试 LongCat API 连接性 | |
| """ | |
| import asyncio | |
| import httpx | |
| import json | |
| # LongCat API 端点 | |
| LONGCAT_API_ENDPOINT = "https://longcat.chat/api/v1/chat-completion-oversea" | |
| async def test_longcat_api(): | |
| """测试 LongCat API 连接""" | |
| print(f"🧪 测试 LongCat API 连接...") | |
| print(f"📡 API 端点: {LONGCAT_API_ENDPOINT}") | |
| headers = { | |
| 'accept': 'text/event-stream,application/json', | |
| 'content-type': 'application/json', | |
| 'origin': 'https://longcat.chat', | |
| 'referer': 'https://longcat.chat/t', | |
| 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36' | |
| } | |
| payload = { | |
| "stream": True, | |
| "temperature": 0.7, | |
| "content": "Hello", | |
| "messages": [ | |
| { | |
| "role": "user", | |
| "content": "Hello" | |
| } | |
| ] | |
| } | |
| print(f"📤 发送请求...") | |
| print(f"📋 Headers: {json.dumps(headers, indent=2)}") | |
| print(f"📋 Payload: {json.dumps(payload, indent=2)}") | |
| try: | |
| async with httpx.AsyncClient(timeout=30.0) as client: | |
| response = await client.post( | |
| LONGCAT_API_ENDPOINT, | |
| headers=headers, | |
| json=payload | |
| ) | |
| print(f"📡 响应状态码: {response.status_code}") | |
| print(f"📋 响应头: {dict(response.headers)}") | |
| if not response.is_success: | |
| error_text = await response.atext() | |
| print(f"❌ API 错误: {error_text}") | |
| return False | |
| print(f"✅ 连接成功,开始读取流数据...") | |
| line_count = 0 | |
| async for line in response.aiter_lines(): | |
| line_count += 1 | |
| line = line.strip() | |
| print(f"📥 第 {line_count} 行: {line}") | |
| if line_count > 10: # 只读取前10行 | |
| print(f"⏹️ 停止读取(已读取 {line_count} 行)") | |
| break | |
| if line.startswith('data:'): | |
| data_str = line[5:].strip() | |
| if data_str == '[DONE]': | |
| print(f"🏁 收到结束标记") | |
| break | |
| try: | |
| data = json.loads(data_str) | |
| print(f"📦 解析成功: {json.dumps(data, ensure_ascii=False, indent=2)}") | |
| except json.JSONDecodeError as e: | |
| print(f"❌ JSON 解析失败: {e}") | |
| print(f"✅ 测试完成,共读取 {line_count} 行") | |
| return True | |
| except httpx.TimeoutException: | |
| print(f"❌ 请求超时") | |
| return False | |
| except httpx.ConnectError as e: | |
| print(f"❌ 连接错误: {e}") | |
| return False | |
| except Exception as e: | |
| print(f"❌ 未知错误: {e}") | |
| import traceback | |
| print(f"❌ 错误堆栈: {traceback.format_exc()}") | |
| return False | |
| async def test_simple_request(): | |
| """测试简单的非流式请求""" | |
| print(f"\n🧪 测试简单的非流式请求...") | |
| headers = { | |
| 'accept': 'application/json', | |
| 'content-type': 'application/json', | |
| 'origin': 'https://longcat.chat', | |
| 'referer': 'https://longcat.chat/t', | |
| 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' | |
| } | |
| payload = { | |
| "stream": False, | |
| "temperature": 0.7, | |
| "content": "Hello", | |
| "messages": [ | |
| { | |
| "role": "user", | |
| "content": "Hello" | |
| } | |
| ] | |
| } | |
| try: | |
| async with httpx.AsyncClient(timeout=30.0) as client: | |
| response = await client.post( | |
| LONGCAT_API_ENDPOINT, | |
| headers=headers, | |
| json=payload | |
| ) | |
| print(f"📡 响应状态码: {response.status_code}") | |
| if response.is_success: | |
| content = await response.atext() | |
| print(f"✅ 响应内容: {content[:500]}...") | |
| return True | |
| else: | |
| error_text = await response.atext() | |
| print(f"❌ 错误响应: {error_text}") | |
| return False | |
| except Exception as e: | |
| print(f"❌ 请求失败: {e}") | |
| return False | |
| async def main(): | |
| """运行所有测试""" | |
| print("🚀 开始 LongCat API 连接测试...\n") | |
| # 测试流式请求 | |
| stream_result = await test_longcat_api() | |
| # 测试非流式请求 | |
| simple_result = await test_simple_request() | |
| print(f"\n📊 测试结果:") | |
| print(f" 流式请求: {'✅ 成功' if stream_result else '❌ 失败'}") | |
| print(f" 非流式请求: {'✅ 成功' if simple_result else '❌ 失败'}") | |
| if stream_result and simple_result: | |
| print(f"🎉 所有测试通过!") | |
| else: | |
| print(f"⚠️ 部分测试失败,请检查网络连接和 API 端点") | |
| if __name__ == "__main__": | |
| asyncio.run(main()) | |