优化提示词逻辑

This commit is contained in:
小肥羊 2024-11-08 18:25:50 +08:00
parent 8bf9caedf1
commit c06878db59
6 changed files with 41 additions and 22 deletions

View File

@ -67,6 +67,8 @@ namespace Learn.VideoAnalysis.Components.Pages
private static System.Timers.Timer _timer;
public void StartTimer(Object source, System.Timers.ElapsedEventArgs e)
{
if (_dataSource is null)
return;
foreach (var item in _dataSource)
{
if (!string.IsNullOrEmpty(item.ErrorMessage) || item.LastEnum == RedisChannelEnum.EndTask)

View File

@ -25,9 +25,9 @@ namespace Learn.VideoAnalysis.Controllers.Dto
/// <summary>
///回调Api地址
/// </summary>
[Required(ErrorMessage = "回调Api地址是必填项")]
[Url(ErrorMessage = "请输入有效的 URL")]
public string CallBackUrl { get; set; } = string.Empty;
//[Required(ErrorMessage = "回调Api地址是必填项")]
//[Url(ErrorMessage = "请输入有效的 URL")]
//public string CallBackUrl { get; set; } = string.Empty;
}

View File

@ -14,6 +14,7 @@ using VideoAnalysisCore.Enum;
using System.Reflection;
using FreeRedis;
using VideoAnalysisCore.Model.Dto;
using Newtonsoft.Json;
namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
{
@ -54,7 +55,7 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
criteriaBuilder.Append(item.Id);
criteriaBuilder.Append(":");
criteriaBuilder.Append(item.NamePrompt);
criteriaBuilder.Append("结果类型 bool|");
criteriaBuilder.Append("结果类型 int (1-10分 5分不合格 10分满分)|");
}
//拼接枚举提问
foreach (var value in System.Enum.GetValues(typeof(QuestionTypeEnum)))
@ -95,17 +96,20 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
};
var chatResp = await moonshotClient.Chat(chatRep);
if (chatResp is null || chatResp.error != null)
throw new Exception($"KIMI模型返回异常 Chat 请求参数: {JsonSerializer.Serialize(chatRep)} " +
$" chatResp {JsonSerializer.Serialize(chatResp)}");
throw new Exception($"KIMI模型返回异常 Chat 请求参数: {System.Text.Json.JsonSerializer.Serialize(chatRep)} " +
$" chatResp {System.Text.Json.JsonSerializer.Serialize(chatResp)}");
var chatResContent = chatResp?.choices.FirstOrDefault()?.message.content;
if (chatResContent is null)
throw new Exception("KIMIGPT返回message无效结果");
var questionRes = JsonSerializer.Deserialize<QuestionRes[]>(chatResContent);
var questionRes = JsonConvert.DeserializeObject<QuestionRes[]>(chatResContent);
var gptRes = new CallGPTRes(captions);
if (questionRes is null)
throw new Exception("KIMIGPT返回无效结果");
//处理 ai问答提问
var arr1 = questionRes.Where(s => s. < 100);
var arr2 = questionRes.Where(s => s. >= 100).ToDictionary(s => s.);
var arr2 = questionRes.Where(s => s. >= 100)
.ToDictionary(s => s.);
//AI综合评估
var criteriaDic = criteriaArr.ToDictionary(s => s.Id);
gptRes.Assessment = new AssessmentDto()
@ -122,8 +126,9 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
.Select(s => new CourseCriteria()
{
Id = criteriaDic[s.].Id,
ImprovedMethods = criteriaDic[s.].ImprovedMethods,
Prompt = criteriaDic[s.].ImprovedMethods,
//ImprovedMethods = criteriaDic[s.问题编号].ImprovedMethods,
Analyze = s. ?? string.Empty,
Prompt = criteriaDic[s.].Advantage,
}).ToArray(),
};
@ -140,7 +145,16 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
End = double.Parse(s.key.Split(":")[2]??0.ToString()),
Content = s.value,
});
//todo 分析上课时间段情况 分析 独立学习 小组合作 随堂练习等情况
//分析上课时间段情况 分析 独立学习 小组合作 随堂练习等情况
var extraTimeBase = arr2[(int)QuestionTypeEnum.]
..ToObject<KeyValue<string>[]>()?.Select(s =>
new TimeBase
{
Start = double.Parse(s.key.Split(":")[1] ?? 0.ToString()),
End = double.Parse(s.key.Split(":")[2] ?? 0.ToString()),
Content = s.value,
});
var tId = long.Parse(task);

View File

@ -192,15 +192,16 @@ namespace VideoAnalysisCore.Common
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-> " + key + " " + taskId);
if (action is not null)
{
var tID = long.Parse(taskId);
Redis.HMSet(RedisExpandKey.Task(taskId), "LastEnum", key);
Redis.HMSet(RedisExpandKey.Task(taskId), "Progress", 0);
await DbScoped.SugarScope.Updateable<VideoTask>()
.SetColumns(it => it.LastEnum == key)
.Where(it => it.Id == tID)
.ExecuteCommandAsync();
try
{
var tID = long.Parse(taskId);
Redis.HMSet(RedisExpandKey.Task(taskId), "LastEnum", key);
Redis.HMSet(RedisExpandKey.Task(taskId), "Progress", 0);
await DbScoped.SugarScope.Updateable<VideoTask>()
.SetColumns(it => it.LastEnum == key)
.Where(it => it.Id == tID)
.ExecuteCommandAsync();
await action(taskId);
}
catch (Exception ex)
@ -208,7 +209,6 @@ namespace VideoAnalysisCore.Common
//执行任务时出现异常
var error = ex.Message + ex.StackTrace;
await SetTaskErrorMessage(long.Parse(taskId), error);
Redis.HMSet(RedisExpandKey.Task(taskId), "Error", error);
}
}
else

View File

@ -11,10 +11,13 @@ namespace VideoAnalysisCore.Enum
{
[Display(Prompt = "分析授课中使用的高频词10个频率从高到低 结果类型[]")]
=100,
= 100,
[Display(Prompt = "分析字幕中每5分钟的一个概览 结果类型[{key:时间段,value:概览}]")]
= 101,
[Display(Prompt = "统计授课中教师提问类型的次数 类型[重复回答,老师追问,简单性表演,老师补充答案,表扬并补充答案] [{key:,value:}]")]
= 102,
[Display(Prompt = " 分析授课中教师提到 类型[独立学习,小组合作,随堂练习] [{key:,value:/null}] ")]
= 103,
}
}

View File

@ -84,14 +84,14 @@ namespace VideoAnalysisCore.Model
/// Chat模型分析缓存
/// </summary>
[SugarColumn(ColumnName = "ChatAnalysis", ColumnDataType = "longtext", IsNullable = true)]
public string _ChatAnalysis { get; set; } = "[]";
public string _ChatAnalysis { get; set; } = "{}";
/// <summary>
/// Chat模型分析缓存
/// </summary>
[SugarColumn(IsIgnore = true)]
public CallGPTRes? ChatAnalysis
{
get => JsonSerializer.Deserialize<CallGPTRes>(_ChatAnalysis ?? "[]");
get => JsonSerializer.Deserialize<CallGPTRes>(_ChatAnalysis ?? "{}");
set => _ChatAnalysis = JsonSerializer.Serialize(value);
}