优化 AI字幕优化提示词
This commit is contained in:
parent
22330627a8
commit
8fd3d4ef4b
|
|
@ -204,13 +204,14 @@ namespace VideoAnalysisCore.AICore.GPT.ChatGPT
|
||||||
messages = messageArr
|
messages = messageArr
|
||||||
};
|
};
|
||||||
|
|
||||||
RedisExpand.SetTaskGPTReqCached(task, chatRep);
|
var time = DateTime.Now.ToString("MMddHHmmss");
|
||||||
|
RedisExpand.SetTaskGPTCached(task, time,chatRep);
|
||||||
var chatResp = await chatClient.Chat(chatRep);
|
var chatResp = await chatClient.Chat(chatRep);
|
||||||
var chatResContent = chatResp?.res;
|
var chatResContent = chatResp?.res;
|
||||||
if (string.IsNullOrEmpty(chatResContent))
|
if (string.IsNullOrEmpty(chatResContent))
|
||||||
throw new Exception("GPT返回message无效结果");
|
throw new Exception("GPT返回message无效结果");
|
||||||
if (chatResp != null)
|
if (chatResp != null)
|
||||||
RedisExpand.SetTaskGPTCached(task, new object[] { chatResp.Value.res, chatResp.Value.u });
|
RedisExpand.SetTaskGPTCached(task, time, new object[] { chatResp.Value.res, chatResp.Value.u });
|
||||||
|
|
||||||
chatResContent = chatResContent?.Replace("字幕内容", "课堂情况");
|
chatResContent = chatResContent?.Replace("字幕内容", "课堂情况");
|
||||||
chatResContent = chatResContent?.Replace("\n", "");
|
chatResContent = chatResContent?.Replace("\n", "");
|
||||||
|
|
@ -307,13 +308,14 @@ namespace VideoAnalysisCore.AICore.GPT.ChatGPT
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
RedisExpand.SetTaskGPTReqCached(task, chatRep);
|
var time = DateTime.Now.ToString("MMddHHmmss");
|
||||||
|
RedisExpand.SetTaskGPTCached(task, time, chatRep);
|
||||||
var chatResp = await chatClient.Chat(chatRep);
|
var chatResp = await chatClient.Chat(chatRep);
|
||||||
var chatResContent = chatResp?.res;
|
var chatResContent = chatResp?.res;
|
||||||
if (string.IsNullOrEmpty(chatResContent))
|
if (string.IsNullOrEmpty(chatResContent))
|
||||||
throw new Exception("GPT返回message无效结果");
|
throw new Exception("GPT返回message无效结果");
|
||||||
if (chatResp != null)
|
if (chatResp != null)
|
||||||
RedisExpand.SetTaskGPTCached(task, new object[] { chatResp.Value.res, chatResp.Value.u });
|
RedisExpand.SetTaskGPTCached(task, time, new object[] { chatResp.Value.res, chatResp.Value.u });
|
||||||
|
|
||||||
chatResContent = chatResContent?.Replace("字幕内容", "课堂情况");
|
chatResContent = chatResContent?.Replace("字幕内容", "课堂情况");
|
||||||
chatResContent = chatResContent?.Replace("\n", "");
|
chatResContent = chatResContent?.Replace("\n", "");
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
||||||
$" 格式 (方法点Id|方法点名称) " +
|
$" 格式 (方法点Id|方法点名称) " +
|
||||||
$"提供的知识点名称({knows})。";
|
$"提供的知识点名称({knows})。";
|
||||||
Console.WriteLine(DateTime.Now + "=>2.开始分析视频内容知识点");
|
Console.WriteLine(DateTime.Now + "=>2.开始分析视频内容知识点");
|
||||||
var konwRes = await ChatAsync<VideoKnowRes[]>(taskInfo.Id.ToString(), knowMessages, null);
|
var konwRes = await ChatAsync<VideoKnowRes[]>(taskInfo.Id.ToString(), knowMessages, "知识点");
|
||||||
|
|
||||||
for (int i = 0; i < konwRes.Count(); i++)
|
for (int i = 0; i < konwRes.Count(); i++)
|
||||||
questionRes[i].KnowPoint = konwRes[i].KnowPoint;
|
questionRes[i].KnowPoint = konwRes[i].KnowPoint;
|
||||||
|
|
@ -144,7 +144,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
||||||
$"输出格式 json字符串 对象格式{fileNameResFormat}";
|
$"输出格式 json字符串 对象格式{fileNameResFormat}";
|
||||||
var task = taskInfo.Id.ToString();
|
var task = taskInfo.Id.ToString();
|
||||||
var fileNameInfoRes = await ChatAsync<FileNameInfo>
|
var fileNameInfoRes = await ChatAsync<FileNameInfo>
|
||||||
(task, fileNamePostMessages, null);
|
(task, fileNamePostMessages, "授课章节");
|
||||||
taskInfo.Sections = fileNameInfoRes.授课章节;
|
taskInfo.Sections = fileNameInfoRes.授课章节;
|
||||||
await videoTaskDB.AsUpdateable()
|
await videoTaskDB.AsUpdateable()
|
||||||
.SetColumns(it => it.Sections == fileNameInfoRes.授课章节)
|
.SetColumns(it => it.Sections == fileNameInfoRes.授课章节)
|
||||||
|
|
@ -174,7 +174,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
||||||
$"字幕格式(说话人:开始秒:结束秒:内容|下一段字幕).以下是包含时间的视频字幕文本。字幕列表 {captions.Captions}。" +
|
$"字幕格式(说话人:开始秒:结束秒:内容|下一段字幕).以下是包含时间的视频字幕文本。字幕列表 {captions.Captions}。" +
|
||||||
$"最后输出格式为json({checkResFormat})";
|
$"最后输出格式为json({checkResFormat})";
|
||||||
Console.WriteLine(DateTime.Now + "=>3.开始检查视频分段结果");
|
Console.WriteLine(DateTime.Now + "=>3.开始检查视频分段结果");
|
||||||
return await ChatAsync<CheckMessageDto>(taskInfo.Id.ToString(), checkMessage, null);
|
return await ChatAsync<CheckMessageDto>(taskInfo.Id.ToString(), checkMessage, "结果检查");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -202,20 +202,20 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
||||||
.Take(spanCount);
|
.Take(spanCount);
|
||||||
if (cArr.Count() == 0)
|
if (cArr.Count() == 0)
|
||||||
return;
|
return;
|
||||||
var nowCaptionStr = string.Join('|', cArr.Select(s => /*s.Start + ":" +*/ s.Text));
|
var nowCaptionStr =JsonSerializer.Serialize(cArr.Select(s =>s.Text));
|
||||||
var resFormat = """[string(修改结果)]""";
|
var resFormat = """[string(修改结果)]""";
|
||||||
var postMessages =
|
var postMessages =
|
||||||
$"这是一堂中国课的字幕由结果是语音识别提供。" +
|
$"这是一堂中国课的字幕由结果是语音识别提供。" +
|
||||||
$"字幕内容与{subject}学科{sections}章节相关。" +
|
$"字幕内容与{subject}学科{sections}章节相关。" +
|
||||||
$"需要你帮我修复其中的错别字,修复公式。" +
|
$"需要你帮我修复其中的错别字,修复公式。" +
|
||||||
$"请注意 只允许对字幕进行修改不允许删除字幕的字或者添加字。" +
|
$"请注意 只允许对字幕进行修改不允许删除字幕的字或者添加字。" +
|
||||||
$"请确保输出字幕条数与输入字幕条数一致!!!" +
|
|
||||||
$"输出内容只返回json格式({resFormat})" +
|
$"输出内容只返回json格式({resFormat})" +
|
||||||
$"字幕内容(使用|符号分割)" +
|
$"字幕内容(JSON字符串)" +
|
||||||
$"`{nowCaptionStr}`" +
|
$"`{nowCaptionStr}`" +
|
||||||
$"字幕结束。 ";
|
$"字幕结束。" +
|
||||||
|
$"最后请确保输出字幕条数与输入字幕条数一致!!! 如果不一致则重新优化并且确保字幕条数一致!!!!";
|
||||||
Console.WriteLine(DateTime.Now + $"=>字幕优化 分段{s}/{totalCount}开始...");
|
Console.WriteLine(DateTime.Now + $"=>字幕优化 分段{s}/{totalCount}开始...");
|
||||||
var resData = await ChatAsync<string[]>(taskInfo.Id.ToString(), postMessages, null, "deepseek-chat");
|
var resData = await ChatAsync<string[]>(taskInfo.Id.ToString(), postMessages, "优化字幕", "deepseek-chat");
|
||||||
if (resData.Count() != cArr.Count())
|
if (resData.Count() != cArr.Count())
|
||||||
{
|
{
|
||||||
Console.WriteLine(DateTime.Now + $"=>字幕优化 分段{s}/{totalCount} AI结果数量不匹配,重试");
|
Console.WriteLine(DateTime.Now + $"=>字幕优化 分段{s}/{totalCount} AI结果数量不匹配,重试");
|
||||||
|
|
@ -280,7 +280,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
||||||
$"字幕列表 {nowCaptionStr} 字幕结束!";
|
$"字幕列表 {nowCaptionStr} 字幕结束!";
|
||||||
|
|
||||||
Console.WriteLine(DateTime.Now + $"=>{taskInfo.Id.ToString()}.开始分析视频内容 {lastTime}~{endTime}");
|
Console.WriteLine(DateTime.Now + $"=>{taskInfo.Id.ToString()}.开始分析视频内容 {lastTime}~{endTime}");
|
||||||
questionRes.AddRange(await ChatAsync<VideoKnowRes[]>(taskInfo.Id.ToString(), postMessages, null));
|
questionRes.AddRange(await ChatAsync<VideoKnowRes[]>(taskInfo.Id.ToString(), postMessages, "分析字幕"));
|
||||||
lastTime = (int)questionRes.Last().EndTime.Value - (lastTime == 0 ? 0 : 30);
|
lastTime = (int)questionRes.Last().EndTime.Value - (lastTime == 0 ? 0 : 30);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
@ -371,11 +371,10 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<T> ChatAsync<T>(string task, string postMessages, string postMessages1, string model = "deepseek-reasoner")
|
public async Task<T> ChatAsync<T>(string task, string postMessages, string title, string model = "deepseek-reasoner")
|
||||||
{
|
{
|
||||||
Message[] messageArr = [
|
Message[] messageArr = [
|
||||||
new Message(postMessages,"user"),
|
new Message(postMessages,"user"),
|
||||||
string.IsNullOrEmpty(postMessages1)?null:new Message(postMessages1,"user"),
|
|
||||||
];
|
];
|
||||||
messageArr = messageArr.Where(s => s != null).ToArray();
|
messageArr = messageArr.Where(s => s != null).ToArray();
|
||||||
var chatRep = new ChatRequest
|
var chatRep = new ChatRequest
|
||||||
|
|
@ -391,14 +390,17 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
RedisExpand.SetTaskGPTReqCached(task, chatRep);
|
var time = title+DateTime.Now.ToString("MMddHHmmss");
|
||||||
|
var redisCached = new object[2] { chatRep, null };
|
||||||
|
RedisExpand.SetTaskGPTCached(task, time,chatRep);
|
||||||
var chatResp = await chatClient.Chat(chatRep);
|
var chatResp = await chatClient.Chat(chatRep);
|
||||||
var chatResContent = chatResp?.res;
|
var chatResContent = chatResp?.res;
|
||||||
if (string.IsNullOrEmpty(chatResContent))
|
if (string.IsNullOrEmpty(chatResContent))
|
||||||
throw new Exception("GPT返回message无效结果");
|
throw new Exception("GPT返回message无效结果");
|
||||||
if (chatResp != null)
|
if (chatResp != null) {
|
||||||
RedisExpand.SetTaskGPTCached(task, new object[] { chatResp.Value.res, chatResp.Value.u, chatResp.Value.reasoning });
|
redisCached[1] = new object[] { chatResp.Value.res, chatResp.Value.u, chatResp.Value.reasoning };
|
||||||
|
RedisExpand.SetTaskGPTCached(task, time, redisCached);
|
||||||
|
}
|
||||||
chatResContent = chatResContent?.Replace("字幕内容", "课堂情况");
|
chatResContent = chatResContent?.Replace("字幕内容", "课堂情况");
|
||||||
chatResContent = chatResContent?.Replace("\n", "");
|
chatResContent = chatResContent?.Replace("\n", "");
|
||||||
chatResContent = chatResContent?.Replace("```json", "");
|
chatResContent = chatResContent?.Replace("```json", "");
|
||||||
|
|
@ -437,7 +439,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 优化字幕
|
/// 提取试题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task<SenseVoiceRes[]> AnalysisVideoQuestions(VideoTask taskInfo)
|
private async Task<SenseVoiceRes[]> AnalysisVideoQuestions(VideoTask taskInfo)
|
||||||
|
|
@ -474,7 +476,7 @@ namespace VideoAnalysisCore.AICore.GPT.DeepSeek
|
||||||
$"输出内容只返回json格式为({resFormat})" +
|
$"输出内容只返回json格式为({resFormat})" +
|
||||||
$"以下是试题内容" +
|
$"以下是试题内容" +
|
||||||
$"`{sRes.Result.res.info.markdown}`";
|
$"`{sRes.Result.res.info.markdown}`";
|
||||||
var resData = await ChatAsync<VideoQuestion[]>(taskInfo.Id.ToString(), postMessages, null, "deepseek-chat");
|
var resData = await ChatAsync<VideoQuestion[]>(taskInfo.Id.ToString(), postMessages, "提取试题", "deepseek-chat");
|
||||||
foreach (var q in resData)
|
foreach (var q in resData)
|
||||||
{
|
{
|
||||||
q.VideoTaskId = taskInfo.Id;
|
q.VideoTaskId = taskInfo.Id;
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -106,13 +106,9 @@ namespace VideoAnalysisCore.Common
|
||||||
/// 缓存GPT任务缓存
|
/// 缓存GPT任务缓存
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="taskId"></param>
|
/// <param name="taskId"></param>
|
||||||
public static void SetTaskGPTCached(object taskId, object? data)
|
public static void SetTaskGPTCached(object taskId,string time, object? data)
|
||||||
{
|
{
|
||||||
Redis.Set(RedisExpandKey.TaskGPT(taskId) + ":" + DateTime.Now.ToString("MMddHHmmss") + "01", data, 3600 * 24);
|
Redis.Set(RedisExpandKey.TaskGPT(taskId) + ":" + time, data, 3600 * 24);
|
||||||
}
|
|
||||||
public static void SetTaskGPTReqCached(object taskId, object? data)
|
|
||||||
{
|
|
||||||
Redis.Set(RedisExpandKey.TaskGPT(taskId) + ":" + DateTime.Now.ToString("MMddHHmmss")+ "00", data, 3600 * 24);
|
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 加入到消费队列
|
/// 加入到消费队列
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue