From 8f4f48fd661a819994c31943f4e383883d3ee949 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com>
Date: Wed, 27 Nov 2024 11:48:06 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20gpt=E8=BF=94=E5=9B=9E?=
=?UTF-8?q?=E7=BB=93=E6=9E=9C=E5=AE=9E=E4=BD=93=E8=A7=A3=E6=9E=90=E6=96=B9?=
=?UTF-8?q?=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
VideoAnalysis/Program.cs | 5 ----
.../AICore/ChatGPT/Dto/QuestionRes.cs | 20 +++++++++++++++-
.../AICore/ChatGPT/KIMI/KIMI_GPT.cs | 24 +++++++++----------
.../AICore/ChatGPT/KIMI/MoonshotClient.cs | 10 ++++----
VideoAnalysisCore/Enum/QuestionTypeEnum.cs | 2 +-
5 files changed, 36 insertions(+), 25 deletions(-)
diff --git a/VideoAnalysis/Program.cs b/VideoAnalysis/Program.cs
index 55514e4..a413ac5 100644
--- a/VideoAnalysis/Program.cs
+++ b/VideoAnalysis/Program.cs
@@ -1,16 +1,11 @@
using VideoAnalysisCore.Common;
-using VideoAnalysisRazor;
using Learn.VideoAnalysis.Components;
using Microsoft.OpenApi.Models;
using AntDesign.ProLayout;
using VideoAnalysisCore.AICore.ChatGPT;
using VideoAnalysisCore.AICore.ChatGPT.KIMI;
using VideoAnalysisCore.AICore.SherpaOnnx;
-using SqlSugar;
using Mapster;
-using VideoAnalysisCore.AICore.ChatGPT.Dto;
-using System.Text.Json;
-using Newtonsoft.Json;
diff --git a/VideoAnalysisCore/AICore/ChatGPT/Dto/QuestionRes.cs b/VideoAnalysisCore/AICore/ChatGPT/Dto/QuestionRes.cs
index 11136b1..d2a3767 100644
--- a/VideoAnalysisCore/AICore/ChatGPT/Dto/QuestionRes.cs
+++ b/VideoAnalysisCore/AICore/ChatGPT/Dto/QuestionRes.cs
@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Text.Json;
using System.Text.Json.Nodes;
using System.Threading.Tasks;
@@ -18,7 +19,24 @@ namespace VideoAnalysisCore.AICore.ChatGPT.Dto
///
/// 结果
///
- public JToken 结果 { get; set; }
+ public JsonDocument 结果 { get; set; }
+
+ ///
+ /// 转换结果为对象
+ ///
+ ///
+ ///
+ public T? ToObject()
+ {
+ try
+ {
+ return System.Text.Json.JsonSerializer.Deserialize(结果.RootElement.GetRawText());
+ }
+ catch
+ {
+ return default;
+ }
+ }
///
/// 问题解释
///
diff --git a/VideoAnalysisCore/AICore/ChatGPT/KIMI/KIMI_GPT.cs b/VideoAnalysisCore/AICore/ChatGPT/KIMI/KIMI_GPT.cs
index fd718f0..31e47c2 100644
--- a/VideoAnalysisCore/AICore/ChatGPT/KIMI/KIMI_GPT.cs
+++ b/VideoAnalysisCore/AICore/ChatGPT/KIMI/KIMI_GPT.cs
@@ -14,7 +14,6 @@ using VideoAnalysisCore.Enum;
using System.Reflection;
using FreeRedis;
using VideoAnalysisCore.Model.Dto;
-using Newtonsoft.Json;
using AntDesign;
using SqlSugar.IOC;
@@ -86,7 +85,7 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
var modelId = reqTokenCount > 32 * 1000 ? "moonshot-v1-128k" : "moonshot-v1-32k";
var chatRep = new ChatReq
{
- max_tokens = 32*1024 - (reqTokenCount + 20),
+ max_tokens = 32*1024 - (reqTokenCount + 30),
temperature = 0.3f,
frequency_penalty = 0,
presence_penalty = 0,
@@ -100,14 +99,13 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
RedisExpand.SetTaskGPTCached(task, chatResp);
if (chatResp is null || chatResp.error != null)
throw new Exception($"KIMI模型返回异常 Chat 返回参数: " +
- $" {System.Text.Json.JsonSerializer.Serialize(chatResp)}");
+ $" {JsonSerializer.Serialize(chatResp)}");
var chatResContent = chatResp?.choices.FirstOrDefault()?.message.content;
if (chatResContent is null)
throw new Exception("KIMIGPT返回message无效结果");
-
- var questionRes = JsonConvert.DeserializeObject(chatResContent);
+ var questionRes = JsonSerializer.Deserialize(chatResContent);
var gptRes = new TaskRes(captions);
if (questionRes is null)
throw new Exception("KIMIGPT返回无效结果");
@@ -119,20 +117,20 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
var criteriaDic = criteriaArr.ToDictionary(s => s.Id);
gptRes.Assessment = new AssessmentDto()
{
- Bad = arr1.Where(s => s.结果.ToObject() < 6)
+ Bad = arr1.Where(s => s.ToObject() < 6)
.Select(s => new CourseCriteria()
{
Id = criteriaDic[s.问题编号].Id,
ImprovedMethods = criteriaDic[s.问题编号].ImprovedMethods,
Analyze = s.问题解释 ?? string.Empty,
- Score = s.结果.ToObject(),
+ Score = s.ToObject(),
Prompt = criteriaDic[s.问题编号].Flaw,
}).ToArray(),
- Merit = arr1.Where(s => s.结果.ToObject() >= 6)
+ Merit = arr1.Where(s => s.ToObject() >= 6)
.Select(s => new CourseCriteria()
{
Id = criteriaDic[s.问题编号].Id,
- Score = s.结果.ToObject(),
+ Score = s.ToObject(),
//ImprovedMethods = criteriaDic[s.问题编号].ImprovedMethods,
Analyze = s.问题解释 ?? string.Empty,
Prompt = criteriaDic[s.问题编号].Advantage,
@@ -140,18 +138,18 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
};
//高频词汇
- gptRes.Hotwords = arr2[(int)QuestionTypeEnum.高频词].结果.ToObject() ?? ["暂无数据"];
+ gptRes.Hotwords = arr2[(int)QuestionTypeEnum.高频词].ToObject() ?? ["暂无数据"];
//时间段概览
gptRes.TimeOverview = arr2[(int)QuestionTypeEnum.时间段概览]
- .结果.ToObject();
+ .ToObject();
//提问类型
gptRes.QuestionType = arr2[(int)QuestionTypeEnum.提问类型]
- .结果.ToObject>();
+ .ToObject>();
//分析上课时间段情况 分析 独立学习 小组合作 随堂练习等情况
var extraTimeBase = arr2[(int)QuestionTypeEnum.额外课堂情况]
- .结果.ToObject();
+ .ToObject();
if (extraTimeBase is not null)
foreach (var item in extraTimeBase)
{
diff --git a/VideoAnalysisCore/AICore/ChatGPT/KIMI/MoonshotClient.cs b/VideoAnalysisCore/AICore/ChatGPT/KIMI/MoonshotClient.cs
index fc8df02..2416cac 100644
--- a/VideoAnalysisCore/AICore/ChatGPT/KIMI/MoonshotClient.cs
+++ b/VideoAnalysisCore/AICore/ChatGPT/KIMI/MoonshotClient.cs
@@ -56,7 +56,7 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
/// Return HttpResponseMessage for SSE
public async Task Chat(ChatReq chatReq)
{
- var requestBody = Newtonsoft.Json.JsonConvert.SerializeObject(chatReq);
+ var requestBody = System.Text.Json.JsonSerializer.Serialize(chatReq);
var chatResp = await PostJsonStreamAsync("/v1/chat/completions", requestBody);
return await chatResp.Content.ReadFromJsonAsync();
}
@@ -84,7 +84,7 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
var responseObj = JToken.Parse(responseText);
return responseObj?["data"]?["total_tokens"]?.ToObject();
}
- var error = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText);
+ var error = JsonConvert.DeserializeObject(responseText);
_logger.LogError($"{error?.error?.type}: {error?.error?.message}");
throw new Exception($"{error?.error.type}: {error?.error.message}");
}
@@ -97,7 +97,7 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
///
public async Task GetAsTiMateTokenCount(ChatReq chatReq)
{
- var chatReqText = Newtonsoft.Json.JsonConvert.SerializeObject(chatReq);
+ var chatReqText = JsonConvert.SerializeObject(chatReq);
return await GetAsTiMateTokenCount(chatReqText);
}
@@ -226,9 +226,9 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
var responseText = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
- return Newtonsoft.Json.JsonConvert.DeserializeObject(responseText) ?? default;
+ return JsonConvert.DeserializeObject(responseText) ?? default;
}
- var error = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText);
+ var error = JsonConvert.DeserializeObject(responseText);
_logger.LogError($"{error?.error.type}: {error?.error.message}");
throw new Exception($"{error?.error.type}: {error?.error.message}");
}
diff --git a/VideoAnalysisCore/Enum/QuestionTypeEnum.cs b/VideoAnalysisCore/Enum/QuestionTypeEnum.cs
index 5dd928e..c7d06dd 100644
--- a/VideoAnalysisCore/Enum/QuestionTypeEnum.cs
+++ b/VideoAnalysisCore/Enum/QuestionTypeEnum.cs
@@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace VideoAnalysisCore.Enum
{
- enum QuestionTypeEnum
+ public enum QuestionTypeEnum
{
[Display(Prompt = "分析授课中使用的高频词" +