Files

44 lines
1.2 KiB
Python

"""OpenAI 兼容网关适配器。
模型发现: GET {base_url}/models
出图: POST {base_url}/images/generations
返回: data[0].b64_json 或 data[0].url
"""
from __future__ import annotations
from .base import Capabilities, ImageResult, ProviderAdapter
class OpenAICompatAdapter(ProviderAdapter):
name = "openai_compat"
capabilities = Capabilities(
supports_image_input=False,
size_hint="WxH",
kind="image",
)
def generate(
self,
model: str,
prompt: str,
size: str,
ratio: str,
n: int,
images: list[str],
) -> list[ImageResult]:
body: dict = {"model": model, "prompt": prompt, "n": n}
if size:
if size in ("1K", "2K", "3K", "4K"):
side = int(size[0]) * 1024
size = f"{side}x{side}"
body["size"] = size
resp = self._request("POST", "/images/generations", json_body=body, timeout=600.0)
payload = self._json(resp)
results = self.collect_results(payload)
# URL 形态需要二次下载
out: list[ImageResult] = []
for r in results:
out.append(self.download(r.url) if r.url else r)
return out