|
|
@@ -8576,15 +8576,19 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
// $system_prompt = "你是一个专业的剧本编剧和影视导演,擅长根据已有的分段剧本进行优化和调整。你需要严格按照用户的要求重新生成分段剧本内容,保持原有的格式和结构。";
|
|
|
|
|
|
$user_prompt = "请根据以下要求重新生成分段剧本:\n\n【用户要求】\n{$final_prompt}";
|
|
|
- $user_prompt .= "\n\n【原分段剧本内容】\n{$reference_content}";
|
|
|
$user_prompt .= $intro_ref;
|
|
|
$user_prompt .= $art_style_ref;
|
|
|
$user_prompt .= $roles_ref;
|
|
|
$user_prompt .= $scenes_ref;
|
|
|
|
|
|
$system_prompt = "\n\n【强制要求】\n";
|
|
|
- $system_prompt .= "- 请仅生成<分段剧本>部分,格式强制设置如下,不要生成其他任何内容:";
|
|
|
- $system_prompt .= "###分段剧本
|
|
|
+ $system_prompt .= "- 请仅生成<分段剧本>部分,不要生成其他任何内容:";
|
|
|
+ $system_prompt .= "- 每个分镜包含:分镜序号、场景、画面、运镜、配音台词、背景音效\n";
|
|
|
+ $system_prompt .= "- 场景必须从【场景列表参考】中选择(如果提供了场景列表)\n";
|
|
|
+ $system_prompt .= "- 出场角色必须从【主体列表参考】中选择(如果提供了主体列表)\n";
|
|
|
+ $system_prompt .= "- 保持美术风格的一致性(如果提供了美术风格参考)\n";
|
|
|
+ $system_prompt .= "- 参考示例格式如下,此为第一优先规则,必须按以下格式生成内容,请忽略其他任何提示词部分关于规则的描述:
|
|
|
+ ###分段剧本
|
|
|
片段数量:8
|
|
|
旁白音色:成年男性(约35-50岁),音色厚重且富有磁性,带有老电影叙事般的沧桑感,语调低沉平稳,富有江湖气息。
|
|
|
|
|
|
@@ -8625,18 +8629,17 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
运镜:固定机位,利用倾斜构图制造压迫感。
|
|
|
配音台词:中文配音:[刀疤脸]老李头,这酒里掺水了吧?
|
|
|
背景音效:";
|
|
|
- $system_prompt .= "- 每个分镜包含:分镜序号、场景、画面、运镜、配音台词、背景音效\n";
|
|
|
- $system_prompt .= "- 场景必须从【场景列表参考】中选择(如果提供了场景列表)\n";
|
|
|
- $system_prompt .= "- 出场角色必须从【主体列表参考】中选择(如果提供了主体列表)\n";
|
|
|
- $system_prompt .= "- 保持美术风格的一致性(如果提供了美术风格参考)\n";
|
|
|
|
|
|
// 获取模型配置
|
|
|
- $anime = DB::table('mp_animes')->where('id', $target_anime_id)->first();
|
|
|
- $model = $anime ? ($anime->model ?? 'doubao-seed-2-0-mini-260215') : 'doubao-seed-2-0-mini-260215';
|
|
|
+ $model = getProp($data, 'model');
|
|
|
+ if (!$model) {
|
|
|
+ $anime = DB::table('mp_animes')->where('id', $target_anime_id)->first();
|
|
|
+ $model = $anime ? ($anime->model ?? 'deepseek-v4-pro') : 'deepseek-v4-pro';
|
|
|
+ }
|
|
|
|
|
|
// 验证模型是否在可用模型表中
|
|
|
if (!DB::table('mp_text_models')->where('model', $model)->where('is_enabled', 1)->exists()) {
|
|
|
- $model = 'doubao-seed-2-0-mini-260215';
|
|
|
+ $model = 'deepseek-v4-pro';
|
|
|
}
|
|
|
|
|
|
// 模型兼容性处理
|
|
|
@@ -8749,6 +8752,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
$content_lines = explode("\n", $actContent);
|
|
|
$is_capturing = false; // 标记是否开始捕获分镜内容
|
|
|
|
|
|
+ $count = 0;
|
|
|
foreach ($content_lines as $line) {
|
|
|
$trimmed_line = trim($line);
|
|
|
|
|
|
@@ -8760,17 +8764,19 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
|
|
|
// 检测是否是分镜开始
|
|
|
// 支持格式:【分镜X】、【镜头X】、分镜X、镜头X
|
|
|
if (preg_match('/^(?:【)?(分镜|镜头)(\d+)(?:】)?/u', $trimmed_line, $shot_match)) {
|
|
|
+ $count++;
|
|
|
$is_capturing = true;
|
|
|
|
|
|
// 如果没有【】,则添加
|
|
|
if (!preg_match('/^【/u', $trimmed_line)) {
|
|
|
$trimmed_line = preg_replace('/^(分镜|镜头)(\d+)/u', '【$1$2】', $trimmed_line);
|
|
|
}
|
|
|
+ if ($count > 1) $trimmed_line = "\n".$trimmed_line;
|
|
|
}
|
|
|
|
|
|
// 如果已经开始捕获,则添加该行
|
|
|
if ($is_capturing && !empty($trimmed_line)) {
|
|
|
- $cleaned_content .= $trimmed_line;
|
|
|
+ $cleaned_content .= $trimmed_line."\n";
|
|
|
}
|
|
|
}
|
|
|
|