Jack 1 month ago
parent af0d43c453
commit c69733f4e6
  1. 7
      agent-image-t2i.py

@ -43,6 +43,7 @@ class ImageGenerationRequest(BaseModel):
model: str | None = Field(default=None, description="覆盖提供方默认模型") model: str | None = Field(default=None, description="覆盖提供方默认模型")
size: str = Field(default="1024x1024", description="图片尺寸") size: str = Field(default="1024x1024", description="图片尺寸")
n: int = Field(default=1, ge=1, le=10, description="生成数量") n: int = Field(default=1, ge=1, le=10, description="生成数量")
profile_name: str = Field(pattern=r"^[\w-]+$", description="调用方标识(必填),图片会保存到 output/<profile_name>/ 下")
class GeneratedImage(BaseModel): class GeneratedImage(BaseModel):
@ -107,6 +108,8 @@ def generate_images(request: ImageGenerationRequest):
raise HTTPException(status_code=500, detail=f"未配置环境变量 {config['api_key_env']}") raise HTTPException(status_code=500, detail=f"未配置环境变量 {config['api_key_env']}")
model = request.model or config["model"] model = request.model or config["model"]
profile_dir = OUTPUT_DIR / request.profile_name
profile_dir.mkdir(parents=True, exist_ok=True)
client = OpenAI(base_url=API_BASE_URL, api_key=api_key, timeout=120.0, max_retries=0) client = OpenAI(base_url=API_BASE_URL, api_key=api_key, timeout=120.0, max_retries=0)
response = generate_with_retry( response = generate_with_retry(
client, client,
@ -129,8 +132,8 @@ def generate_images(request: ImageGenerationRequest):
raise HTTPException(status_code=502, detail="上游 Base64 图片数据格式无效") from e raise HTTPException(status_code=502, detail="上游 Base64 图片数据格式无效") from e
filename = f"{model}-{uuid4().hex}.png" filename = f"{model}-{uuid4().hex}.png"
(OUTPUT_DIR / filename).write_bytes(raw) (profile_dir / filename).write_bytes(raw)
images.append(GeneratedImage(filename=filename, url=f"/output/{filename}", bytes=len(raw))) images.append(GeneratedImage(filename=filename, url=f"/output/{request.profile_name}/{filename}", bytes=len(raw)))
return ImageGenerationResponse(provider=request.provider, model=model, images=images) return ImageGenerationResponse(provider=request.provider, model=model, images=images)

Loading…
Cancel
Save