优化提示词逻辑
This commit is contained in:
parent
8bf9caedf1
commit
c06878db59
|
|
@ -67,6 +67,8 @@ namespace Learn.VideoAnalysis.Components.Pages
|
||||||
private static System.Timers.Timer _timer;
|
private static System.Timers.Timer _timer;
|
||||||
public void StartTimer(Object source, System.Timers.ElapsedEventArgs e)
|
public void StartTimer(Object source, System.Timers.ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
|
if (_dataSource is null)
|
||||||
|
return;
|
||||||
foreach (var item in _dataSource)
|
foreach (var item in _dataSource)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(item.ErrorMessage) || item.LastEnum == RedisChannelEnum.EndTask)
|
if (!string.IsNullOrEmpty(item.ErrorMessage) || item.LastEnum == RedisChannelEnum.EndTask)
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,9 @@ namespace Learn.VideoAnalysis.Controllers.Dto
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///回调Api地址
|
///回调Api地址
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required(ErrorMessage = "回调Api地址是必填项")]
|
//[Required(ErrorMessage = "回调Api地址是必填项")]
|
||||||
[Url(ErrorMessage = "请输入有效的 URL")]
|
//[Url(ErrorMessage = "请输入有效的 URL")]
|
||||||
public string CallBackUrl { get; set; } = string.Empty;
|
//public string CallBackUrl { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ using VideoAnalysisCore.Enum;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using FreeRedis;
|
using FreeRedis;
|
||||||
using VideoAnalysisCore.Model.Dto;
|
using VideoAnalysisCore.Model.Dto;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
|
namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
|
||||||
{
|
{
|
||||||
|
|
@ -54,7 +55,7 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
|
||||||
criteriaBuilder.Append(item.Id);
|
criteriaBuilder.Append(item.Id);
|
||||||
criteriaBuilder.Append(":");
|
criteriaBuilder.Append(":");
|
||||||
criteriaBuilder.Append(item.NamePrompt);
|
criteriaBuilder.Append(item.NamePrompt);
|
||||||
criteriaBuilder.Append("结果类型 bool|");
|
criteriaBuilder.Append("结果类型 int (1-10分 5分不合格 10分满分)|");
|
||||||
}
|
}
|
||||||
//拼接枚举提问
|
//拼接枚举提问
|
||||||
foreach (var value in System.Enum.GetValues(typeof(QuestionTypeEnum)))
|
foreach (var value in System.Enum.GetValues(typeof(QuestionTypeEnum)))
|
||||||
|
|
@ -95,17 +96,20 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
|
||||||
};
|
};
|
||||||
var chatResp = await moonshotClient.Chat(chatRep);
|
var chatResp = await moonshotClient.Chat(chatRep);
|
||||||
if (chatResp is null || chatResp.error != null)
|
if (chatResp is null || chatResp.error != null)
|
||||||
throw new Exception($"KIMI模型返回异常 Chat 请求参数: {JsonSerializer.Serialize(chatRep)} " +
|
throw new Exception($"KIMI模型返回异常 Chat 请求参数: {System.Text.Json.JsonSerializer.Serialize(chatRep)} " +
|
||||||
$" chatResp {JsonSerializer.Serialize(chatResp)}");
|
$" chatResp {System.Text.Json.JsonSerializer.Serialize(chatResp)}");
|
||||||
var chatResContent = chatResp?.choices.FirstOrDefault()?.message.content;
|
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);
|
var gptRes = new CallGPTRes(captions);
|
||||||
if (questionRes is null)
|
if (questionRes is null)
|
||||||
throw new Exception("KIMIGPT返回无效结果");
|
throw new Exception("KIMIGPT返回无效结果");
|
||||||
//处理 ai问答提问
|
//处理 ai问答提问
|
||||||
var arr1 = questionRes.Where(s => s.问题编号 < 100);
|
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综合评估
|
//AI综合评估
|
||||||
var criteriaDic = criteriaArr.ToDictionary(s => s.Id);
|
var criteriaDic = criteriaArr.ToDictionary(s => s.Id);
|
||||||
gptRes.Assessment = new AssessmentDto()
|
gptRes.Assessment = new AssessmentDto()
|
||||||
|
|
@ -122,8 +126,9 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
|
||||||
.Select(s => new CourseCriteria()
|
.Select(s => new CourseCriteria()
|
||||||
{
|
{
|
||||||
Id = criteriaDic[s.问题编号].Id,
|
Id = criteriaDic[s.问题编号].Id,
|
||||||
ImprovedMethods = criteriaDic[s.问题编号].ImprovedMethods,
|
//ImprovedMethods = criteriaDic[s.问题编号].ImprovedMethods,
|
||||||
Prompt = criteriaDic[s.问题编号].ImprovedMethods,
|
Analyze = s.问题解释 ?? string.Empty,
|
||||||
|
Prompt = criteriaDic[s.问题编号].Advantage,
|
||||||
}).ToArray(),
|
}).ToArray(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -140,7 +145,16 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
|
||||||
End = double.Parse(s.key.Split(":")[2]??0.ToString()),
|
End = double.Parse(s.key.Split(":")[2]??0.ToString()),
|
||||||
Content = s.value,
|
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);
|
var tId = long.Parse(task);
|
||||||
|
|
|
||||||
|
|
@ -191,6 +191,8 @@ namespace VideoAnalysisCore.Common
|
||||||
if (taskId is null) return;
|
if (taskId is null) return;
|
||||||
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-> " + key + " " + taskId);
|
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-> " + key + " " + taskId);
|
||||||
if (action is not null)
|
if (action is not null)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
var tID = long.Parse(taskId);
|
var tID = long.Parse(taskId);
|
||||||
Redis.HMSet(RedisExpandKey.Task(taskId), "LastEnum", key);
|
Redis.HMSet(RedisExpandKey.Task(taskId), "LastEnum", key);
|
||||||
|
|
@ -199,8 +201,7 @@ namespace VideoAnalysisCore.Common
|
||||||
.SetColumns(it => it.LastEnum == key)
|
.SetColumns(it => it.LastEnum == key)
|
||||||
.Where(it => it.Id == tID)
|
.Where(it => it.Id == tID)
|
||||||
.ExecuteCommandAsync();
|
.ExecuteCommandAsync();
|
||||||
try
|
|
||||||
{
|
|
||||||
await action(taskId);
|
await action(taskId);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
@ -208,7 +209,6 @@ namespace VideoAnalysisCore.Common
|
||||||
//执行任务时出现异常
|
//执行任务时出现异常
|
||||||
var error = ex.Message + ex.StackTrace;
|
var error = ex.Message + ex.StackTrace;
|
||||||
await SetTaskErrorMessage(long.Parse(taskId), error);
|
await SetTaskErrorMessage(long.Parse(taskId), error);
|
||||||
Redis.HMSet(RedisExpandKey.Task(taskId), "Error", error);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -16,5 +16,8 @@ namespace VideoAnalysisCore.Enum
|
||||||
时间段概览 = 101,
|
时间段概览 = 101,
|
||||||
[Display(Prompt = "统计授课中教师提问类型的次数 类型[重复回答,老师追问,简单性表演,老师补充答案,表扬并补充答案] 结果类型[{key:类型,value:次数}]")]
|
[Display(Prompt = "统计授课中教师提问类型的次数 类型[重复回答,老师追问,简单性表演,老师补充答案,表扬并补充答案] 结果类型[{key:类型,value:次数}]")]
|
||||||
提问类型 = 102,
|
提问类型 = 102,
|
||||||
|
|
||||||
|
[Display(Prompt = " 分析授课中教师提到 类型[独立学习,小组合作,随堂练习]的时间段 结果类型[{key:类型,value:时间段/null}] ")]
|
||||||
|
额外课堂情况 = 103,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,14 +84,14 @@ namespace VideoAnalysisCore.Model
|
||||||
/// Chat模型分析缓存
|
/// Chat模型分析缓存
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(ColumnName = "ChatAnalysis", ColumnDataType = "longtext", IsNullable = true)]
|
[SugarColumn(ColumnName = "ChatAnalysis", ColumnDataType = "longtext", IsNullable = true)]
|
||||||
public string _ChatAnalysis { get; set; } = "[]";
|
public string _ChatAnalysis { get; set; } = "{}";
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Chat模型分析缓存
|
/// Chat模型分析缓存
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(IsIgnore = true)]
|
[SugarColumn(IsIgnore = true)]
|
||||||
public CallGPTRes? ChatAnalysis
|
public CallGPTRes? ChatAnalysis
|
||||||
{
|
{
|
||||||
get => JsonSerializer.Deserialize<CallGPTRes>(_ChatAnalysis ?? "[]");
|
get => JsonSerializer.Deserialize<CallGPTRes>(_ChatAnalysis ?? "{}");
|
||||||
set => _ChatAnalysis = JsonSerializer.Serialize(value);
|
set => _ChatAnalysis = JsonSerializer.Serialize(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue