| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- """测试即梦AI工具
- 用法:
- uv run python tests/test_jimeng_ai.py # Health check
- uv run python tests/test_jimeng_ai.py --text2image # 测试文生图
- uv run python tests/test_jimeng_ai.py --image2video # 测试图生视频
- uv run python tests/test_jimeng_ai.py --query # 测试查询任务状态
- """
- import argparse
- import json
- import sys
- import httpx
- BASE_URL = "http://127.0.0.1:8001"
- def check_connection():
- try:
- httpx.get(f"{BASE_URL}/health", timeout=3)
- except httpx.ConnectError:
- print(f"ERROR: Cannot connect to {BASE_URL}")
- print("Please start the service first:")
- print(" uv run python -m tool_agent")
- sys.exit(1)
- def test_health():
- print("=== Health Check ===")
- resp = httpx.get(f"{BASE_URL}/health")
- print(f" Status : {resp.status_code}")
- print(f" Body : {json.dumps(resp.json(), ensure_ascii=False, indent=4)}")
- assert resp.status_code == 200
- print(" [PASS]")
- def test_text2image():
- print("=== Test Text to Image (Seendance 2.0) ===")
- print(" Calling jimeng_ai...")
- try:
- resp = httpx.post(f"{BASE_URL}/select_tool", json={
- "tool_id": "jimeng_ai",
- "params": {
- "action": "text2image",
- "prompt": "beautiful sunset over mountains, high quality",
- "model": "seendance_2.0",
- "aspect_ratio": "16:9",
- "image_count": 1,
- "cfg_scale": 7.0,
- "steps": 20
- }
- }, timeout=120)
- print(f" Status : {resp.status_code}")
- data = resp.json()
- if data["status"] == "success":
- result = data["result"]
- print(f" task_id: {result.get('task_id')}")
- print(f" status : {result.get('status')}")
- if result.get("result", {}).get("images"):
- print(f" images : {len(result['result']['images'])} generated")
- print(" [PASS]")
- else:
- print(f" ERROR : {data.get('error')}")
- print(" [FAIL]")
- except Exception as e:
- print(f" ERROR : {e}")
- print(" [FAIL]")
- def test_image2video():
- print("=== Test Image to Video (Seedream Lite 5.0) ===")
- print(" Calling jimeng_ai...")
- try:
- resp = httpx.post(f"{BASE_URL}/select_tool", json={
- "tool_id": "jimeng_ai",
- "params": {
- "action": "image2video",
- "image_url": "https://example.com/sample.jpg",
- "prompt": "camera slowly zooming in",
- "model": "seedream_lite_5.0",
- "video_duration": 5,
- "motion_strength": 0.5
- }
- }, timeout=300)
- print(f" Status : {resp.status_code}")
- data = resp.json()
- if data["status"] == "success":
- result = data["result"]
- print(f" task_id: {result.get('task_id')}")
- print(f" status : {result.get('status')}")
- if result.get("result", {}).get("videos"):
- print(f" videos : {len(result['result']['videos'])} generated")
- print(" [PASS]")
- else:
- print(f" ERROR : {data.get('error')}")
- print(" [FAIL]")
- except Exception as e:
- print(f" ERROR : {e}")
- print(" [FAIL]")
- def test_query_status():
- print("=== Test Query Task Status ===")
- print(" NOTE: Requires a valid task_id from previous generation")
- print(" [SKIP - Manual test required]")
- def main():
- parser = argparse.ArgumentParser(description="Jimeng AI Tool Test")
- parser.add_argument("--text2image", action="store_true", help="test text to image")
- parser.add_argument("--image2video", action="store_true", help="test image to video")
- parser.add_argument("--query", action="store_true", help="test query status")
- args = parser.parse_args()
- print(f"Target: {BASE_URL}\n")
- check_connection()
- test_health()
- ran_any = False
- if args.text2image:
- print()
- test_text2image()
- ran_any = True
- if args.image2video:
- print()
- test_image2video()
- ran_any = True
- if args.query:
- print()
- test_query_status()
- ran_any = True
- if not ran_any:
- print()
- print("No test specified. Available options:")
- parser.print_help()
- print("\n=== DONE ===")
- if __name__ == "__main__":
- main()
|