|
|
@@ -40,7 +40,7 @@ class DeepSeekService
|
|
|
$this->valid_text_models = DB::table('mp_text_models')->where('is_enabled', 1)->pluck('model')->toArray();
|
|
|
$this->sys_message = [
|
|
|
'role' => 'system',
|
|
|
- 'content' => "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容完成示例格式的内容输出(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表><分集剧本>,每个板块之间用###分隔;同时板块之间需满足以下要求:\n
|
|
|
+ 'content' => "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容完成示例格式的内容输出(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表><分集剧本>,每个板块之间必须使用###分隔,#不能多也不能少;同时板块之间需满足以下要求:\n
|
|
|
强制要求:\n
|
|
|
1.你只负责与剧本相关的内容,如果用户输入与剧本无关的内容,请告知用户并拒绝继续回答,此为第一优先原则,不满足此原则就忽略其他要求并停止继续输出
|
|
|
2.用户如果直接给了你一本小说或者要求你帮忙写一个故事或者剧本,此类要求不属于与剧本无关,请帮助用户完成请求
|
|
|
@@ -1790,7 +1790,7 @@ class DeepSeekService
|
|
|
$messages = [
|
|
|
[
|
|
|
'role' => 'system',
|
|
|
- 'content' => "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容完成示例格式的内容输出(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表>,每个板块之间用###分隔;同时板块之间需满足以下要求:\n
|
|
|
+ 'content' => "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容完成示例格式的内容输出(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表>,每个板块之间必须使用###分隔,#不能多也不能少;同时板块之间需满足以下要求:\n
|
|
|
强制要求:\n
|
|
|
1.你只负责与剧本相关的内容,如果用户输入与剧本无关的内容,请告知用户并拒绝继续回答,此为第一优先原则,不满足此原则就忽略其他要求并停止继续输出
|
|
|
2.用户如果直接给了你一本小说或者要求你帮忙写一个故事或者剧本,此类要求不属于与剧本无关,请帮助用户完成请求
|
|
|
@@ -2109,11 +2109,49 @@ class DeepSeekService
|
|
|
}
|
|
|
|
|
|
public function saveEpisodeContent($data) {
|
|
|
+ $script_id = getProp($data, 'script_id');
|
|
|
$group_id = getProp($data, 'group_id');
|
|
|
+ $start_episode_sequence = getProp($data, 'start_episode_number');
|
|
|
+ $end_episode_sequence = getProp($data, 'end_episode_number');
|
|
|
+
|
|
|
+ // 检查是否存在重叠的剧集序号范围
|
|
|
+ $exists_groups = DB::table('mp_script_episode_group')
|
|
|
+ ->where('script_id', $script_id)
|
|
|
+ ->where('id', '<>', $group_id) // 排除当前组
|
|
|
+ ->where('is_deleted', 0)
|
|
|
+ ->where(function($query) use ($start_episode_sequence, $end_episode_sequence) {
|
|
|
+ // 检查新范围是否与现有范围重叠
|
|
|
+ $query->where(function($q) use ($start_episode_sequence, $end_episode_sequence) {
|
|
|
+ // 新范围的开始在现有范围内
|
|
|
+ $q->where('start_episode_number', '<=', $start_episode_sequence)
|
|
|
+ ->where('end_episode_number', '>=', $start_episode_sequence);
|
|
|
+ })->orWhere(function($q) use ($start_episode_sequence, $end_episode_sequence) {
|
|
|
+ // 新范围的结束在现有范围内
|
|
|
+ $q->where('start_episode_number', '<=', $end_episode_sequence)
|
|
|
+ ->where('end_episode_number', '>=', $end_episode_sequence);
|
|
|
+ })->orWhere(function($q) use ($start_episode_sequence, $end_episode_sequence) {
|
|
|
+ // 新范围完全包含现有范围
|
|
|
+ $q->where('start_episode_number', '>=', $start_episode_sequence)
|
|
|
+ ->where('end_episode_number', '<=', $end_episode_sequence);
|
|
|
+ });
|
|
|
+ })
|
|
|
+ ->select('start_episode_number', 'end_episode_number')
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ if ($exists_groups->isNotEmpty()) {
|
|
|
+ $conflict_ranges = [];
|
|
|
+ foreach ($exists_groups as $group) {
|
|
|
+ $conflict_ranges[] = "第{$group->start_episode_number}-{$group->end_episode_number}集";
|
|
|
+ }
|
|
|
+ Utils::throwError('20003:剧集序号范围与已存在的剧集组重叠: '.implode('、', $conflict_ranges).',不得创建!');
|
|
|
+ }
|
|
|
+
|
|
|
$episode_content = getProp($data, 'episode_content');
|
|
|
|
|
|
- return DB::table('mp_script_episode_group')->where('id', $group_id)->update([
|
|
|
+ return DB::table('mp_script_episode_group')->where('id', $group_id)->where('script_id', $script_id)->update([
|
|
|
'content' => $episode_content,
|
|
|
+ 'start_episode_number' => $start_episode_sequence,
|
|
|
+ 'end_episode_number' => $end_episode_sequence,
|
|
|
'updated_at' => date('Y-m-d H:i:s')
|
|
|
]);
|
|
|
|
|
|
@@ -2813,7 +2851,7 @@ class DeepSeekService
|
|
|
画面类型:普通画面
|
|
|
尾帧描述:固定镜头。光影在火车票表面微微晃动,强调其陈旧的纸张纹理与关键的行程信息。\n
|
|
|
"
|
|
|
- : "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容及下面提供的示例格式完成剧本大纲(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表>,每个板块之间用###分隔;同时板块之间需满足以下要求:\n
|
|
|
+ : "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容及下面提供的示例格式完成剧本大纲(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表>,每个板块之间必须使用###分隔,#不能多也不能少;同时板块之间需满足以下要求:\n
|
|
|
强制要求:\n
|
|
|
1.你只负责与剧本相关的内容,如果用户输入与剧本无关的内容,请告知用户并拒绝继续回答,此为第一优先原则,不满足此原则就忽略其他要求并停止继续输出
|
|
|
2.如果用户输入修改美术风格、修改画风这类内容,请告知用户不可修改美术风格,并拒绝继续回答
|
|
|
@@ -3442,7 +3480,7 @@ class DeepSeekService
|
|
|
画面类型:普通画面
|
|
|
尾帧描述:固定镜头。光影在火车票表面微微晃动,强调其陈旧的纸张纹理与关键的行程信息。\n
|
|
|
"
|
|
|
- : "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容及下面提供的示例格式完成剧本大纲(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表>,每个板块之间用###分隔;同时板块之间需满足以下要求:\n
|
|
|
+ : "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容及下面提供的示例格式完成剧本大纲(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表>,每个板块之间必须使用###分隔,#不能多也不能少;同时板块之间需满足以下要求:\n
|
|
|
强制要求:\n
|
|
|
1.你只负责与剧本相关的内容,如果用户输入与剧本无关的内容,请告知用户并拒绝继续回答,此为第一优先原则,不满足此原则就忽略其他要求并停止继续输出
|
|
|
2.如果用户输入修改美术风格、修改画风这类内容,请告知用户不可修改美术风格,并拒绝继续回答
|
|
|
@@ -3504,7 +3542,7 @@ class DeepSeekService
|
|
|
$question = "请根据实例格式完成{$episode_count}集剧本大纲";
|
|
|
$system_message = [
|
|
|
'role' => 'system',
|
|
|
- 'content' => "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容及下面提供的示例格式完成剧本大纲(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表><分集详细内容>,每个板块之间用###分隔;同时板块之间需满足以下要求:\n
|
|
|
+ 'content' => "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容及下面提供的示例格式完成剧本大纲(需通过以下几个板块进行回复: <故事梗概><剧本亮点><人物关系><核心矛盾><主体列表><美术风格><场景列表><分集详细内容>,每个板块之间必须使用###分隔,#不能多也不能少;同时板块之间需满足以下要求:\n
|
|
|
强制要求:\n
|
|
|
1.你只负责与剧本相关的内容,如果用户输入与剧本无关的内容,请告知用户并拒绝继续回答,此为第一优先原则,不满足此原则就忽略其他要求并停止继续输出
|
|
|
2.如果用户输入修改美术风格、修改画风这类内容,请告知用户不可修改美术风格,并拒绝继续回答
|
|
|
@@ -3981,7 +4019,7 @@ class DeepSeekService
|
|
|
}
|
|
|
|
|
|
$prompt = trim((string)getProp($data, 'prompt', '确认分镜大纲'));
|
|
|
- $demo = "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容完成示例格式的内容输出(需包含以下几个板块: <剧集标题><故事梗概><美术风格><主体列表><场景列表><分镜剧本>,每个板块之间用###分隔;同时板块之间需满足以下要求:\n
|
|
|
+ $demo = "你是一个专业的文档分析助手及资深编剧,请根据用户提供的文档内容完成示例格式的内容输出(需包含以下几个板块: <剧集标题><故事梗概><美术风格><主体列表><场景列表><分镜剧本>,每个板块之间必须使用###分隔,#不能多也不能少;同时板块之间需满足以下要求:\n
|
|
|
强制要求:
|
|
|
1.你只负责与剧本相关的内容,如果用户输入与剧本无关的内容,请告知用户并拒绝继续回答,此为第一优先原则,不满足此原则就忽略其他要求并停止继续输出
|
|
|
2.如果用户输入修改美术风格、修改画风这类内容,请告知用户不可修改美术风格,并拒绝继续回答
|