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

1

parent d80ca3d2
......@@ -76,13 +76,13 @@ namespace Edu.Cache.User
{
TimeSpan ts = GetExpirTime(JwtExpirTime);
redis.StringSet(cacheKey, Data, ts);
}
catch (Exception)
{
}
}
/// <summary>
......@@ -278,5 +278,54 @@ namespace Edu.Cache.User
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
{
StringBuilder builder = new StringBuilder();
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
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);
......
......@@ -51,7 +51,7 @@ namespace Edu.WebApi.Controllers.AI
{
var query = new RB_AI_PresetsApplication_ViewModel();// Common.Plugin.JsonHelper.DeserializeObject<RB_AI_AuthorizeStudent_ViewModel>(RequestParm.Msg.ToString());
query.Group_Id = base.AppletUserInfo.Group_Id;
// query.School_Id = base.AppletUserInfo.School_Id;
// query.School_Id = base.AppletUserInfo.School_Id;
query.StudentId = this.AppletUserInfo.AccountId;
query.Enable = 1;
query.IsEffective = 1;
......@@ -77,6 +77,7 @@ namespace Edu.WebApi.Controllers.AI
CreateTime = StringHelper.FormatDateTimeStr(extModel.CreateTime),
LanguageType = extModel?.LanguageType ?? 0,
Enable = extModel?.Enable ?? 0,
SupplierType = extModel?.SupplierType ?? 0,
});
return ApiResult.Success(data: result);
}
......@@ -215,8 +216,9 @@ namespace Edu.WebApi.Controllers.AI
JObject jsonObject = JObject.Parse(resStr);
if (jsonObject.GetStringValue("errorCode") == "0")
{
Task.Run(() => { aiModule.SetAIUseLogModule(userLogModel); });
return ApiResult.Success(data: resStr);
int addId = aiModule.SetAIUseLogModule(userLogModel);
// Task.Run(() => { });
return ApiResult.Success(data: new { result = resStr, Id = addId });
}
else
{
......@@ -235,19 +237,74 @@ namespace Edu.WebApi.Controllers.AI
completion.Prompt = keyWord;
completion.Model = "gpt-4o-mini";//OpenAI_API.Models.Model.DavinciText;
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);
int addId = aiModule.SetAIUseLogModule(userLogModel);
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)
{
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);
}
}
catch (Exception ex)
{
answer = item.Text;
Common.Plugin.LogHelper.Write(ex, "GetUserLoginInfo");
}
//foreach (var item in result.Result.Completions)
//{
// answer = item.Text;
//}
}
return ApiResult.Success(data: result.Result.Completions);
return ApiResult.Success(data: new { result = resultModel, Id = addId });
}
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>
/// grade 级别
/// </summary>
......@@ -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 }) });
}
}
}
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