Commit b5667563 authored by 吴春's avatar 吴春

1

parent b371fcf7
......@@ -74,6 +74,11 @@ namespace Edu.Model.Entity.AI
public string KeyWord { get; set; }
/// <summary>
/// 应用id
/// </summary>
public int ApplicationId { get; set; }
/// <summary>
/// 返回结果信息
/// </summary>
......
......@@ -15,9 +15,31 @@ namespace Edu.Model.ViewModel.AI
/// </summary>
public string SupplierName { get; set; }
/// <summary>
/// 供应商类型
/// </summary>
public int SupplierType { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
public string ApplicationName { get; set; }
/// <summary>
/// 学生名称
/// </summary>
public string StuName { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string StartDate { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndDate { get; set; }
}
}
......@@ -23,7 +23,8 @@ namespace Edu.Repository.AI
{
StringBuilder builder = new StringBuilder();
var parameters = new DynamicParameters();
builder.AppendFormat(@" SELECT A.*,b.Name as SupplierName FROM RB_AI_UseLog as A left join RB_AI_Supplier as b on a.SupplierId=b.Id
builder.AppendFormat(@" SELECT A.*,b.Name as SupplierName,b.SupplierType,pa.`Name` as ApplicationName FROM RB_AI_UseLog as A left join RB_AI_Supplier as b on a.SupplierId=b.Id
left join rb_ai_presetsapplication as pa on a.ApplicationId=pa.ID
left join rb_student as c on a.StudentId= c.StuId WHERE 1=1 ");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_AI_UseLog_ViewModel.Status), (int)DateStateEnum.Normal);
if (query != null)
......@@ -60,7 +61,8 @@ namespace Edu.Repository.AI
{
StringBuilder builder = new StringBuilder();
var parameters = new DynamicParameters();
builder.AppendFormat(@" SELECT A.*,b.Name as SupplierName FROM RB_AI_UseLog as A left join RB_AI_Supplier as b on a.SupplierId=b.Id
builder.AppendFormat(@"SELECT A.*,b.Name as SupplierName,b.SupplierType,pa.`Name` as ApplicationName FROM RB_AI_UseLog as A left join RB_AI_Supplier as b on a.SupplierId=b.Id
left join rb_ai_presetsapplication as pa on a.ApplicationId=pa.ID
left join rb_student as c on a.StudentId= c.StuId WHERE 1=1 ");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_AI_UseLog_ViewModel.Status), (int)DateStateEnum.Normal);
if (query != null)
......@@ -85,7 +87,16 @@ namespace Edu.Repository.AI
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_AI_UseLog_ViewModel.StudentId), query.StudentId);
}
if (!string.IsNullOrEmpty(query.StartDate))
{
builder.AppendFormat(@" AND A.{0}>='{1}' ", nameof(RB_AI_UseLog_ViewModel.CreateTime), query.StartDate);
}
if (!string.IsNullOrEmpty(query.EndDate))
{
builder.AppendFormat(@" AND A.{0}<='{1} 23:59:59' ", nameof(RB_AI_UseLog_ViewModel.CreateTime), query.EndDate);
}
}
builder.AppendFormat(" order by A.CreateTime desc");
return GetPage<RB_AI_UseLog_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
......
......@@ -152,6 +152,7 @@ namespace Edu.WebApi.Controllers.AI
userLogModel.School_Id = base.AppletUserInfo.School_Id;
userLogModel.CreateTime = DateTime.Now;
userLogModel.StudentId = this.AppletUserInfo.AccountId;
userLogModel.ApplicationId = applicationId;
userLogModel.SupplierId = applocationModel.SupplierId;
userLogModel.TokenNum = "";
userLogModel.Charging = "";
......@@ -171,7 +172,7 @@ namespace Edu.WebApi.Controllers.AI
{
return ApiResult.Failed("请上传图片信息");
}
else if ((Type ==2 || Type == 4) && string.IsNullOrWhiteSpace(keyWord))
else if ((Type == 2 || Type == 4) && string.IsNullOrWhiteSpace(keyWord))
{
return ApiResult.Failed("请输入关键字");
}
......@@ -236,42 +237,48 @@ namespace Edu.WebApi.Controllers.AI
else if (supplierModel.SupplierType == Common.Enum.AI.SupplierTypeEnum.OpenAI)
{
string answer = string.Empty;
var openai = new OpenAIAPI(basicConfigureModel.ApiKey);
CompletionRequest completion = new CompletionRequest();
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
// ChatClient client = new(model: "gpt-4o", apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY"));
// 初始化客户端
var api = new OpenAIAPI("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");
//basicConfigureModel.ApiKey // 调用GPT-3模型完成一段文本
var completionRequest = new CompletionRequest
{
AccountId = this.AppletUserInfo.AccountId,
ApplicationId = applicationId,
KeyWord = keyWord,
LogId = 0,
Status = 0,
CompletionResultModel = "",
Model = "gpt-4o-mini",
Prompt = keyWord,
MaxTokens = 4000,
};
var result = openai.Completions.CreateCompletionAsync(completion);
int addId = aiModule.SetAIUseLogModule(userLogModel);
if (addId > 0)
{
var resultModel = new OpenAIModel
{
AccountId = this.AppletUserInfo.AccountId,
ApplicationId = applicationId,
KeyWord = keyWord,
LogId = addId,
Status = 0,
CompletionResultModel = "",
};
Cache.User.UserReidsCache.Set(this.AppletUserInfo.AccountId + "_" + "LogId_" + addId, resultModel, Common.Config.JwtExpirTime);
var result = api.Completions.CreateCompletionAsync(completionRequest);
if (result != null)
{
try
{
resultModel.LogId = addId;
var returnModel = Cache.User.UserReidsCache.OpenAIGet(this.AppletUserInfo.AccountId + "_" + "LogId_" + addId);
if (returnModel != null)
{
returnModel.Status = 1;
string completionResult = "";
if (result.Result != null)
{
returnModel.Status = 1;
completionResult = JsonHelper.Serialize(result.Result);
returnModel.CompletionResultModel = completionResult;
Cache.User.UserReidsCache.Set(this.AppletUserInfo.AccountId + "_" + "LogId_" + addId, resultModel, Common.Config.JwtExpirTime);
}
returnModel.CompletionResultModel = completionResult;
Cache.User.UserReidsCache.Set(this.AppletUserInfo.AccountId + "_" + "LogId_" + addId, resultModel, Common.Config.JwtExpirTime);
}
}
catch (Exception ex)
......@@ -312,7 +319,78 @@ namespace Edu.WebApi.Controllers.AI
return ApiResult.Success(data: returnModel);
}
/// <summary>
/// 根据id获取详情信息
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserLog()
{
int Id = base.ParmJObj.GetInt("Id", 0);
if (Id <= 0)
{
return ApiResult.ParamIsNull();
}
var model = aiModule.GetAIUseLogEntity(Id);
var result = new
{
model.ID,
model.ApplicationId,
model.SupplierId,
model.Charging,
model.TokenNum,
model.KeyWordType,
model.KeyWord,
model.ResultInfo,
SupplierType = model?.SupplierType ?? 0,
PresetsApplicationName = model?.ApplicationName ?? "",
SupplierName = model?.SupplierName ?? "",
CreateTime = StringHelper.FormatDateTimeStr(model.CreateTime),
};
return ApiResult.Success(data: result);
}
/// <summary>
/// 获取AI调用记录分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAIUseLogPageList()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_AI_UseLog_ViewModel
{
StudentId = base.AppletUserInfo.AccountId,
EndDate = base.ParmJObj.GetStringValue("EndDate"),
StartDate = base.ParmJObj.GetStringValue("StartDate"),
Group_Id = base.AppletUserInfo.Group_Id,
};
if (string.IsNullOrWhiteSpace(query.StartDate) && string.IsNullOrWhiteSpace(query.EndDate))
{
query.StartDate = StringHelper.FormatDate(DateTime.Now.AddMonths(-3));
}
var list = aiModule.GetAIUseLogPageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list.Select(x => new
{
x.ID,
x.ApplicationId,
x.SupplierId,
x.Charging,
x.TokenNum,
x.KeyWordType,
x.KeyWord,
x.ResultInfo,
SupplierType = x?.SupplierType ?? 0,
PresetsApplicationName = x?.ApplicationName ?? "",
SupplierName = x?.SupplierName ?? "",
CreateTime = StringHelper.FormatDateTimeStr(x.CreateTime),
});
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// grade 级别
/// </summary>
......
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