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