feat: align product suite prompts with reference images
This commit is contained in:
+38
-7
@@ -253,25 +253,53 @@ def validate_product_suite_prompt(template_text):
|
||||
return str(template_text)
|
||||
|
||||
|
||||
def reference_asset_count(settings, source_image_count):
|
||||
"""Return the effective reference-image count for a planned cmhub request."""
|
||||
normalized = normalize_suite_settings(settings)
|
||||
if normalized["per_image_primary"]:
|
||||
return 0
|
||||
try:
|
||||
image_count = max(0, int(source_image_count or 0))
|
||||
except (TypeError, ValueError):
|
||||
image_count = 0
|
||||
return min(7, max(0, image_count - 1))
|
||||
|
||||
|
||||
def product_suite_reference_rule(settings, reference_asset_count=0):
|
||||
normalized = normalize_suite_settings(settings)
|
||||
try:
|
||||
count = max(0, min(7, int(reference_asset_count or 0)))
|
||||
except (TypeError, ValueError):
|
||||
count = 0
|
||||
if normalized["per_image_primary"] or count <= 0:
|
||||
return (
|
||||
"参考图规则:当前上传图片是本任务唯一主参考图;保持商品主体、款式、颜色和关键细节准确;"
|
||||
"不编造用户与参考图均未提供的信息。"
|
||||
)
|
||||
return (
|
||||
"参考图规则:第1张为主商品图,请保持其主体、款式、颜色和关键细节准确;"
|
||||
"第2至%d张仅作为风格、构图、场景或排版参考,不得替换主商品;"
|
||||
"不编造用户与参考图均未提供的信息。" % (count + 1)
|
||||
)
|
||||
|
||||
|
||||
def product_suite_prompt_context(
|
||||
base_prompt,
|
||||
settings,
|
||||
category,
|
||||
item_id,
|
||||
source_index=1,
|
||||
reference_asset_count=0,
|
||||
):
|
||||
normalized = normalize_suite_settings(settings)
|
||||
item_text = str(item_id or "").strip()
|
||||
if not item_text or item_text.startswith("draft_"):
|
||||
item_text = "未绑定商品"
|
||||
reference_index = max(1, int(source_index or 1))
|
||||
if normalized["per_image_primary"]:
|
||||
reference_rule = (
|
||||
"参考图规则:当前上传图片是本任务唯一主参考图;保持商品主体、款式、颜色和关键细节准确;"
|
||||
"不编造用户与参考图均未提供的信息。"
|
||||
)
|
||||
else:
|
||||
reference_rule = "参考图规则:使用第一張上傳圖作為主商品圖,其餘圖片只作為參考。"
|
||||
reference_rule = product_suite_reference_rule(
|
||||
normalized,
|
||||
reference_asset_count,
|
||||
)
|
||||
return {
|
||||
"生成目标": category_description(category),
|
||||
"套图名称": str(category or ""),
|
||||
@@ -329,6 +357,7 @@ def build_suite_prompt(
|
||||
category,
|
||||
item_id,
|
||||
source_index=1,
|
||||
reference_asset_count=0,
|
||||
*,
|
||||
template_text,
|
||||
):
|
||||
@@ -338,6 +367,7 @@ def build_suite_prompt(
|
||||
category,
|
||||
item_id,
|
||||
source_index=source_index,
|
||||
reference_asset_count=reference_asset_count,
|
||||
)
|
||||
return render_product_suite_prompt(template_text, context)
|
||||
|
||||
@@ -376,6 +406,7 @@ def build_job_specs(source_assets, base_prompt, settings, item_id, *, template_t
|
||||
category,
|
||||
item_id,
|
||||
source_index=source_index,
|
||||
reference_asset_count=len(reference_asset_ids),
|
||||
template_text=template_text,
|
||||
),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user