|
@@ -12477,8 +12477,29 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
$user_prompt .= $reference_content;
|
|
$user_prompt .= $reference_content;
|
|
|
// $user_prompt .= $roles_ref;
|
|
// $user_prompt .= $roles_ref;
|
|
|
// $user_prompt .= $scenes_ref;
|
|
// $user_prompt .= $scenes_ref;
|
|
|
|
|
+
|
|
|
|
|
+ // 输出格式铁律(用户消息侧再次强制,避免模型自由发挥)
|
|
|
|
|
+ $user_prompt .= "\n\n【输出格式铁律-必须严格遵守】\n";
|
|
|
|
|
+ if ($act_id > 0) {
|
|
|
|
|
+ $user_prompt .= "请直接以“##片段1”开头,紧跟“时长:X s”行,然后输出本片段的完整分镜内容(分镜序号、出场角色、场景、出场道具、画面、运镜、配音台词、背景音效),分镜从1开始连续编号。\n";
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $user_prompt .= "请以“###分段剧本”开头,依次输出“片段数量:N”、“旁白音色:...”,然后按“##片段N”逐段输出,每段必须紧跟“时长:X s”行,再输出该片段的完整分镜内容(分镜序号、出场角色、场景、出场道具、画面、运镜、配音台词、背景音效),分镜从1开始连续编号。\n";
|
|
|
|
|
+ }
|
|
|
|
|
+ $user_prompt .= "缺少“##片段N”标题或“时长:”行即为格式错误;输出前必须检查格式,不得输出其他任何内容。\n";
|
|
|
|
|
+ $user_prompt .= "片段时长必须在4秒到15秒之间(4s≤时长≤15s),超过15秒必须拆分为多个片段,不得输出低于4秒或超过15秒的片段。\n";
|
|
|
|
|
|
|
|
- $system_prompt = "\n\n【强制要求】\n";
|
|
|
|
|
|
|
+ $system_prompt = "\n\n【输出格式铁律-最高优先级】\n";
|
|
|
|
|
+ if ($act_id > 0) {
|
|
|
|
|
+ $system_prompt .= "- 直接以“##片段1”开头,紧跟“时长:X s”行,然后输出本片段分镜内容\n";
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $system_prompt .= "- 以“###分段剧本”开头,输出“片段数量:N”、“旁白音色:...”\n";
|
|
|
|
|
+ $system_prompt .= "- 然后按“##片段N”逐段输出,每段紧跟“时长:X s”行\n";
|
|
|
|
|
+ }
|
|
|
|
|
+ $system_prompt .= "- 每个片段必须严格以“##片段N”开头(N从1开始连续),并且必须包含“时长:X s”行,缺少即为格式错误\n";
|
|
|
|
|
+ $system_prompt .= "- 片段时长必须在4~15秒之间(4s≤时长≤15s),超过15秒必须拆分为多个片段,禁止输出低于4秒或超过15秒的片段\n";
|
|
|
|
|
+ $system_prompt .= "- 输出前检查:若缺少##片段N标题或时长行,视为输出无效,必须修正后输出\n\n";
|
|
|
|
|
+
|
|
|
|
|
+ $system_prompt .= "【强制要求】\n";
|
|
|
$system_prompt .= "- 请仅生成<分段剧本>部分,不要生成其他任何内容:";
|
|
$system_prompt .= "- 请仅生成<分段剧本>部分,不要生成其他任何内容:";
|
|
|
$system_prompt .= "- 第一优先级:片段时长上限(单个片段不超过15秒,超过必须切为新片段)";
|
|
$system_prompt .= "- 第一优先级:片段时长上限(单个片段不超过15秒,超过必须切为新片段)";
|
|
|
$system_prompt .= "- 每个分镜包含:分镜序号、出场角色、场景、出场道具、画面、运镜、配音台词、背景音效\n";
|
|
$system_prompt .= "- 每个分镜包含:分镜序号、出场角色、场景、出场道具、画面、运镜、配音台词、背景音效\n";
|
|
@@ -12620,6 +12641,13 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
$actDuration = (float)$numMatch[1];
|
|
$actDuration = (float)$numMatch[1];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // 时长范围约束:4~15秒,超限兜底修正(0=未知按最低4秒)
|
|
|
|
|
+ if ($actDuration > 15) {
|
|
|
|
|
+ $actDuration = 15;
|
|
|
|
|
+ }
|
|
|
|
|
+ if ($actDuration < 4) {
|
|
|
|
|
+ $actDuration = 4;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 清理act_content:去除时长、旁白音色等非分镜内容行,只保留分镜内容
|
|
// 清理act_content:去除时长、旁白音色等非分镜内容行,只保留分镜内容
|
|
|
$cleaned_content = $this->cleanSegmentContent($actContent);
|
|
$cleaned_content = $this->cleanSegmentContent($actContent);
|
|
@@ -12645,6 +12673,13 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
if ($fallbackDuration <= 0 && $act_id > 0 && !empty($segment->act_duration)) {
|
|
if ($fallbackDuration <= 0 && $act_id > 0 && !empty($segment->act_duration)) {
|
|
|
$fallbackDuration = (float)$segment->act_duration;
|
|
$fallbackDuration = (float)$segment->act_duration;
|
|
|
}
|
|
}
|
|
|
|
|
+ // 时长范围约束:4~15秒,超限兜底修正(0=未知按最低4秒)
|
|
|
|
|
+ if ($fallbackDuration > 15) {
|
|
|
|
|
+ $fallbackDuration = 15;
|
|
|
|
|
+ }
|
|
|
|
|
+ if ($fallbackDuration < 4) {
|
|
|
|
|
+ $fallbackDuration = 4;
|
|
|
|
|
+ }
|
|
|
$parsed_segments[] = [
|
|
$parsed_segments[] = [
|
|
|
'act_number' => 1,
|
|
'act_number' => 1,
|
|
|
'act_title' => '片段1',
|
|
'act_title' => '片段1',
|