修复 过时的AI请求temperature 字段
This commit is contained in:
parent
d948f854fb
commit
53951aa870
|
|
@ -101,7 +101,7 @@ namespace Learn.VideoAnalysis
|
|||
app.UseMiddleware<BasicAuthMiddleware>("Swagger");
|
||||
// Configure the HTTP request pipeline.
|
||||
//¿ªÆôredis¶ÓÁзþÎñ
|
||||
//_ = app.Services.GetRequiredService<RedisInit>();
|
||||
_ = app.Services.GetRequiredService<RedisInit>();
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
app.UseExceptionHandler("/Error");
|
||||
|
|
|
|||
|
|
@ -62,12 +62,6 @@ namespace VideoAnalysisCore.AICore.GPT
|
|||
public float? max_tokens { get; set; } = 8000;
|
||||
public float? max_completion_tokens { get; set; } = 8000;
|
||||
/// <summary>
|
||||
/// 要使用的采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使其更加集中和确定。 我们通常建议更改此项或同时更改两者。top_p
|
||||
/// <para> 默认为 1</para>
|
||||
/// <para> <see cref="ChatRequest.top_p"/>联动</para>
|
||||
/// </summary>
|
||||
public float? temperature { get; set; } = 0.2f;
|
||||
/// <summary>
|
||||
/// 一种替代温度采样的方法,称为原子核采样, 其中,模型考虑具有top_p概率的标记的结果 质量。所以 0.1 表示仅包含前 10% 概率质量的代币 被考
|
||||
/// <para>建议与<see cref="ChatRequest.temperature"/>联动</para>
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -58,7 +58,6 @@ namespace VideoAnalysisCore.AICore.GPT.ChatGPT
|
|||
title = title,
|
||||
max_tokens = max_tokens,
|
||||
stream = true,
|
||||
temperature = 0.2f,
|
||||
messages = messageArr
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,6 @@ namespace VideoAnalysisCore.AICore.GPT.ChatGPT
|
|||
model = model ?? ChatGPTType.Deepseek_Chat,
|
||||
max_tokens = model == ChatGPTType.Deepseek_Reasoner ? 32000 : max_tokens,
|
||||
stream = true,
|
||||
temperature = 0.2f,
|
||||
messages = messageArr
|
||||
};
|
||||
return await base.ChatAsync<T>(chatReq);
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
|||
$"字幕列表 {rCaptionArr}。" +
|
||||
$"输出格式 json字符串 对象格式{fileNameResFormat}";
|
||||
var task = taskInfo.Id.ToString();
|
||||
var fileNameInfoRes = await chatGPTClient.ChatAsync<FileNameInfo>
|
||||
var fileNameInfoRes = await geminiClient.ChatAsync<FileNameInfo>
|
||||
(task, fileNamePostMessages, "授课章节");
|
||||
taskInfo.Sections = fileNameInfoRes.授课章节;
|
||||
await videoTaskDB.AsUpdateable()
|
||||
|
|
@ -309,7 +309,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
|||
await Parallel.ForAsync(0, totalCount,
|
||||
new ParallelOptions()
|
||||
#if DEBUG
|
||||
{ MaxDegreeOfParallelism = 1 },
|
||||
{ MaxDegreeOfParallelism = 4 },
|
||||
#else
|
||||
{ MaxDegreeOfParallelism = 9 },
|
||||
#endif
|
||||
|
|
@ -725,6 +725,8 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
|||
throw new Exception("未能找到对应知识点=>" + sections);
|
||||
List<KnowledgeInfo>? knowledgeInfos = new List<KnowledgeInfo>();
|
||||
var kInfo = await knowledgeInfoDB.GetByIdAsync(know.Parent_Id);
|
||||
if (know.Parent_Id == 0)
|
||||
kInfo = know;
|
||||
try
|
||||
{
|
||||
knowledgeInfos = await knowledgeInfoDB.AsQueryable()
|
||||
|
|
@ -800,6 +802,10 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
|||
Stage = s.First().Stage,
|
||||
Theme = s.First().Theme,
|
||||
VideoTaskId = taskInfo.Id,
|
||||
CourseLevel = taskInfo.CourseLevel,
|
||||
TextBookVersionId = taskInfo.TextBookVersionId,
|
||||
GradeSemester= taskInfo.GradeSemester,
|
||||
GradeId = taskInfo.GradeId,
|
||||
}).ToList();
|
||||
//尝试追加 作业布置分段
|
||||
if (homework != null && (!questionRes.Any(s => s.Stage == StageEnum.作业布置.ToString())))
|
||||
|
|
@ -850,6 +856,8 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
|||
if (know is null)
|
||||
throw new Exception("未能找到对应知识点=>" + sections);
|
||||
var kInfo = await knowledgeInfoDB.GetByIdAsync(know.Parent_Id);
|
||||
if (know.Parent_Id == 0)
|
||||
kInfo = know;
|
||||
var knowledgeInfos = await knowledgeInfoDB.AsQueryable()
|
||||
.ToChildListAsync(s => s.Parent_Id, kInfo.Parent_Id == 0 ? kInfo.Id : kInfo.Parent_Id);
|
||||
//开始分析复习课 试题
|
||||
|
|
|
|||
|
|
@ -56,7 +56,6 @@ namespace VideoAnalysisCore.AICore.GPT.ChatGPT
|
|||
model = model,
|
||||
max_tokens = max_tokens,
|
||||
stream = true,
|
||||
temperature = 0.2f,
|
||||
messages = messageArr,
|
||||
max_completion_tokens= 12288,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -139,8 +139,8 @@ namespace VideoAnalysisCore.Common
|
|||
await scope.ServiceProvider.GetService<DownloadFile>()?.RunTask(task);
|
||||
});
|
||||
SubscribeList.Add(RedisChannelEnum.分离音频, FFMPGE.RunAsync);
|
||||
//SubscribeList.Add(RedisChannelEnum.解析字幕, senseVoice.RunTask);
|
||||
SubscribeList.Add(RedisChannelEnum.解析字幕, funASRNano.RunTask);
|
||||
SubscribeList.Add(RedisChannelEnum.解析字幕, senseVoice.RunTask);
|
||||
//SubscribeList.Add(RedisChannelEnum.解析字幕, funASRNano.RunTask);
|
||||
//SubscribeList.Add(RedisChannelEnum.解析说话人,Speaker.Run);
|
||||
SubscribeList.Add(RedisChannelEnum.AI课程类型, async (task) =>
|
||||
{
|
||||
|
|
@ -433,15 +433,20 @@ namespace VideoAnalysisCore.Common
|
|||
var oldTaskCount = Redis.LLen(RedisExpandKey.IDTask);
|
||||
//重试任务并发过多可能会导致程序崩溃
|
||||
// 未能重新分析的中断任务 则单独开一个网页来处理
|
||||
if (oldTaskCount > 0 )
|
||||
if (oldTaskCount > 0)
|
||||
{
|
||||
var oldTaskArr = Redis.LRange(RedisExpandKey.IDTask, 0, oldTaskCount);
|
||||
//不自动清理未完成任务 等待执行完毕/失败后自动清理
|
||||
//Redis.LTrim(RedisExpandKey.IDTask, 1, 0);//删除 redis 列表
|
||||
//最多执行5个上次中断/或者未完成的任务
|
||||
foreach (var oldTask in oldTaskArr.Take(5))
|
||||
//获取所有未完成的任务
|
||||
var oldTaskArr = Redis.LRange(RedisExpandKey.IDTask, 0, -1);
|
||||
Console.WriteLine($"{DateTime.Now:HH:mm:ss}-------------> 发现 {oldTaskArr.Length} 个未完成任务,准备恢复...");
|
||||
|
||||
//使用信号量限制并发数(5),防止崩溃
|
||||
using var semaphore = new System.Threading.SemaphoreSlim(5);
|
||||
var retryTaskArr = new List<Task>();
|
||||
|
||||
foreach (var oldTask in oldTaskArr)
|
||||
{
|
||||
_ = Task.Run(async () =>
|
||||
await semaphore.WaitAsync();
|
||||
var res = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
@ -453,10 +458,21 @@ namespace VideoAnalysisCore.Common
|
|||
catch (Exception ex)
|
||||
{
|
||||
await SetTaskErrorMessage(long.Parse(oldTask), ex);
|
||||
throw;
|
||||
Console.WriteLine($"恢复任务 {oldTask} 失败: {ex.Message}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
semaphore.Release();
|
||||
}
|
||||
});
|
||||
retryTaskArr.Add(res);
|
||||
}
|
||||
//等待所有 重试任务完成后接收新任务
|
||||
await Task.WhenAll(retryTaskArr);
|
||||
|
||||
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "-------------> 所有未完成任务处理完毕!");
|
||||
ReceivingTaskAsync();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -141,6 +141,10 @@ namespace VideoAnalysisCore.Controllers.Dto
|
|||
/// 教育阶段
|
||||
/// </summary>
|
||||
public EducationStageEnum StageId { get; set; }
|
||||
/// <summary>
|
||||
/// 年级册(上册/下册)
|
||||
/// </summary>
|
||||
public GradeSemesterEnum? GradeSemester { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 视频处理 请求
|
||||
|
|
|
|||
|
|
@ -115,6 +115,10 @@ namespace VideoAnalysisCore.Controllers
|
|||
CloudSchoolId =s.UserCenterCloudSchoolId,
|
||||
Area = s.Area,
|
||||
HostIP = s.HostIP,
|
||||
StageId = s.StageId,
|
||||
GradeId = s.GradeId,
|
||||
GradeSemester = s.GradeSemester,
|
||||
TextBookVersionId = s.TextBookVersionId,
|
||||
};
|
||||
nodePackages.Add(np);
|
||||
if (videoIdArr.Contains(s.VideoCode)) continue;
|
||||
|
|
@ -134,6 +138,10 @@ namespace VideoAnalysisCore.Controllers
|
|||
PPTVideoUrl = pptUrl,
|
||||
VideoType = s.CourseType,
|
||||
CloudSchoolId = s.UserCenterCloudSchoolId,
|
||||
TextBookVersionId = s.TextBookVersionId,
|
||||
GradeSemester =s .GradeSemester,
|
||||
CourseLevel =s.CourseLevel,
|
||||
GradeId = s.GradeId,
|
||||
});
|
||||
}
|
||||
await nodePackageInfoDB.InsertRangeAsync(nodePackages);
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ namespace VideoAnalysisCore.Controllers
|
|||
TagId = req.TagId,
|
||||
PPTVideoCode = req.PPTVideoCode,
|
||||
PPTVideoUrl = req.PPTVideoUrl,
|
||||
VideoType = req.VideoType
|
||||
VideoType = req.VideoType,
|
||||
};
|
||||
//入库
|
||||
await baseService.InsertAsync(task);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace VideoAnalysisCore.Model.Enum
|
||||
{
|
||||
/// <summary>
|
||||
/// 年级层次
|
||||
/// </summary>
|
||||
public enum GradeSemesterEnum
|
||||
{
|
||||
上册 = 1,
|
||||
下册 = 2
|
||||
}
|
||||
}
|
||||
|
|
@ -83,6 +83,25 @@ namespace VideoAnalysisCore.Model
|
|||
/// </summary>
|
||||
public string Area { get; set; }
|
||||
/// <summary>
|
||||
/// 年级
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public GradeEnum? GradeId { get; set; }
|
||||
/// <summary>
|
||||
/// 教育阶段
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public EducationStageEnum StageId { get; set; }
|
||||
/// <summary>
|
||||
/// 年级册(上册/下册)
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public GradeSemesterEnum? GradeSemester { get; set; }
|
||||
/// <summary>
|
||||
/// 学科网的教材版本Id
|
||||
/// </summary>
|
||||
public long TextBookVersionId { get; set; }
|
||||
/// <summary>
|
||||
/// 请求区域
|
||||
/// <para>回调添加到Headers</para>
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -145,5 +145,26 @@ namespace VideoAnalysisCore.Model
|
|||
[SugarColumn(IsNullable = true)]
|
||||
public long? CloudSchoolId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 教材层次
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public CourselevelTypeEnum? CourseLevel { get; set; }
|
||||
/// <summary>
|
||||
/// 年级
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public GradeEnum? GradeId { get; set; }
|
||||
/// <summary>
|
||||
/// 年级册(上册/下册)
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public GradeSemesterEnum? GradeSemester { get; set; }
|
||||
/// <summary>
|
||||
/// 学科网的教材版本Id
|
||||
/// </summary>
|
||||
public long TextBookVersionId { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ namespace VideoAnalysisCore.Model
|
|||
/// <summary>
|
||||
/// 知识点来源 视频秒,来源原因
|
||||
/// </summary>
|
||||
[SugarColumn(Length = 500, IsNullable = true)]
|
||||
public string Content { get; set; }
|
||||
/// <summary>
|
||||
/// 课程阶段
|
||||
|
|
@ -75,5 +76,26 @@ namespace VideoAnalysisCore.Model
|
|||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public virtual string? TextbookSource { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 教材层次
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public CourselevelTypeEnum? CourseLevel { get; set; }
|
||||
/// <summary>
|
||||
/// 年级
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public GradeEnum? GradeId { get; set; }
|
||||
/// <summary>
|
||||
/// 年级册(上册/下册)
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public GradeSemesterEnum? GradeSemester { get; set; }
|
||||
/// <summary>
|
||||
/// 学科网的教材版本Id
|
||||
/// </summary>
|
||||
public long TextBookVersionId { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue