模板导出增强 + 模特性别分组 + 三合一提示词精简
1) 模板导出:识别「基码表-胸围」填 sku.bust(多个胸围列都填);申报价格模糊匹配多列统一按加价后价格填写;详情图文不再拼接 img_url_2;SPU 款式来源统一填「现货款」;商品产地国家简称映射(沙特→沙特阿拉伯) 2) 模特性别分组:model_features 按男女分组,按模板类目含男/女固定取对应性别模特(含 Pinterest 模式 pipeline) 3) 三合一提示词:去掉 DESIGN CONTENT 四要素描述(设计已由设计稿提供) 4) 生图尺寸:全部改为读 config 不再硬编码(设计图 compose.design_size / 合成图 compose.size / 种草图 seed_shot.size)
This commit is contained in:
@@ -19,7 +19,7 @@ class ImageBackend(ABC):
|
||||
def print(self, prompt: str, base_image: str, out_path: str, negative: str = "",
|
||||
extra_images: Optional[Sequence[str]] = None, size: str = "") -> str:
|
||||
"""返回生成的成品图路径。实现内部应处理调用失败/超时并抛异常由调用方兜底。
|
||||
size: 显式尺寸覆盖(如 "1504x2000");留空则用后端配置的 size。"""
|
||||
size: 显式尺寸覆盖(如 "1536x2048");留空则用后端配置的 size。"""
|
||||
raise NotImplementedError
|
||||
|
||||
def generate(self, prompt: str, out_path: str, negative: str = "", size: str = "") -> str:
|
||||
|
||||
@@ -20,7 +20,7 @@ class MockImageBackend(ImageBackend):
|
||||
self._cfg = cfg or {}
|
||||
|
||||
def print(self, prompt: str, base_image: str, out_path: str, negative: str = "",
|
||||
extra_images=None, size: str = "") -> str:
|
||||
extra_images=None, size: str = "", seed: int = None) -> str:
|
||||
size_px = (1024, 1024)
|
||||
try:
|
||||
with Image.open(base_image) as im:
|
||||
@@ -45,7 +45,8 @@ class MockImageBackend(ImageBackend):
|
||||
img.save(out_path)
|
||||
return out_path
|
||||
|
||||
def generate(self, prompt: str, out_path: str, negative: str = "", size: str = "") -> str:
|
||||
def generate(self, prompt: str, out_path: str, negative: str = "", size: str = "",
|
||||
seed: int = None) -> str:
|
||||
"""纯文生图(mock):白底 + 文字标注,模拟纯印花设计稿。"""
|
||||
size_px = (1024, 1024)
|
||||
if size:
|
||||
|
||||
@@ -137,13 +137,14 @@ class OpenAIImageBackend(ImageBackend):
|
||||
return str(self._cfg.get("base_url") or "https://api.openai.com/v1").rstrip("/")
|
||||
|
||||
def print(self, prompt: str, base_image: str, out_path: str, negative: str = "",
|
||||
extra_images=None, size: str = "") -> str:
|
||||
extra_images=None, size: str = "", seed: Optional[int] = None) -> str:
|
||||
"""img2img 编辑:参考图 base_image(+ 可选 extra_images 多参考图)按 prompt 生成新图。
|
||||
|
||||
- 平铺服装图:base_image=平铺衣服底图(图3),extra_images=[印花设计稿(图2)]
|
||||
- 三图模特合成:base_image=模特图(图1),extra_images=[印花设计稿(图2), 平铺底图(图3)]
|
||||
提交顺序即图1→图2→图3,与提示词中的图片角色一一对应。
|
||||
size: 显式尺寸覆盖(如 "1504x2000");留空用配置 size(默认 1024x1024)。
|
||||
size: 显式尺寸覆盖(如 "1536x2048");留空用配置 size(默认 1024x1024)。
|
||||
seed: 随机种子(None=不传,网关随机;固定值=可复现,网关支持才生效)。
|
||||
"""
|
||||
cfg = self._cfg
|
||||
api_key = cfg.get("api_key", "")
|
||||
@@ -172,6 +173,8 @@ class OpenAIImageBackend(ImageBackend):
|
||||
"model": model,
|
||||
"execution_mode": "sync", # 强制同步(ai-media 等网关默认重负载转异步任务,不稳定)
|
||||
}
|
||||
if seed is not None:
|
||||
data["seed"] = seed
|
||||
# 提交重试:异步路径不稳定 → 失败重试同步提交(最多 3 次);
|
||||
# 内容政策拦截(content_policy_violation)多为网关误判 → 等待后重试
|
||||
last_err: Optional[str] = None
|
||||
@@ -195,9 +198,11 @@ class OpenAIImageBackend(ImageBackend):
|
||||
print(f"[img] 第 {attempt + 1} 次提交异步失败,重试同步提交: {e}")
|
||||
raise RuntimeError(f"图像合成多次提交均失败: {last_err}")
|
||||
|
||||
def generate(self, prompt: str, out_path: str, negative: str = "", size: str = "") -> str:
|
||||
def generate(self, prompt: str, out_path: str, negative: str = "", size: str = "",
|
||||
seed: Optional[int] = None) -> str:
|
||||
"""纯文生图:生成白底纯印花设计稿(standalone pure print design)。
|
||||
size: 显式尺寸覆盖(印花设计统一 1024x1024);留空用配置 size。
|
||||
seed: 随机种子(None=不传,网关随机;固定值=可复现,网关支持才生效)。
|
||||
background: 配置 compose.background="transparent" 时传 background 参数 → 透明背景 PNG
|
||||
(gpt-image-1/2 等模型支持;网关不支持该参数时会被忽略或由网关兜底)。"""
|
||||
cfg = self._cfg
|
||||
@@ -217,6 +222,8 @@ class OpenAIImageBackend(ImageBackend):
|
||||
"response_format": "b64_json",
|
||||
"execution_mode": "sync", # 强制同步(ai-media 等网关默认重负载转异步任务,不稳定)
|
||||
}
|
||||
if seed is not None:
|
||||
data["seed"] = seed
|
||||
bg = str(cfg.get("background") or "").strip()
|
||||
if bg:
|
||||
data["background"] = bg # 如 "transparent"(透明背景 PNG)
|
||||
|
||||
Reference in New Issue
Block a user