Kaynağa Gözat

修复分集重新生成片段剧本的排版问题

lh 1 ay önce
ebeveyn
işleme
2521a9121d
1 değiştirilmiş dosya ile 17 ekleme ve 11 silme
  1. 17 11
      app/Services/DeepSeek/DeepSeekService.php

+ 17 - 11
app/Services/DeepSeek/DeepSeekService.php

@@ -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";
                     }
                 }