Commit 579d8299 authored by 吴春's avatar 吴春

1

parent d80ca3d2
...@@ -278,5 +278,54 @@ namespace Edu.Cache.User ...@@ -278,5 +278,54 @@ namespace Edu.Cache.User
Common.Plugin.LogHelper.Write(ex, "AppletCustomerSet缓存设置失败"); Common.Plugin.LogHelper.Write(ex, "AppletCustomerSet缓存设置失败");
} }
} }
/// <summary>
/// 设置OpenAI调用信息缓存
/// </summary>
/// <param name="cacheKey"></param>
/// <param name="model"></param>
/// <param name="JwtExpirTime"></param>
public static void OpenAISet(string cacheKey, OpenAIModel model, int JwtExpirTime)
{
try
{
TimeSpan ts = GetExpirTime(JwtExpirTime);
redis.StringSet<OpenAIModel>(cacheKey, model, ts);
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "OpenAISet缓存设置失败");
}
}
/// <summary>
/// 获取OpenAI调用信息缓存
/// </summary>
/// <param name="cacheKey"></param>
/// <returns></returns>
public static OpenAIModel OpenAIGet(string cacheKey)
{
OpenAIModel openAIModel = null;
if (!string.IsNullOrWhiteSpace(cacheKey))
{
try
{
openAIModel = redis.StringGet<OpenAIModel>(cacheKey);
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "OpenAIGet");
}
}
else
{
openAIModel = new OpenAIModel();
}
return openAIModel;
}
} }
} }
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.API
{
/// <summary>
/// OpenAI返回数据信息
/// </summary>
public class OpenAIModel
{
public int AccountId { get; set; }
public int ApplicationId { get; set; }
public string KeyWord { get; set; }
public string TimeUtc { get; set; }
public int Status { get; set; }
public string CompletionResultModel { get; set; }
}
}
...@@ -116,7 +116,7 @@ namespace Edu.Repository.AI ...@@ -116,7 +116,7 @@ namespace Edu.Repository.AI
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
var parameters = new DynamicParameters(); var parameters = new DynamicParameters();
builder.AppendFormat(@" SELECT A.*,b.Name as SupplierName,c.DateType,c.StartDate as StuStartDate,c.EndDate as StuEndDate FROM RB_AI_PresetsApplication as A builder.AppendFormat(@" SELECT A.*,b.Name as SupplierName,b.SupplierType,c.DateType,c.StartDate as StuStartDate,c.EndDate as StuEndDate FROM RB_AI_PresetsApplication as A
inner join RB_AI_AuthorizeStudent as c on c.ApplicationId=a.ID inner join RB_AI_AuthorizeStudent as c on c.ApplicationId=a.ID
left join RB_AI_Supplier as b on a.SupplierId=b.Id WHERE 1=1 "); left join RB_AI_Supplier as b on a.SupplierId=b.Id WHERE 1=1 ");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_AI_PresetsApplication_ViewModel.Status), (int)DateStateEnum.Normal); builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_AI_PresetsApplication_ViewModel.Status), (int)DateStateEnum.Normal);
......
...@@ -77,6 +77,7 @@ namespace Edu.WebApi.Controllers.AI ...@@ -77,6 +77,7 @@ namespace Edu.WebApi.Controllers.AI
CreateTime = StringHelper.FormatDateTimeStr(extModel.CreateTime), CreateTime = StringHelper.FormatDateTimeStr(extModel.CreateTime),
LanguageType = extModel?.LanguageType ?? 0, LanguageType = extModel?.LanguageType ?? 0,
Enable = extModel?.Enable ?? 0, Enable = extModel?.Enable ?? 0,
SupplierType = extModel?.SupplierType ?? 0,
}); });
return ApiResult.Success(data: result); return ApiResult.Success(data: result);
} }
...@@ -215,8 +216,9 @@ namespace Edu.WebApi.Controllers.AI ...@@ -215,8 +216,9 @@ namespace Edu.WebApi.Controllers.AI
JObject jsonObject = JObject.Parse(resStr); JObject jsonObject = JObject.Parse(resStr);
if (jsonObject.GetStringValue("errorCode") == "0") if (jsonObject.GetStringValue("errorCode") == "0")
{ {
Task.Run(() => { aiModule.SetAIUseLogModule(userLogModel); }); int addId = aiModule.SetAIUseLogModule(userLogModel);
return ApiResult.Success(data: resStr); // Task.Run(() => { });
return ApiResult.Success(data: new { result = resStr, Id = addId });
} }
else else
{ {
...@@ -235,19 +237,74 @@ namespace Edu.WebApi.Controllers.AI ...@@ -235,19 +237,74 @@ namespace Edu.WebApi.Controllers.AI
completion.Prompt = keyWord; completion.Prompt = keyWord;
completion.Model = "gpt-4o-mini";//OpenAI_API.Models.Model.DavinciText; completion.Model = "gpt-4o-mini";//OpenAI_API.Models.Model.DavinciText;
completion.MaxTokens = 4000; completion.MaxTokens = 4000;
string dateStr = DateTime.Now.ToFileTimeUtc().ToString();
var resultModel = new OpenAIModel
{
AccountId = this.AppletUserInfo.AccountId,
ApplicationId = applicationId,
KeyWord = keyWord,
TimeUtc = dateStr,
Status = 0,
CompletionResultModel = "",
};
Cache.User.UserReidsCache.Set(this.AppletUserInfo.AccountId + "_" + "TimeUtc" + dateStr, resultModel, Common.Config.JwtExpirTime);
var result = openai.Completions.CreateCompletionAsync(completion); var result = openai.Completions.CreateCompletionAsync(completion);
int addId = aiModule.SetAIUseLogModule(userLogModel);
if (result != null) if (result != null)
{ {
foreach (var item in result.Result.Completions) try
{
var returnModel = Cache.User.UserReidsCache.OpenAIGet(this.AppletUserInfo.AccountId + "_" + "TimeUtc" + dateStr);
if (returnModel != null)
{ {
answer = item.Text; returnModel.Status = 1;
string completionResult = "";
if (result.Result != null)
{
completionResult = JsonHelper.Serialize(result.Result);
} }
returnModel.CompletionResultModel = completionResult;
Cache.User.UserReidsCache.Set(this.AppletUserInfo.AccountId + "_" + "TimeUtc" + dateStr, resultModel, Common.Config.JwtExpirTime);
} }
return ApiResult.Success(data: result.Result.Completions);
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "GetUserLoginInfo");
}
//foreach (var item in result.Result.Completions)
//{
// answer = item.Text;
//}
}
return ApiResult.Success(data: new { result = resultModel, Id = addId });
} }
return ApiResult.Success(); return ApiResult.Success();
} }
/// <summary>
/// 获取openAi的调用结果
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetOpenAIResult()
{
string dateStr = base.ParmJObj.GetStringValue("TimeUtc");
if (string.IsNullOrWhiteSpace(dateStr))
{
return ApiResult.ParamIsNull();
}
var returnModel = Cache.User.UserReidsCache.OpenAIGet(this.AppletUserInfo.AccountId + "_" + "TimeUtc" + dateStr);
if (returnModel == null)
{
return ApiResult.Failed("获取失败请重新调用");
}
return ApiResult.Success(data: returnModel);
}
/// <summary> /// <summary>
/// grade 级别 /// grade 级别
/// </summary> /// </summary>
...@@ -296,4 +353,6 @@ namespace Edu.WebApi.Controllers.AI ...@@ -296,4 +353,6 @@ namespace Edu.WebApi.Controllers.AI
return ApiResult.Success(data: new { ChinaGradeList = listChina.Select(x => new { Name = x.DescribeName, Value = x.Content }), EnglishGradeList = listEnglish.Select(x => new { Name = x.DescribeName, Value = x.Content, Score = x.RangeName }) }); return ApiResult.Success(data: new { ChinaGradeList = listChina.Select(x => new { Name = x.DescribeName, Value = x.Content }), EnglishGradeList = listEnglish.Select(x => new { Name = x.DescribeName, Value = x.Content, Score = x.RangeName }) });
} }
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment