From cbb6315face43557807b6488bfae8b098a69657c 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, 13 Jan 2025 18:22:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Pages/VideoTaskPage.razor | 4 +-- .../Components/Pages/VideoTaskShow.razor | 1 + VideoAnalysis/Controllers/ApiController.cs | 2 +- VideoAnalysis/Controllers/Dto/ApiDto.cs | 4 +-- .../AICore/GPT/ChatGPT/Chat_GPT.cs | 31 ++++++++++--------- .../AICore/GPT/Dto/QuestionRes.cs | 4 +++ 6 files changed, 25 insertions(+), 21 deletions(-) diff --git a/VideoAnalysis/Components/Pages/VideoTaskPage.razor b/VideoAnalysis/Components/Pages/VideoTaskPage.razor index 02f68a9..8e649fb 100644 --- a/VideoAnalysis/Components/Pages/VideoTaskPage.razor +++ b/VideoAnalysis/Components/Pages/VideoTaskPage.razor @@ -19,11 +19,11 @@ - + + - diff --git a/VideoAnalysis/Components/Pages/VideoTaskShow.razor b/VideoAnalysis/Components/Pages/VideoTaskShow.razor index 99c6d36..581d25d 100644 --- a/VideoAnalysis/Components/Pages/VideoTaskShow.razor +++ b/VideoAnalysis/Components/Pages/VideoTaskShow.razor @@ -4,6 +4,7 @@ @if (videoKnows != null) {
+

@nowTask.MediaName

@for (int i = 0; i < videoKnows.Length; i++) { var item = videoKnows[i]; diff --git a/VideoAnalysis/Controllers/ApiController.cs b/VideoAnalysis/Controllers/ApiController.cs index 24ac22e..e6e8afc 100644 --- a/VideoAnalysis/Controllers/ApiController.cs +++ b/VideoAnalysis/Controllers/ApiController.cs @@ -205,7 +205,7 @@ namespace Learn.VideoAnalysis.Controllers Subject = req.Subject, Tag = req.Tag, TagId = req.TagId, - MediaName = req.MediaName + MediaName = req.Name }; // task.Id = await videoTaskDB.InsertReturnBigIdentityAsync(task); diff --git a/VideoAnalysis/Controllers/Dto/ApiDto.cs b/VideoAnalysis/Controllers/Dto/ApiDto.cs index 361207b..5a1f5b1 100644 --- a/VideoAnalysis/Controllers/Dto/ApiDto.cs +++ b/VideoAnalysis/Controllers/Dto/ApiDto.cs @@ -15,14 +15,12 @@ namespace Learn.VideoAnalysis.Controllers.Dto /// 媒体路径 /// [Required(ErrorMessage = "资源URL是必填项")] - [Url(ErrorMessage = "请输入有效的 URL")] public string MediaUrl { get; set; } = string.Empty; /// /// 资源名称 /// [Required(ErrorMessage = "资源名称是必要的")] - [Url(ErrorMessage = "请输入有效的 资源名称")] - public string MediaName { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; /// /// ApiKey /// diff --git a/VideoAnalysisCore/AICore/GPT/ChatGPT/Chat_GPT.cs b/VideoAnalysisCore/AICore/GPT/ChatGPT/Chat_GPT.cs index c64144f..a828c38 100644 --- a/VideoAnalysisCore/AICore/GPT/ChatGPT/Chat_GPT.cs +++ b/VideoAnalysisCore/AICore/GPT/ChatGPT/Chat_GPT.cs @@ -80,11 +80,11 @@ namespace VideoAnalysisCore.AICore.GPT.ChatGPT .Where(s => s.Course_Id == 27 && s.Depth == 2) .Select(s => s.Name).ToArrayAsync(); - string title = "周三(1.3)《第八章——统计与概率:超几何分布的极限为二项分布》"; + string title = taskInfo.MediaName; var fileNameResFormat = "{授课章节: string|null, 授课内容:string}"; var fileNamePostMessages = title + " 这是一堂课的标题,请你帮我分析一些关于课堂方面的内容." + - $"1.分析出高中{subject}课堂授课的主要章节(例如 章节: 数列),章节范围限定在[{xkwKnows}]范围." + + $"1.分析出高中{subject}课堂授课的主要章节(例如 章节: 数列),章节范围限定在[{string.Join(',', xkwKnows)}]范围." + $"2.分析出这堂课的主要授课内容." + $"输出格式 json字符串 对象格式{fileNameResFormat}"; var fileNameInfoRes = await ChatAsync(task, fileNamePostMessages, fileNameResFormat); @@ -92,7 +92,7 @@ namespace VideoAnalysisCore.AICore.GPT.ChatGPT var captions = ExpandFunction.GetSpeakerCaptions(task); var criteriaBuilder = new StringBuilder(); - var resFormat = """[{"StartTime":开始秒(number),"EndTime":结束秒(number),"Section":章节(string),"Theme":主题(string),"Content":内容总结(string)}]"""; + var resFormat = """[{"StartTime":开始秒(number),"EndTime":结束秒(number),"Section":章节(string),"Theme":主题(string),"NewTheme":新主题(string),"Content":内容总结(string)}]"""; var know = await knowledgeInfoDB.GetFirstAsync(s => s.Name == fileNameInfoRes.授课章节); var knowledgeInfos = await knowledgeInfoDB.AsQueryable().ToChildListAsync(s => s.Parent_Id, know.Id); var knows = "数列的概念,数列的定义,项的表示,数列的表示方法,通项公式,递推公式,图像表示,数列的类型,等差数列,等比数列,其他特殊数列,数列的性质,单调性,有限性,数列的求和,等差数列求和公式,等比数列求和公式,数列极限,递推关系"; @@ -107,6 +107,7 @@ namespace VideoAnalysisCore.AICore.GPT.ChatGPT $"4.关联合并相似的知识点来合并为内容片段。" + $"内容片段使用关联知识点中的最小(开始秒)和(最大)结束秒,主题为关联知识点的主题分析,内容总结为关联知识点的内容总结分析。" + $"延长内容片段时间区间来获取更加详细的上下文。" + + $"基于内容片段的内容总结加上主题来分析这个片段对主题的讲解内容为新的主题 例(数列的基本概念)。" + $"输入:包含时间戳的视频字幕文本。" + $"以下是包含时间的视频字幕文本。" + $"字幕格式(说话人:开始秒:结束秒:内容|下一段字幕).字幕列表 {captions.Captions}" + @@ -130,20 +131,20 @@ namespace VideoAnalysisCore.AICore.GPT.ChatGPT await RedisExpand.Redis .HMSetAsync(RedisExpandKey.Task(task), "VideoKnows", questionRes); - var postMessages1 = - $"你的任务是分析json内容并合并含义相似的主题为新的主题" + - $"按以下步骤完成:" + - $"1.合理合并主题字段重复相似的对象为新的json对象,确保内容的连贯性和逻辑性。" + - $"2.合并对象属性持续时间低于60秒的对象" + - $"3.结构化输出。" + - $"输入:json对象 包含总结开始秒,结束秒,持续时间,主题,章节,内容总结" + - $"以下是包含json内容的文本。" + - $" {JsonSerializer.Serialize(questionRes)}" + - $"返回固定的JSON格式({resFormat})"; + //var postMessages1 = + // $"你的任务是分析json内容并合并含义相似的主题为新的主题" + + // $"按以下步骤完成:" + + // $"1.合理合并主题字段重复相似的对象为新的json对象,确保内容的连贯性和逻辑性。" + + // $"2.合并对象属性持续时间低于60秒的对象" + + // $"3.结构化输出。" + + // $"输入:json对象 包含总结开始秒,结束秒,持续时间,主题,章节,内容总结" + + // $"以下是包含json内容的文本。" + + // $" {JsonSerializer.Serialize(questionRes)}" + + // $"返回固定的JSON格式({resFormat})"; - var questionRes1 = await ChatAsync(task, postMessages1, resFormat); - //questionRes1 = MergeRes(questionRes1).ToArray(); + //var questionRes1 = await ChatAsync(task, postMessages1, resFormat); + ////questionRes1 = MergeRes(questionRes1).ToArray(); var gptRes = new TaskRes(captions); await RedisExpand.Redis diff --git a/VideoAnalysisCore/AICore/GPT/Dto/QuestionRes.cs b/VideoAnalysisCore/AICore/GPT/Dto/QuestionRes.cs index 2519d60..2db7867 100644 --- a/VideoAnalysisCore/AICore/GPT/Dto/QuestionRes.cs +++ b/VideoAnalysisCore/AICore/GPT/Dto/QuestionRes.cs @@ -26,6 +26,10 @@ namespace VideoAnalysisCore.AICore.GPT.Dto /// public string? Theme { get; set; } /// + /// 新主题 + /// + public string? NewTheme { get; set; } + /// /// 章节 /// public string? Section { get; set; }