diff --git a/core/backend/apps/ai/services.py b/core/backend/apps/ai/services.py index dbf192a..dd5d544 100644 --- a/core/backend/apps/ai/services.py +++ b/core/backend/apps/ai/services.py @@ -979,6 +979,17 @@ _COVER_VARIATIONS = [ "本张:促销封面版式,留出标题/价签区,高对比配色,强视觉冲击构图", ] +# 图片创作「自由模式」专用变体:用户没要广告,只是想要同一想法的不同张。 +# 只换视角/景别/光线/机位,严禁加任何文字、卖点、标题、价签(那是套图 _COVER_VARIATIONS 的活)。 +# 复用套图变体会让第 2 张起凭空长出护肤广告文案(PMC 自由模式反馈)。 +_FREE_VARIATIONS = [ + "换一个视角与构图", + "换一种镜头景别(近景 / 中景 / 远景任选其一)与光线氛围", + "换一个拍摄角度和背景环境,主体保持不变", + "换一种构图与色调,画面更有层次", + "调整主体在画面中的位置与景深,换个机位", +] + # 平台套图优化版(对照「平台套图线上提示词优化版.md」):平台差异 + slot 版式 + 低信息密度上限。 # 平台 id 用规范化 key(前端 dy/tb… 已在 PLATFORM_ID_MAP 里映射成这些 canonical key)。 _PLATFORM_NAMES = { @@ -2428,9 +2439,12 @@ def run_standalone_image_task(*, task_id: str) -> None: response = provider.image_generation(model=model_config.name, endpoint=model_config.endpoint, prompt=edit_prompt, image=edit_images, size=vsize) else: # 纯文生图同批多张要不同构图,否则雷同(PMC#24);index>0 追加换版式指令。 + # 自由模式只换构图/视角/光线、绝不加文字卖点(_FREE_VARIATIONS); + # 套图卖点版式归 mode=cover,不在这条裸文生图分支里。 gen_prompt = prompt if index > 0: - gen_prompt = f"{prompt}。{_COVER_VARIATIONS[index % len(_COVER_VARIATIONS)]},换一种构图与视角。" + variation = _FREE_VARIATIONS[index % len(_FREE_VARIATIONS)] + gen_prompt = f"{prompt}。{variation},不要在画面中添加任何文字、卖点、标题或价签。" response = provider.image_generation(model=model_config.name, endpoint=model_config.endpoint, prompt=gen_prompt) media = provider.extract_first_media_url(response) with transaction.atomic():