|
|
@@ -14775,7 +14775,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
$user_prompt .= "- 本集原有{$originSegmentCount}个片段,必须严格生成{$originSegmentCount}个片段(##片段1 到 ##片段{$originSegmentCount}),不得多不得少。\n";
|
|
|
}
|
|
|
|
|
|
- // 整集模式(episode_id>0):在原提示词后追加独立的“本集改动点”模块。
|
|
|
+ // 改动点模块:整集模式(episode_id>0)输出“本集改动点”,单片段模式(act_id)输出“本片段改动点”。
|
|
|
// 该模块自身格式独立,不影响上面【分段剧本】的既有格式要求;
|
|
|
// 生成后由解析阶段抽出写入 check_points 字段,不参与分段剧本解析。
|
|
|
if ($episode_id > 0) {
|
|
|
@@ -14801,6 +14801,29 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
$user_prompt .= "- 缺原稿时,模块内仅写“无法对比:未提供【原分段剧本】。”;无实质改动时仅写“无实质性改动。”,均保留分隔行。\n";
|
|
|
$user_prompt .= "- 输出前核验差异、位置、引用及对应关系,避免重复、遗漏或虚构。仅输出剧本正文与改动点模块,不输出分析、前言或总结。\n";
|
|
|
$user_prompt .= "- 除【分段剧本】与该【本集改动点】模块外,不得输出任何其它内容;两者缺一视为输出无效。\n";
|
|
|
+ } elseif ($isActIdMode) {
|
|
|
+ $user_prompt .= "\n\n【本片段改动点模块-必须输出】\n";
|
|
|
+ $user_prompt .= "- 在完整输出【分段剧本】(从“##片段1”开始,到该片段最后一个分镜结束)之后,必须再输出一个独立模块,严格按下列格式(两条分隔行必须原样输出,不得增删或改写任何字符):\n";
|
|
|
+ $user_prompt .= "#####本片段改动点#####\n";
|
|
|
+ $user_prompt .= "1.镜头Y:<标题>\n";
|
|
|
+ $user_prompt .= "· 原描述:<原文或忠实概括>。\n";
|
|
|
+ $user_prompt .= "· 修改为:<新稿原文或忠实概括>。\n";
|
|
|
+ $user_prompt .= "· 改动说明:<实际调整及文本可确认的影响>。\n";
|
|
|
+ $user_prompt .= "\n";
|
|
|
+ $user_prompt .= "2.镜头Y:<标题>\n";
|
|
|
+ $user_prompt .= "· 原描述:<原文或忠实概括>。\n";
|
|
|
+ $user_prompt .= "· 修改为:<新稿原文或忠实概括>。\n";
|
|
|
+ $user_prompt .= "· 改动说明:<实际调整及文本可确认的影响>。\n";
|
|
|
+ $user_prompt .= "#####本片段改动点结束#####\n";
|
|
|
+ $user_prompt .= "- 规则:\n";
|
|
|
+ $user_prompt .= " 1.“镜头Y”对应新稿中该片段的分镜编号(分镜Y 即 镜头Y);修改、新增、合并、拆分按新稿定位,删除按原稿定位并标“删除”。编号不同须注明原稿位置;无编号用可核实位置,禁止编造。\n";
|
|
|
+ $user_prompt .= " 2.一项一主题;连续镜头可用Y-Z,非连续位置逐一列明。只列实质改动,不单列标点、空格或不改含义的措辞。\n";
|
|
|
+ $user_prompt .= " 3.保留核验所需关键信息;引号内须为对应原文,概括不加引号、不增信息。不强认原稿有错或猜测创作意图。\n";
|
|
|
+ $user_prompt .= " 4.新增的原描述写“原稿无此内容”;删除的修改为写“已删除”;合并、拆分列明两版对应位置和关系。\n";
|
|
|
+ $user_prompt .= " 5.相邻改动点之间用一个空行分隔;分隔行与各改动点之间不空行。\n";
|
|
|
+ $user_prompt .= "- 缺原稿时,模块内仅写“无法对比:未提供【原分段剧本】。”;无实质改动时仅写“无实质性改动。”,均保留分隔行。\n";
|
|
|
+ $user_prompt .= "- 输出前核验差异、位置、引用及对应关系,避免重复、遗漏或虚构。仅输出剧本正文与改动点模块,不输出分析、前言或总结。\n";
|
|
|
+ $user_prompt .= "- 除【分段剧本】与该【本片段改动点】模块外,不得输出任何其它内容;两者缺一视为输出无效。\n";
|
|
|
}
|
|
|
|
|
|
$system_prompt = "\n\n【输出格式铁律-最高优先级】\n";
|
|
|
@@ -14821,6 +14844,8 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
$system_prompt .= "- 请仅生成<分段剧本>部分,不要生成其他任何内容:\n";
|
|
|
if ($episode_id > 0) {
|
|
|
$system_prompt .= "- 【整集模式唯一例外】必须在【分段剧本】之后追加【本集改动点】模块(含固定的起止分隔行“#####本集改动点##### / #####本集改动点结束#####”,格式见用户消息的【本集改动点模块-必须输出】);除该模块外不得输出其它任何内容。\n";
|
|
|
+ } elseif ($isActIdMode) {
|
|
|
+ $system_prompt .= "- 【单片段模式唯一例外】必须在【分段剧本】之后追加【本片段改动点】模块(含固定的起止分隔行“#####本片段改动点##### / #####本片段改动点结束#####”,格式见用户消息的【本片段改动点模块-必须输出】);除该模块外不得输出其它任何内容。\n";
|
|
|
}
|
|
|
$system_prompt .= "- 第一优先级:片段时长上限(单个片段不超过15秒,超过必须切为新片段)\n";
|
|
|
$system_prompt .= "- 每个分镜包含:分镜序号、出场角色、场景、出场道具、画面、运镜、配音台词、背景音效\n";
|
|
|
@@ -14926,15 +14951,16 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
|
|
|
$generated_content = $fullContent;
|
|
|
|
|
|
- // 整集模式:先抽出【本集改动点】模块写入 check_points,并从生成正文中剥离该模块,
|
|
|
- // 避免其内容干扰后续分段剧本的解析
|
|
|
+ // 先抽出【改动点】模块写入 check_points,并从生成正文中剥离该模块,
|
|
|
+ // 避免其内容干扰后续分段剧本的解析(整集模式为“本集改动点”,单片段模式为“本片段改动点”)
|
|
|
$check_points = '';
|
|
|
- if ($episode_id > 0) {
|
|
|
- if (preg_match('/#####\s*本集改动点\s*#####(.*?)(?:#####\s*本集改动点结束\s*#####|$)/su', $generated_content, $cpMatch)) {
|
|
|
+ if ($episode_id > 0 || $isActIdMode) {
|
|
|
+ if (preg_match('/#####\s*本(?:集|片段)改动点\s*#####(.*?)(?:#####\s*本(?:集|片段)改动点结束\s*#####|$)/su', $generated_content, $cpMatch)) {
|
|
|
$check_points = trim($cpMatch[1]);
|
|
|
$generated_content = trim(str_replace($cpMatch[0], '', $generated_content));
|
|
|
} else {
|
|
|
- dLog('deepseek')->warning('regenerateSegmentScript 未找到【本集改动点】模块', [
|
|
|
+ dLog('deepseek')->warning('regenerateSegmentScript 未找到【改动点】模块', [
|
|
|
+ 'act_id' => $act_id,
|
|
|
'episode_id' => $episode_id,
|
|
|
'content_length' => mb_strlen($generated_content),
|
|
|
'content_tail' => mb_substr($generated_content, -300),
|
|
|
@@ -15213,6 +15239,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
'act_title' => getProp($new_segment, 'act_title', ''),
|
|
|
'act_duration' => getProp($new_segment, 'act_duration', 0),
|
|
|
'act_content' => getProp($new_segment, 'act_show_content', ''),
|
|
|
+ 'check_points' => $check_points,
|
|
|
];
|
|
|
}
|
|
|
|
|
|
@@ -15400,8 +15427,8 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
'is_generated' => getProp($episode, 'is_generated', 0),
|
|
|
'acts' => $saved_acts,
|
|
|
];
|
|
|
- // 整集模式(episode_id>0):附带本集改动点 (从生成结果中抽出的独立模块)
|
|
|
- if ($episode_id > 0) {
|
|
|
+ // 附带改动点(从生成结果中抽出的独立模块):整集模式为“本集改动点”,单片段模式为“本片段改动点”
|
|
|
+ if ($episode_id > 0 || $isActIdMode) {
|
|
|
$result['check_points'] = $check_points;
|
|
|
}
|
|
|
return $result;
|