|
|
@@ -2750,7 +2750,7 @@ class DeepSeekService
|
|
|
}
|
|
|
|
|
|
$systemPrompt = $is_single
|
|
|
- ? "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容输出单剧集完整策划稿。单剧集模式下,必须一次性输出可直接保存的大纲与完整分镜,不允许只输出大纲。
|
|
|
+ ? "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容输出单剧集完整策划稿(剧本大纲包括: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表><分镜剧本>,每个板块之间必须使用###分隔,#不能多也不能少)。单剧集模式下,必须一次性输出可直接保存的大纲与完整分镜,不允许只输出大纲。
|
|
|
强制要求:
|
|
|
1.你只负责与剧本相关的内容,如果用户输入与剧本无关的内容,请告知用户并拒绝继续回答,此为第一优先原则,不满足此原则就忽略其他要求并停止继续输出
|
|
|
2.如果用户输入修改美术风格、修改画风这类内容,请告知用户不可修改美术风格,并拒绝继续回答
|
|
|
@@ -2758,7 +2758,7 @@ class DeepSeekService
|
|
|
4.用户如果要求你帮忙写一个故事或者剧本,此类要求不属于与剧本无关,请帮助用户完成请求{$content_generation_requirement}
|
|
|
5.强制按照示例格式返回内容,不要更改格式或随意增加符号\n
|
|
|
普通要求:
|
|
|
- 1.剧集标题必须与文档内容高度相关,剧集序号是1。
|
|
|
+ 1.剧本名(必须生成)和剧集标题必须与文档内容高度相关,(其中剧集序号是1)。
|
|
|
2.{$mappedArtStyle_prompt}
|
|
|
2.<主体列表>中出现的主体必须尽可能统一,只允许同一个角色年龄段相差较大的情况下可重复,比如角色-少年、角色-青年、角色-中年、角色-老年这种情况,不得出现角色-愤怒、角色-隐忍、角色-求生等情绪和状态变化的同一角色;并且角色的样貌、形体及穿着描述尽可能详细
|
|
|
2.1<主体列表>的音色必须在以下音色中($timbres_content)选择,需要角色描述的年纪和性别选择,比如角色是青年男性就只能在北京小爷、阳光青年、傲娇霸总、优柔公子、解说小明、青涩小生、低音沉郁、亲切青年中选择,选好的音色放在描述的最后用{{}}框起来。
|
|
|
@@ -2870,9 +2870,10 @@ class DeepSeekService
|
|
|
4.用户如果要求你帮忙写一个故事或者剧本,此类要求不属于与剧本无关,请帮助用户完成请求{$content_generation_requirement}
|
|
|
5.强制按照示例格式返回内容,不要更改格式或随意增加符号\n
|
|
|
普通要求:\n
|
|
|
- 1.<主体列表>中出现的主体必须尽可能统一,只允许同一个角色年龄段相差较大的情况下可重复,比如梁萧-少年、梁萧-青年、梁萧-中年、梁萧-老年这种情况,不得出现梁萧-愤怒、梁萧-隐忍、梁萧-求生等情绪和状态变化的同一角色;并且角色的样貌、形体及穿着描述尽可能详细\n
|
|
|
- 2.{$mappedArtStyle_prompt}
|
|
|
- 2.<场景列表>与主体列表同理,需尽可能的对场景环境进行详细描述\n\n
|
|
|
+ 1.剧本名(必须生成)必须与文档内容高度相关
|
|
|
+ 2.<主体列表>中出现的主体必须尽可能统一,只允许同一个角色年龄段相差较大的情况下可重复,比如梁萧-少年、梁萧-青年、梁萧-中年、梁萧-老年这种情况,不得出现梁萧-愤怒、梁萧-隐忍、梁萧-求生等情绪和状态变化的同一角色;并且角色的样貌、形体及穿着描述尽可能详细
|
|
|
+ 3.{$mappedArtStyle_prompt}
|
|
|
+ 4.<场景列表>与主体列表同理,需尽可能的对场景环境进行详细描述\n\n
|
|
|
示例如下:\n
|
|
|
###剧本名:西昆仑
|
|
|
|
|
|
@@ -3114,60 +3115,59 @@ class DeepSeekService
|
|
|
// 新建动漫
|
|
|
if ($user_anime_name == '新剧本策划') {
|
|
|
$anime_name = getProp($script_arr, 'script_name');
|
|
|
- $origin_anime_name = $anime_name;
|
|
|
- if (!$anime_name) {
|
|
|
- // 未识别到剧本名,保存对话记录并返回提示
|
|
|
- dLog('deepseek')->info('未能识别到剧本名称');
|
|
|
- try {
|
|
|
- DB::beginTransaction();
|
|
|
- $now = date('Y-m-d H:i:s');
|
|
|
+ // if (!$anime_name) {
|
|
|
+ // // 未识别到剧本名,保存对话记录并返回提示
|
|
|
+ // dLog('deepseek')->info('未能识别到剧本名称');
|
|
|
+ // try {
|
|
|
+ // DB::beginTransaction();
|
|
|
+ // $now = date('Y-m-d H:i:s');
|
|
|
|
|
|
- // 保存对话记录
|
|
|
- $records = [
|
|
|
- [
|
|
|
- 'uid' => $uid,
|
|
|
- 'anime_id' => $anime_id,
|
|
|
- 'sequence' => 0,
|
|
|
- 'role' => 'user',
|
|
|
- 'content' => $prompt,
|
|
|
- 'created_at' => $now,
|
|
|
- 'updated_at' => $now
|
|
|
- ],
|
|
|
- [
|
|
|
- 'uid' => $uid,
|
|
|
- 'anime_id' => $anime_id,
|
|
|
- 'sequence' => 0,
|
|
|
- 'role' => 'assistant',
|
|
|
- 'content' => '未能生成剧本名称,请重试',
|
|
|
- 'created_at' => $now,
|
|
|
- 'updated_at' => $now
|
|
|
- ]
|
|
|
- ];
|
|
|
- DB::table('mp_anime_records')->insert($records);
|
|
|
- DB::commit();
|
|
|
- } catch (\Exception $e) {
|
|
|
- DB::rollBack();
|
|
|
- dLog('deepseek')->error('保存对话记录失败', ['error' => $e->getMessage()]);
|
|
|
- }
|
|
|
+ // // 保存对话记录
|
|
|
+ // $records = [
|
|
|
+ // [
|
|
|
+ // 'uid' => $uid,
|
|
|
+ // 'anime_id' => $anime_id,
|
|
|
+ // 'sequence' => 0,
|
|
|
+ // 'role' => 'user',
|
|
|
+ // 'content' => $prompt,
|
|
|
+ // 'created_at' => $now,
|
|
|
+ // 'updated_at' => $now
|
|
|
+ // ],
|
|
|
+ // [
|
|
|
+ // 'uid' => $uid,
|
|
|
+ // 'anime_id' => $anime_id,
|
|
|
+ // 'sequence' => 0,
|
|
|
+ // 'role' => 'assistant',
|
|
|
+ // 'content' => '未能生成剧本名称,请重试',
|
|
|
+ // 'created_at' => $now,
|
|
|
+ // 'updated_at' => $now
|
|
|
+ // ]
|
|
|
+ // ];
|
|
|
+ // DB::table('mp_anime_records')->insert($records);
|
|
|
+ // DB::commit();
|
|
|
+ // } catch (\Exception $e) {
|
|
|
+ // DB::rollBack();
|
|
|
+ // dLog('deepseek')->error('保存对话记录失败', ['error' => $e->getMessage()]);
|
|
|
+ // }
|
|
|
|
|
|
- yield [
|
|
|
- 'type' => 'done',
|
|
|
- 'script' => [],
|
|
|
- 'episode' => [],
|
|
|
- 'answer' => $fullContent,
|
|
|
- 'reasoning' => $fullReasoningContent,
|
|
|
- 'usage' => $usage,
|
|
|
- 'error' => '未能识别到剧本名称,请调整提示词再试'
|
|
|
- ];
|
|
|
- return;
|
|
|
- }
|
|
|
+ // yield [
|
|
|
+ // 'type' => 'done',
|
|
|
+ // 'script' => [],
|
|
|
+ // 'episode' => [],
|
|
|
+ // 'answer' => $fullContent,
|
|
|
+ // 'reasoning' => $fullReasoningContent,
|
|
|
+ // 'usage' => $usage,
|
|
|
+ // 'error' => '未能识别到剧本名称,请调整提示词再试'
|
|
|
+ // ];
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
|
|
|
// 确认对话名称唯一性
|
|
|
- if (DB::table('mp_animes')->where('anime_name', $anime_name)->value('id')) {
|
|
|
+ if ($anime_name && DB::table('mp_animes')->where('anime_name', $anime_name)->value('id')) {
|
|
|
$anime_name = $anime_name . '_' . date('YmdHis');
|
|
|
}
|
|
|
}else {
|
|
|
- $origin_anime_name = $anime_name = $user_anime_name;
|
|
|
+ $anime_name = $user_anime_name;
|
|
|
}
|
|
|
|
|
|
$table_data = [
|
|
|
@@ -3199,7 +3199,6 @@ class DeepSeekService
|
|
|
Utils::throwError('20003:动漫保存失败');
|
|
|
}
|
|
|
|
|
|
- // $record_content = '基于您的要求完成了《'.$origin_anime_name.'》大纲。请确认剧本大纲是否符合你的预期,我将根据该大纲开始策划详细剧本。';
|
|
|
// 保存对话记录
|
|
|
$records = [
|
|
|
[
|
|
|
@@ -3427,7 +3426,7 @@ class DeepSeekService
|
|
|
萌娃:奶气萌娃";
|
|
|
|
|
|
$system_message = ['role'=>'system', 'content'=>$is_single
|
|
|
- ? "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容输出单剧集完整策划稿。单剧集模式下,必须一次性输出可直接保存的大纲与完整分镜,不允许只输出大纲。
|
|
|
+ ? "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容输出单剧集完整策划稿(剧本大纲包括: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表><分镜剧本>,每个板块之间必须使用###分隔,#不能多也不能少)。单剧集模式下,必须一次性输出可直接保存的大纲与完整分镜,不允许只输出大纲。
|
|
|
强制要求:
|
|
|
1.你只负责与剧本相关的内容,如果用户输入与剧本无关的内容,请告知用户并拒绝继续回答,此为第一优先原则,不满足此原则就忽略其他要求并停止继续输出
|
|
|
2.如果用户输入修改美术风格、修改画风这类内容,请告知用户不可修改美术风格,并拒绝继续回答
|
|
|
@@ -3435,7 +3434,7 @@ class DeepSeekService
|
|
|
4.用户如果要求你帮忙写一个故事或者剧本,此类要求不属于与剧本无关,请帮助用户完成请求{$content_generation_requirement}
|
|
|
5.强制按照示例格式返回内容,不要更改格式或随意增加符号\n
|
|
|
普通要求:
|
|
|
- 1.剧集标题必须与文档内容高度相关,剧集序号是1。
|
|
|
+ 1.剧本名(必须生成)和剧集标题必须与文档内容高度相关,(其中剧集序号是1)。
|
|
|
2.<主体列表>中出现的主体必须尽可能统一,只允许同一个角色年龄段相差较大的情况下可重复,比如角色-少年、角色-青年、角色-中年、角色-老年这种情况,不得出现角色-愤怒、角色-隐忍、角色-求生等情绪和状态变化的同一角色;并且角色的样貌、形体及穿着描述尽可能详细
|
|
|
2.1<主体列表>的音色必须在以下音色中($timbres_content)选择,需要角色描述的年纪和性别选择,比如角色是青年男性就只能在北京小爷、阳光青年、傲娇霸总、优柔公子、解说小明、青涩小生、低音沉郁、亲切青年中选择,选好的音色放在描述的最后用{{}}框起来。
|
|
|
3.2.<场景列表>与主体列表同理,需尽可能的对场景环境进行详细描述
|
|
|
@@ -3546,8 +3545,9 @@ class DeepSeekService
|
|
|
4.用户如果要求你帮忙写一个故事或者剧本,此类要求不属于与剧本无关,请帮助用户完成请求{$content_generation_requirement}
|
|
|
5.强制按照示例格式返回内容,不要更改格式或随意增加符号\n
|
|
|
普通要求:\n
|
|
|
- 1.<主体列表>中出现的主体必须尽可能统一,只允许同一个角色年龄段相差较大的情况下可重复,比如梁萧-少年、梁萧-青年、梁萧-中年、梁萧-老年这种情况,不得出现梁萧-愤怒、梁萧-隐忍、梁萧-求生等情绪和状态变化的同一角色;并且角色的样貌、形体及穿着描述尽可能详细\n
|
|
|
- 2.<场景列表>与主体列表同理,需尽可能的对场景环境进行详细描述\n\n
|
|
|
+ 1.剧本名(必须生成)必须与文档内容高度相关
|
|
|
+ 2.<主体列表>中出现的主体必须尽可能统一,只允许同一个角色年龄段相差较大的情况下可重复,比如梁萧-少年、梁萧-青年、梁萧-中年、梁萧-老年这种情况,不得出现梁萧-愤怒、梁萧-隐忍、梁萧-求生等情绪和状态变化的同一角色;并且角色的样貌、形体及穿着描述尽可能详细\n
|
|
|
+ 3.<场景列表>与主体列表同理,需尽可能的对场景环境进行详细描述\n\n
|
|
|
示例如下:\n
|
|
|
###剧本名:西昆仑
|
|
|
|