diff --git a/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs b/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs index b8d345e..fa58041 100644 --- a/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs +++ b/VideoAnalysisCore/AICore/GPT/DeepSeek/DeepSeek_GPT.cs @@ -63,7 +63,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek this.chatGPTClient = chatGPTClient; } /// - /// 获取内容对应的章节 + /// 获取分段内容对应的章节知识点 /// /// private async Task> GetVideoKnow(VideoKnowRes[] questionRes, VideoTask taskInfo, @@ -90,16 +90,22 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek $"提供的知识点名称({knows})。"; await redisManager.AddTaskLog(taskInfo.Id, DateTime.Now + "=>2.开始分析视频内容知识点"); VideoKnowRes[] konwRes; - for (int i = 0; i < 5; i++) + var knowOK = false; + for (int i = 0; i < 4; i++) { konwRes = await chatGPTClient.ChatAsync(taskInfo.Id.ToString(), knowMessages, "知识点"); // 分析结果的片段数量与预期不匹配 if (questionRes.Length != konwRes.Length) continue; for (int xi = 0; xi < konwRes.Count(); xi++) - questionRes[i].KnowPoint = konwRes[i].KnowPoint; + questionRes[xi].KnowPoint = konwRes[xi].KnowPoint; + knowOK = true; break; } - + if (!knowOK) + { + await redisManager.AddTaskLog(taskInfo.Id,"GPT未能分析出有效的分段的知识点"); + throw new Exception("GPT未能分析出有效的分段的知识点"); + } //todo 未包含的知识点片段 如何处理 @@ -189,13 +195,13 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek 核心任务: 请根据我提供的【视频分段方案】【完整字幕文本】【完整字幕文本】,对该分段方案进行严谨评估。 评估维度与具体标准: 时间间隔检查(硬性指标) - 严格检查每个分段与下一个分段的开始时间之间的间隔是否大于30秒。 + 严格检查每个分段与下一个分段的开始时间之间的间隔是否大于40秒。 输出要求:请列出所有不满足此条件的分段对,并说明具体的时间差。 内容结构与主题合理性: 主题凝聚力:评估单个分段内的内容是否围绕一个清晰、统一的主题展开,是否存在主题混杂或跳跃的情况。 逻辑过渡:评估分段之间的过渡是否自然流畅,后一段是否是前一段内容的合理延伸或转折。 - 知识点分配:检查分段内的知识点是否与分段有关联,知识点分布是否合理。 - 综合评分与改进建议: + 知识点分配:检查分段内的知识点是否与分段内容有关联,知识点分配给这个分段是否合理(这项很重要)。 + 综合评分: 请基于以上分析,提供一个0-100的综合得分(70分及格)。 详细说明打分理由,并逐条对应到上述评估维度。 输入数据格式说明: @@ -640,7 +646,8 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek $"输出内容只返回json格式为({resFormat})" + $"以下是字幕内容" + $"`{captions.Captions}`"; - var resData = await chatClient.ChatAsync(taskInfo.Id.ToString(), postMessages, "视频类型", "deepseek-chat"); + //var resData = await chatClient.ChatAsync(taskInfo.Id.ToString(), postMessages, "视频类型", "deepseek-chat"); + var resData = await chatGPTClient.ChatAsync(taskInfo.Id.ToString(), postMessages, "视频类型"); var res = resData.VideoType.ToEnum(); if (res != null) { diff --git a/VideoAnalysisCore/Common/RedisExpand.cs b/VideoAnalysisCore/Common/RedisExpand.cs index bda37df..3a131b6 100644 --- a/VideoAnalysisCore/Common/RedisExpand.cs +++ b/VideoAnalysisCore/Common/RedisExpand.cs @@ -112,17 +112,6 @@ namespace VideoAnalysisCore.Common FFMPGE = fFMPGE; this.senseVoice = senseVoice; this.redisManager = redisManager; - - for (int i = 1; i < 999; i++) - { - redisManager.AddTaskLog(-1, $"测试日志 {i}"); - } - - - - - - Init(); redisManager.InitChannel(); } @@ -372,7 +361,9 @@ namespace VideoAnalysisCore.Common if (Redis is null) throw new Exception("redis未初始化"); //处理之前程序结束前未能执行完的情况 var oldTaskCount = Redis.LLen(RedisExpandKey.IDTask); - if (oldTaskCount > 0) + //重试任务并发过多可能会导致程序崩溃 + // 未能重新分析的中断任务 则单独开一个网页来处理 + if (oldTaskCount > 0 && oldTaskCount < 10) { var oldTaskArr = Redis.LRange(RedisExpandKey.IDTask, 0, oldTaskCount); //不自动清理未完成任务 等待执行完毕/失败后自动清理