From 99f7601184c9a5d7d57bbbe730e2ee0ace09b676 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com>
Date: Mon, 3 Nov 2025 16:29:53 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E5=88=86=E6=9E=90?=
=?UTF-8?q?=E7=9F=A5=E8=AF=86=E7=82=B9bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../AICore/GPT/DeepSeek/DeepSeek_GPT.cs | 23 ++++++++++++-------
VideoAnalysisCore/Common/RedisExpand.cs | 15 +++---------
2 files changed, 18 insertions(+), 20 deletions(-)
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);
//不自动清理未完成任务 等待执行完毕/失败后自动清理