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