优化故事版生成

This commit is contained in:
Azmat@qq.com
2026-08-21 18:22:50 +08:00
parent 158c66ac25
commit 409d1c2969
5 changed files with 181 additions and 15 deletions
+19 -2
View File
@@ -62,6 +62,23 @@ def get_default_model(capability: str) -> ModelConfig:
return qs.filter(is_default=True).order_by("created_at").first() or qs.order_by("created_at").first()
def get_storyboard_image_model() -> ModelConfig:
"""故事板出图钉 YunQi gpt-image-2 多图 edits(与手工测通的 curl 同一条链路)。
找不到再回落默认图像模型,避免测试/未 seed 环境直接挂。"""
pinned = (
ModelConfig.objects.select_related("provider")
.filter(
capability=ModelConfig.Capability.IMAGE,
status=ModelConfig.Status.ACTIVE,
provider__status="active",
provider__name="yunqi",
name="gpt-image-2",
)
.first()
)
return pinned or get_default_model(ModelConfig.Capability.IMAGE)
def resolve_image_model(key: str | None) -> "ModelConfig | None":
"""前端「生图模型选择」→ ModelConfig。用户显式选的可以是 disabled 模型(故不按 status 过滤)。
· "volcano" → 火山官方 Seedream(取最新一版)
@@ -2625,7 +2642,7 @@ def submit_storyboard(*, project, user, prompt: str = "", shot_ids: list | None
adopted_script = project.script_versions.filter(is_adopted=True).first()
if adopted_script is None:
raise ValueError("script must be adopted before generating storyboard")
if get_default_model(ModelConfig.Capability.IMAGE) is None:
if get_storyboard_image_model() is None:
raise ValueError("no active image model configured")
if prompt:
meta = dict(project.metadata or {})
@@ -3046,7 +3063,7 @@ def poll_storyboard(*, project, user) -> dict:
).values_list("request_payload__storyboard_shot", flat=True)
if v
}
model_config = get_default_model(ModelConfig.Capability.IMAGE)
model_config = get_storyboard_image_model()
extra_prompt = (project.metadata or {}).get("storyboard_prompt", "") or ""
spawnable = [s for s in active if str(s.id) not in inflight_shot_ids]
slots = max(0, STORYBOARD_MAX_PARALLEL - len(inflight_shot_ids))