test_api.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. """中转接口诊断脚本。
  2. 在能联通中转的机器上运行:
  3. python3 test_api.py
  4. 它会:① 列出中转支持的模型;② 用你的模型试生成一张图,打印真实状态码和返回。
  5. 把输出贴给我,我就能精确改代码。
  6. """
  7. import json
  8. import ssl
  9. import urllib.request
  10. import urllib.error
  11. import config
  12. # ====== 改成你的配置 ======
  13. BASE_URL = config.get("ANIM_STUDIO_BASE_URL", "https://x.long.bid/v1")
  14. API_KEY = config.get("ANIM_STUDIO_API_KEY", "")
  15. MODEL = config.get("ANIM_STUDIO_IMAGE_MODEL", "gpt-image-2")
  16. SIZE = "1024x1024"
  17. # =========================
  18. if not API_KEY:
  19. raise SystemExit("缺少 ANIM_STUDIO_API_KEY;请配置环境变量或 local_config.json")
  20. try:
  21. import certifi
  22. CTX = ssl.create_default_context(cafile=certifi.where())
  23. except Exception:
  24. CTX = ssl.create_default_context()
  25. H = {"Authorization": "Bearer " + API_KEY, "Content-Type": "application/json"}
  26. def call(method, path, payload=None, timeout=60):
  27. data = json.dumps(payload).encode() if payload is not None else None
  28. req = urllib.request.Request(BASE_URL.rstrip("/") + path, data=data, headers=H, method=method)
  29. try:
  30. with urllib.request.urlopen(req, timeout=timeout, context=CTX) as r:
  31. return r.status, r.read().decode("utf-8", "ignore")
  32. except urllib.error.HTTPError as e:
  33. return e.code, e.read().decode("utf-8", "ignore")
  34. except Exception as e:
  35. return "ERR", repr(e)
  36. print("① 列出模型 GET /models")
  37. s, b = call("GET", "/models")
  38. print(" 状态:", s)
  39. print(" 返回(前1500):", b[:1500])
  40. print()
  41. print(f"② 试生成图片 POST /images/generations (model={MODEL})")
  42. payload = {"model": MODEL, "prompt": "a cute blue jelly creature, transparent background",
  43. "n": 1, "size": SIZE}
  44. if "gpt-image" in MODEL.lower() and MODEL.lower() != "gpt-image-2":
  45. payload["background"] = "transparent"
  46. payload["output_format"] = "png"
  47. s, b = call("POST", "/images/generations", payload)
  48. print(" 状态:", s)
  49. print(" 返回(前1500):", b[:1500])