Commit 05301276 authored by yangyw's avatar yangyw

Merge branch 'refs/heads/feature/20241217_收尾' into sandbox

# Conflicts:
#	src/main/java/cn/breeze/elleai/application/service/AppChatCompletionService.java
parents 50f4bea0 91740181
......@@ -9,17 +9,19 @@ import cn.breeze.elleai.domain.sparring.model.response.*;
import cn.breeze.elleai.domain.sparring.service.ChatCompletionService;
import cn.breeze.elleai.domain.sparring.service.KbService;
import cn.breeze.elleai.domain.sparring.service.KbTagService;
import cn.breeze.elleai.facade.TencentCloudFacade;
import cn.breeze.elleai.util.UserPrincipal;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.mybatisflex.core.paginate.Page;
import io.swagger.models.auth.In;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -31,7 +33,6 @@ import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.util.*;
import java.util.stream.Collectors;
......@@ -70,6 +71,8 @@ public class AppChatCompletionService {
private final ChatCompletionService chatCompletionService;
private final TencentCloudFacade tencentCloudFacade;
private final KbService kbService;
private final KbTagService kbTagService;
......@@ -347,8 +350,17 @@ public class AppChatCompletionService {
public UserAskResultMobileDto userAsk(UserPrincipal userPrincipal, UserQaMobileRequestDto request) {
UserAskResultMobileDto result = new UserAskResultMobileDto();
// dify session id
// 获取会话详情
UserQaRequestModel requestModel = new UserQaRequestModel();
requestModel.setChatCompletionId(request.getChatCompletionId());
requestModel.setUserId(userPrincipal.getUserId());
UserChatCompletionResponseModel ccModel = chatCompletionService.userQaDetail(requestModel);
String sessionId = "";
if(Objects.nonNull(ccModel) && StrUtil.isNotEmpty(ccModel.getSessionId())) {
sessionId = ccModel.getSessionId();
}
// 更新会话信息
UserChatCompletionSaveModel saveModel = new UserChatCompletionSaveModel();
saveModel.setUserId(userPrincipal.getUserId());
......@@ -362,15 +374,6 @@ public class AppChatCompletionService {
if(Objects.isNull(request.getChatCompletionId())) {
saveModel.setCreateTime(new Date());
saveModel.setFirstQuestion(request.getContent());
} else {
// 获取会话详情
UserQaRequestModel requestModel = new UserQaRequestModel();
requestModel.setChatCompletionId(request.getChatCompletionId());
requestModel.setUserId(userPrincipal.getUserId());
UserChatCompletionResponseModel ccModel = chatCompletionService.userQaDetail(requestModel);
if(Objects.nonNull(ccModel) && StrUtil.isNotEmpty(ccModel.getSessionId())) {
sessionId = ccModel.getSessionId();
}
}
Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel);
......@@ -407,8 +410,17 @@ public class AppChatCompletionService {
* @return
*/
public Flux<ServerSentEvent<UserAskResultMobileDto>> userAsk4Stream(UserPrincipal userPrincipal, UserQaMobileRequestDto request) {
// dify session id
// 获取会话详情
UserQaRequestModel requestModel = new UserQaRequestModel();
requestModel.setChatCompletionId(request.getChatCompletionId());
requestModel.setUserId(userPrincipal.getUserId());
UserChatCompletionResponseModel ccModel = chatCompletionService.userQaDetail(requestModel);
String sessionId = "";
if(Objects.nonNull(ccModel) && StrUtil.isNotEmpty(ccModel.getSessionId())) {
sessionId = ccModel.getSessionId();
}
// 更新会话信息
UserChatCompletionSaveModel saveModel = new UserChatCompletionSaveModel();
saveModel.setUserId(userPrincipal.getUserId());
......@@ -422,15 +434,6 @@ public class AppChatCompletionService {
if(Objects.isNull(request.getChatCompletionId())) {
saveModel.setCreateTime(new Date());
saveModel.setFirstQuestion(request.getContent());
} else {
// 获取会话详情
UserQaRequestModel requestModel = new UserQaRequestModel();
requestModel.setChatCompletionId(request.getChatCompletionId());
requestModel.setUserId(userPrincipal.getUserId());
UserChatCompletionResponseModel ccModel = chatCompletionService.userQaDetail(requestModel);
if(Objects.nonNull(ccModel) && StrUtil.isNotEmpty(ccModel.getSessionId())) {
sessionId = ccModel.getSessionId();
}
}
Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel);
......@@ -439,9 +442,7 @@ public class AppChatCompletionService {
// 获取随机问题
final List<HotQaMobileDto> hots = Lists.newArrayList();
QaAssistantRequestDto assistantRequestDto = new QaAssistantRequestDto();
assistantRequestDto.setAssistantId(request.getAssistantId());
PageResult<HotQaMobileDto> pageResult = kbService.hotQaList(assistantRequestDto);
PageResult<HotQaMobileDto> pageResult = this.hotQaList(new QaAssistantRequestDto());
if(Objects.nonNull(pageResult) && CollectionUtil.isNotEmpty(pageResult.getItems())) {
List<HotQaMobileDto> items = pageResult.getItems();
if(items.size() > 2){
......@@ -450,9 +451,7 @@ public class AppChatCompletionService {
}
hots.addAll(items);
}
HotQaRequestModel hotQaRequestModel = new HotQaRequestModel();
hotQaRequestModel.setAssistantId(request.getAssistantId());
List<HotQaResponseModel> hotQaList = chatCompletionService.hotQaList(hotQaRequestModel);
List<HotQaResponseModel> hotQaList = chatCompletionService.hotQaList(new HotQaRequestModel());
if(CollectionUtil.isNotEmpty(hotQaList)) {
Collections.shuffle(hotQaList);
if(hotQaList.size() > 2) {
......@@ -731,18 +730,7 @@ public class AppChatCompletionService {
hots.add(dto);
});
}
// 获取5个随机系统判断热门问题
PageResult<HotQaMobileDto> pageResult = kbService.hotQaList(request);
if(Objects.nonNull(pageResult) && CollectionUtil.isNotEmpty(pageResult.getItems())) {
List<HotQaMobileDto> items = pageResult.getItems();
if(items.size() > 5){
Collections.shuffle(items);
items = items.subList(0, 5);
}
hots.addAll(items);
}
pageResult.setItems(hots);
return pageResult;
return PageResult.of(1, 10 , 5, hots);
}
/**
......@@ -760,18 +748,11 @@ public class AppChatCompletionService {
// 提交腾讯云踩的数据
if (ObjectUtil.equals(1, status)) {
if (StrUtil.isNotBlank(model.getRecordId())) {
com.alibaba.fastjson2.JSONObject body = new com.alibaba.fastjson2.JSONObject();
body.put("RecordId", model.getRecordId());
body.put("Score", 2);
body.put("BotAppKey", dsAppKey);
webClient.post().uri(dissApiBase)
.header("X-TC-Action", "RateMsgRecord")
.header("X-TC-Region", "ap-guangzhou")
.header("X-TC-Version", "2023-11-30")
.contentType(MediaType.APPLICATION_JSON).bodyValue(body.toJSONString())
.exchangeToMono(r -> r.bodyToMono(String.class)).subscribe(res -> {
log.info("踩数据提交结果:{}", res);
});
try {
tencentCloudFacade.dissMessage(dsAppKey, model.getRecordId());
} catch (TencentCloudSDKException e) {
log.info("提交腾讯云踩数据异常{}", ExceptionUtil.getMessage(e));
}
}
}
}
......
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