Просмотр исходного кода

1.优化主体列表和场景列表提示词2.新增场景提示词字段3.调整解析接口

lh 2 месяцев назад
Родитель
Сommit
81e8c7eb62

+ 4 - 2
app/Console/Anime/AnimeCheckImgUrlCommand.php

@@ -266,7 +266,8 @@ class AnimeCheckImgUrlCommand extends Command
                         $description = !empty($episode_pic_prompt) ? trim((string)$episode_pic_prompt) : $episode_description;
                         
                         if ($art_style) {
-                            $description = "美术风格:\n{$art_style}\n主体描述:{$description}\n图片要求:图片侧重点是人物,不要出现场景或背景,并且只能生成一个人物";
+                            // $description = "美术风格:\n{$art_style}\n主体描述:{$description}\n图片要求:图片侧重点是人物,不要出现场景或背景,并且只能生成一个人物";
+                            $description = "主体描述:{$description}\n图片要求:图片侧重点是人物,不要出现场景或背景,并且只能生成一个人物";
                         }
 
                         $params = [
@@ -340,7 +341,8 @@ class AnimeCheckImgUrlCommand extends Command
                         $description = !empty($episode_pic_prompt) ? trim((string)$episode_pic_prompt) : $episode_description;
                         
                         if ($art_style) {
-                            $description = "美术风格:\n{$art_style}\n场景描述:{$description}\n图片要求: 图片侧重点是场景,生成的是场景环境图片,不要出现人物(此为第一优先要求)";
+                            // $description = "美术风格:\n{$art_style}\n场景描述:{$description}\n图片要求: 图片侧重点是场景,生成的是场景环境图片,不要出现人物(此为第一优先要求)";
+                            $description = "场景描述:{$description}\n图片要求: 图片侧重点是场景,生成的是场景环境图片,不要出现人物(此为第一优先要求)";
                         }
 
                         $params = [

+ 43 - 7
app/Libs/Helpers.php

@@ -2616,10 +2616,28 @@ function handleEpisodeContent($originalContent) {
             
             // 兼容中文冒号:和英文冒号:
             if (preg_match('/^([^::]+)[::](.+)$/u', $line, $sceneMatch)) {
-                $result['scenes'][] = [
-                    'scene' => trim($sceneMatch[1]),
-                    'description' => trim($sceneMatch[2])
+                $scene = trim($sceneMatch[1]);
+                $description = trim($sceneMatch[2]);
+                $picPrompt = null;
+                
+                // 检查描述末尾是否有{场景图片提示词}格式
+                if (preg_match('/^(.*?)\{([^}]+)\}\s*$/u', $description, $promptMatch)) {
+                    // 匹配格式:场景描述{场景图片提示词}
+                    $description = trim($promptMatch[1]);
+                    $picPrompt = trim($promptMatch[2]);
+                }
+                
+                $sceneData = [
+                    'scene' => $scene,
+                    'description' => $description
                 ];
+                
+                // 如果有场景图片提示词,添加到数组中
+                if ($picPrompt) {
+                    $sceneData['pic_prompt'] = $picPrompt;
+                }
+                
+                $result['scenes'][] = $sceneData;
             }
         }
     }
@@ -3211,12 +3229,30 @@ function parseScenesFromText(string $scenesText): array
         
         $line = str_replace(':', ':', $line);
         if (strstr($line, ':')) {
-            $line_arr = explode(':', $line);
+            $line_arr = explode(':', $line, 2);
             if (count($line_arr) == 2) {
-                $scenes[] = [
-                    'scene' => $line_arr[0],
-                    'description' => $line_arr[1],
+                $scene = trim($line_arr[0]);
+                $description = trim($line_arr[1]);
+                $picPrompt = null;
+                
+                // 检查描述末尾是否有{场景图片提示词}格式
+                if (preg_match('/^(.*?)\{([^}]+)\}\s*$/u', $description, $promptMatch)) {
+                    // 匹配格式:场景描述{场景图片提示词}
+                    $description = trim($promptMatch[1]);
+                    $picPrompt = trim($promptMatch[2]);
+                }
+                
+                $sceneData = [
+                    'scene' => $scene,
+                    'description' => $description,
                 ];
+                
+                // 如果有场景图片提示词,添加到数组中
+                if ($picPrompt) {
+                    $sceneData['pic_prompt'] = $picPrompt;
+                }
+                
+                $scenes[] = $sceneData;
             }
         }
     }

+ 8 - 4
app/Services/Anime/AnimeService.php

@@ -250,7 +250,8 @@ class AnimeService
             $pic_prompt = getProp($role, 'pic_prompt');
             $description = !empty($pic_prompt) ? trim((string)$pic_prompt) : getProp($role, 'description');
             
-            if ($art_style) $description = "美术风格:\n{$art_style}\n主体描述:{$description}\n图片要求:图片侧重点是人物,不要出现场景或背景,并且只能生成一个人物";
+            // if ($art_style) $description = "美术风格:\n{$art_style}\n主体描述:{$description}\n图片要求:图片侧重点是人物,不要出现场景或背景,并且只能生成一个人物";
+            if ($art_style) $description = "主体描述:{$description}\n图片要求:图片侧重点是人物,不要出现场景或背景,并且只能生成一个人物";
             // 参考图地址
             $ref_img_url = getProp($role, 'url');
             if ($ref_img_url) continue;     // 已有图片则跳过
@@ -308,7 +309,8 @@ class AnimeService
             $pic_prompt = getProp($scene, 'pic_prompt');
             $description = !empty($pic_prompt) ? trim((string)$pic_prompt) : getProp($scene, 'description');
             
-            if ($art_style) $description = "美术风格:\n{$art_style}\n\n场景描述:{$description}\n图片要求: 图片侧重点是场景,生成的是场景环境图片,不要出现人物(此为第一优先要求)";
+            // if ($art_style) $description = "美术风格:\n{$art_style}\n\n场景描述:{$description}\n图片要求: 图片侧重点是场景,生成的是场景环境图片,不要出现人物(此为第一优先要求)";
+            if ($art_style) $description = "场景描述:{$description}\n图片要求: 图片侧重点是场景,生成的是场景环境图片,不要出现人物(此为第一优先要求)";
             // 参考图地址
             $ref_img_url = getProp($scene, 'url');
             if ($ref_img_url) continue;     // 已有图片则跳过
@@ -3971,7 +3973,8 @@ class AnimeService
                     $description = !empty($role_pic_prompt) ? trim((string)$role_pic_prompt) : $role_description;
                     
                     if ($art_style) {
-                        $description = "美术风格:\n{$art_style}\n主体描述:{$description}\n图片要求:图片侧重点是人物,不要出现场景或背景,并且只能生成一个人物";
+                        // $description = "美术风格:\n{$art_style}\n主体描述:{$description}\n图片要求:图片侧重点是人物,不要出现场景或背景,并且只能生成一个人物";
+                        $description = "主体描述:{$description}\n图片要求:图片侧重点是人物,不要出现场景或背景,并且只能生成一个人物";
                     }
                     
                     $params = [
@@ -4043,7 +4046,8 @@ class AnimeService
                     $description = !empty($scene_pic_prompt) ? trim((string)$scene_pic_prompt) : $scene_description;
                     
                     if ($art_style) {
-                        $description = "美术风格:\n{$art_style}\n场景描述:{$description}\n图片要求: 图片侧重点是场景,生成的是场景环境图片,不要出现人物(此为第一优先要求)";
+                        // $description = "美术风格:\n{$art_style}\n场景描述:{$description}\n图片要求: 图片侧重点是场景,生成的是场景环境图片,不要出现人物(此为第一优先要求)";
+                        $description = "场景描述:{$description}\n图片要求: 图片侧重点是场景,生成的是场景环境图片,不要出现人物(此为第一优先要求)";
                     }
                     
                     $params = [

Разница между файлами не показана из-за своего большого размера
+ 360 - 37
app/Services/DeepSeek/DeepSeekService.php