feat: fix product suite reference prompt rule
This commit is contained in:
+34
-24
@@ -156,22 +156,44 @@ class ProductSuiteTests(unittest.TestCase):
|
||||
self.assertEqual([11, 11], [spec["source_asset_id"] for spec in specs])
|
||||
self.assertEqual([[12, 13], [12, 13]], [spec["reference_asset_ids"] for spec in specs])
|
||||
|
||||
def test_job_specs_use_fixed_reference_rule_for_one_three_and_eight_images(self):
|
||||
settings = product_suite.default_suite_settings()
|
||||
settings.update(
|
||||
{
|
||||
"per_image_primary": False,
|
||||
"categories": {"白底图": 1, "场景图": 0, "卖点图": 0},
|
||||
}
|
||||
)
|
||||
fixed_rule = "参考图规则:使用第一張上傳圖作為主商品圖,其餘圖片只作為參考。"
|
||||
|
||||
for image_count in (1, 3, 8):
|
||||
specs = product_suite.build_job_specs(
|
||||
[SimpleNamespace(id=index) for index in range(1, image_count + 1)],
|
||||
"卖点",
|
||||
settings,
|
||||
"51100639510",
|
||||
template_text=prompts.load_default_product_suite_prompt(),
|
||||
)
|
||||
self.assertEqual(1, len(specs))
|
||||
self.assertIn(fixed_rule, specs[0]["prompt"])
|
||||
self.assertNotIn("第2至", specs[0]["prompt"])
|
||||
|
||||
def test_reference_rule_follows_per_image_primary_setting(self):
|
||||
template = prompts.load_default_product_suite_prompt()
|
||||
settings = product_suite.default_suite_settings()
|
||||
|
||||
single_primary = product_suite.build_suite_prompt(
|
||||
"卖点",
|
||||
settings,
|
||||
"场景图",
|
||||
"51100639510",
|
||||
template_text=template,
|
||||
)
|
||||
self.assertIn(
|
||||
"参考图规则:当前上传图片是本任务唯一主参考图;保持商品主体、款式、颜色和关键细节准确;不编造用户与参考图均未提供的信息。",
|
||||
single_primary,
|
||||
)
|
||||
self.assertNotIn("第2至", single_primary)
|
||||
fixed_rule = "参考图规则:使用第一張上傳圖作為主商品圖,其餘圖片只作為參考。"
|
||||
for reference_count in (0, 2, 7):
|
||||
not_per_image_primary = product_suite.build_suite_prompt(
|
||||
"卖点",
|
||||
settings,
|
||||
"场景图",
|
||||
"51100639510",
|
||||
reference_asset_count=reference_count,
|
||||
template_text=template,
|
||||
)
|
||||
self.assertIn(fixed_rule, not_per_image_primary)
|
||||
self.assertNotIn("第2至", not_per_image_primary)
|
||||
|
||||
settings["per_image_primary"] = True
|
||||
per_image_primary = product_suite.build_suite_prompt(
|
||||
@@ -189,18 +211,6 @@ class ProductSuiteTests(unittest.TestCase):
|
||||
self.assertNotIn("第2至", per_image_primary)
|
||||
self.assertNotIn("序号2", per_image_primary)
|
||||
|
||||
multi_reference = product_suite.build_suite_prompt(
|
||||
"卖点",
|
||||
product_suite.default_suite_settings(),
|
||||
"场景图",
|
||||
"51100639510",
|
||||
reference_asset_count=2,
|
||||
template_text=template,
|
||||
)
|
||||
self.assertIn(
|
||||
"参考图规则:第1张为主商品图,请保持其主体、款式、颜色和关键细节准确;第2至3张仅作为风格、构图、场景或排版参考,不得替换主商品;不编造用户与参考图均未提供的信息。",
|
||||
multi_reference,
|
||||
)
|
||||
self.assertEqual(7, product_suite.reference_asset_count({}, 9))
|
||||
|
||||
def test_product_suite_template_validation_and_custom_category_rendering(self):
|
||||
|
||||
Reference in New Issue
Block a user