优化 课堂指标多余字段删除

This commit is contained in:
小肥羊 2024-11-28 18:15:34 +08:00
parent b332fa742c
commit 68056e17d3
6 changed files with 40 additions and 31 deletions

View File

@ -13,13 +13,13 @@
</Flex>
</TitleTemplate>
<ColumnDefinitions Context="row">
<Selection />
<ActionColumn Title="操作列">
<ActionColumn Title="操作列" Width ="230px">
<a @onclick="() => StartEdit(row)">修改</a>
<Button Type="@ButtonType.Link" Danger @onclick="() => Delete(row)">
删除</Button>
</ActionColumn>
<GenerateColumns Definitions="@((n,c) => { c.Filterable = true; c.Sortable = true; })" />
<PropertyColumn Property="c=>c.Id" Width="130px" Filterable="true" Sortable="true" />
<PropertyColumn Property="c=>c.NamePrompt" />
</ColumnDefinitions>
</Table>
@ -41,7 +41,9 @@
Content =
@<Form @ref="form" Model="data" OnFinish="()=> modalRef.OkAsync(true)"
LabelColSpan="6" WrapperColSpan="18">
<GenerateFormItem NotGenerate="@(x=> x == "Id")" />
<FormItem Label="标准提问词" >
<TextArea Rows="4" @bind-Value="@context.NamePrompt" />
</FormItem>
</Form>
,
OkText = "确定",

View File

@ -36,7 +36,7 @@ namespace Learn.VideoAnalysis.Components.Pages
}
_dataSource = await criteria.AsQueryable()
.Where(where)
.ToPageListAsync(query.PageIndex - 1, query.PageSize, _total);
.ToPageListAsync(query.PageIndex, query.PageSize, _total);
tableLoading = false;
StateHasChanged();

View File

@ -101,7 +101,7 @@ namespace Learn.VideoAnalysis.Components.Pages
.Where(where)
.Select<VideoTaskDto>()
.OrderByDescending(s => s.Id)
.ToPageListAsync(query.PageIndex - 1, query.PageSize, _total);
.ToPageListAsync(query.PageIndex , query.PageSize, _total);
tableLoading = false;
StateHasChanged();

View File

@ -21,6 +21,7 @@ namespace VideoAnalysisCore.AICore.ChatGPT.Dto
/// </summary>
public JsonDocument { get; set; }
private object? _cached = null;
/// <summary>
/// 转换结果为对象
/// </summary>
@ -30,7 +31,16 @@ namespace VideoAnalysisCore.AICore.ChatGPT.Dto
{
try
{
return System.Text.Json.JsonSerializer.Deserialize<T>(.RootElement.GetRawText());
if(_cached != null)
return (T)_cached;
var r = .RootElement.GetRawText();
if (r is null)
return default;
_cached = System.Text.Json.JsonSerializer.Deserialize<T>(r);
if (_cached is null)
return default;
return (T)_cached;
}
catch
{

View File

@ -56,7 +56,8 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
criteriaBuilder.Append(item.Id);
criteriaBuilder.Append(":");
criteriaBuilder.Append(item.NamePrompt);
criteriaBuilder.Append("请基于解释打分(0-10分 6分为及格) 结果类型 int |");
criteriaBuilder.Append("? 请基于解释打分(0-10分 6分为及格) 结果类型 array=[得分,简明的提问的回答,对于问题的详细改进意见,详细的列举出主要扣分原因] |");
}
//拼接枚举提问
foreach (var value in System.Enum.GetValues(typeof(QuestionTypeEnum)))
@ -74,6 +75,9 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
var resFormat = "[{问题编号:int,结果:array|bool|object,问题解释:string}]";
var postMessages =
$"你是一个教学经验老道老师对教学工作有着深入的理解和丰富的经验,能够准确把握教学大纲的要求和教学重点。" +
$"熟练掌握各种教学管理方法和手段,能够制定科学合理的教学计划和教学评估体系。" +
$"善于发现教学中的问题,并能迅速提出有效的解决方案,确保教学工作的顺利进行。" +
$"以下是一段音频的字幕,分析这段字幕(格式 说话人:开始秒:结束秒:内容|下一段字幕)." +
$"来简明的回答提出的问题 问题列表 {criteriaBuilder} " +
$"字幕列表 {captions.Captions} " +
@ -82,10 +86,11 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
if (modelsResp is null || modelsResp.data.Count == 0)
throw new Exception("未获取KIMI模型类型");
var reqTokenCount = await moonshotClient.GetAsTiMateTokenCount(postMessages);
var modelId = reqTokenCount > 32 * 1000 ? "moonshot-v1-128k" : "moonshot-v1-32k";
var maxTokens = 4000;
var modelId = reqTokenCount > 32 * 1000 - maxTokens ? "moonshot-v1-128k" : "moonshot-v1-32k";
var chatRep = new ChatReq
{
max_tokens = 32*1024 - (reqTokenCount + 30),
max_tokens = maxTokens,
temperature = 0.3f,
frequency_penalty = 0,
presence_penalty = 0,
@ -102,7 +107,6 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
$" {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);
@ -115,28 +119,21 @@ namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
.ToDictionary(s => s.);
//AI综合评估
var criteriaDic = criteriaArr.ToDictionary(s => s.Id);
var ccArr = arr1.Select(s => new CourseCriteria()
{
Id = criteriaDic[s.].Id,
Score = int.Parse(s.ToObject<object[]>()?[0].ToString() ?? string.Empty),
Prompt = s.ToObject<object[]>()?[1].ToString() ?? string.Empty,
ImprovedMethods = s.ToObject<object[]>()?[2].ToString() ?? string.Empty,
Analyze = s. + s.ToObject<object[]>()?[3].ToString() ?? string.Empty,
//Analyze = s.问题解释 ?? string.Empty,
}).ToArray();
gptRes.Assessment = new AssessmentDto()
{
Bad = arr1.Where(s => s.ToObject<int>() < 6)
.Select(s => new CourseCriteria()
{
Id = criteriaDic[s.].Id,
ImprovedMethods = criteriaDic[s.].ImprovedMethods,
Analyze = s. ?? string.Empty,
Score = s.ToObject<int>(),
Prompt = criteriaDic[s.].Flaw,
}).ToArray(),
Merit = arr1.Where(s => s.ToObject<int>() >= 6)
.Select(s => new CourseCriteria()
{
Id = criteriaDic[s.].Id,
Score = s.ToObject<int>(),
//ImprovedMethods = criteriaDic[s.问题编号].ImprovedMethods,
Analyze = s. ?? string.Empty,
Prompt = criteriaDic[s.].Advantage,
}).ToArray(),
Bad = ccArr.Where(s => s.Score< 6 ).ToArray(),
Merit = ccArr.Where(s => s.Score>= 6).ToArray(),
};
//高频词汇
gptRes.Hotwords = arr2[(int)QuestionTypeEnum.].ToObject<string[]>() ?? ["暂无数据"];

View File

@ -105,7 +105,7 @@ namespace VideoAnalysisCore.Common
/// <param name="taskId"></param>
public static void SetTaskGPTCached(object taskId, object? data)
{
Redis.Set(RedisExpandKey.TaskGPT(taskId), data, 3600);
Redis.Set(RedisExpandKey.TaskGPT(taskId), data, 3600*24);
}
/// <summary>
/// 获取任务进度