Commit 278a355e authored by yangyw's avatar yangyw

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

parents 93e0f0a3 10cb0e1a
...@@ -31,6 +31,7 @@ import org.springframework.stereotype.Component; ...@@ -31,6 +31,7 @@ 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;
...@@ -62,6 +63,9 @@ public class AppChatCompletionService { ...@@ -62,6 +63,9 @@ public class AppChatCompletionService {
@Value("${deepseek.app_id}") @Value("${deepseek.app_id}")
private String dsAppId; private String dsAppId;
@Value("${deepseek.diss_api_base}")
private String dissApiBase;
private final RestTemplate restTemplate = new RestTemplate(); private final RestTemplate restTemplate = new RestTemplate();
private final ChatCompletionService chatCompletionService; private final ChatCompletionService chatCompletionService;
...@@ -371,7 +375,7 @@ public class AppChatCompletionService { ...@@ -371,7 +375,7 @@ public class AppChatCompletionService {
Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel); Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel);
// 保存问答详情 // 保存问答详情
Integer userQaRecordId = chatCompletionService.saveUserQaRecord(chatCompletionId, 0, null, request.getContent(), request.getAssistantId()); Integer userQaRecordId = chatCompletionService.saveUserQaRecord(chatCompletionId, 0, null, request.getContent(), request.getAssistantId(), "");
// 问一下AI // 问一下AI
AiChatComplateResultDto complateResultDto = ask4Knowledge(sessionId, userPrincipal.getUserId(), request.getContent(), request.getAssistantId()); AiChatComplateResultDto complateResultDto = ask4Knowledge(sessionId, userPrincipal.getUserId(), request.getContent(), request.getAssistantId());
...@@ -387,7 +391,7 @@ public class AppChatCompletionService { ...@@ -387,7 +391,7 @@ public class AppChatCompletionService {
} }
// 保存AI问答详情 // 保存AI问答详情
chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId()); chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId(), "");
result.setChatCompletionId(chatCompletionId); result.setChatCompletionId(chatCompletionId);
result.setReplyContent(replyContent); result.setReplyContent(replyContent);
...@@ -431,7 +435,7 @@ public class AppChatCompletionService { ...@@ -431,7 +435,7 @@ public class AppChatCompletionService {
Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel); Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel);
// 保存问答详情 // 保存问答详情
Integer userQaRecordId = chatCompletionService.saveUserQaRecord(chatCompletionId, 0, null, request.getContent(), request.getAssistantId()); Integer userQaRecordId = chatCompletionService.saveUserQaRecord(chatCompletionId, 0, null, request.getContent(), request.getAssistantId(), "");
// 获取随机问题 // 获取随机问题
final List<HotQaMobileDto> hots = Lists.newArrayList(); final List<HotQaMobileDto> hots = Lists.newArrayList();
...@@ -501,7 +505,7 @@ public class AppChatCompletionService { ...@@ -501,7 +505,7 @@ public class AppChatCompletionService {
chatCompletionService.saveUserQaSession(updateModel); chatCompletionService.saveUserQaSession(updateModel);
} }
// 保存AI问答详情 // 保存AI问答详情
chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId()); chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId(), "");
} }
).map(v -> ServerSentEvent.builder(v).build()); ).map(v -> ServerSentEvent.builder(v).build());
} }
...@@ -542,7 +546,7 @@ public class AppChatCompletionService { ...@@ -542,7 +546,7 @@ public class AppChatCompletionService {
Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel); Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel);
// 保存问答详情 // 保存问答详情
Integer userQaRecordId = chatCompletionService.saveUserQaRecord(chatCompletionId, 0, null, request.getContent(), request.getAssistantId()); Integer userQaRecordId = chatCompletionService.saveUserQaRecord(chatCompletionId, 0, null, request.getContent(), request.getAssistantId(), "");
// 获取随机问题 // 获取随机问题
final List<HotQaMobileDto> hots = Lists.newArrayList(); final List<HotQaMobileDto> hots = Lists.newArrayList();
...@@ -585,6 +589,7 @@ public class AppChatCompletionService { ...@@ -585,6 +589,7 @@ public class AppChatCompletionService {
final String[] thoughtContent = {""}; final String[] thoughtContent = {""};
final String[] replyContent = {""}; final String[] replyContent = {""};
final String[] difySessionId = {""}; final String[] difySessionId = {""};
final String[] recordId = {""};
final Boolean[] replyFlag = {false}; final Boolean[] replyFlag = {false};
String finalSessionId = sessionId; String finalSessionId = sessionId;
return webClient.post().uri(dsApiBase).accept(MediaType.TEXT_EVENT_STREAM).bodyValue(reqBody.toJSONString()).exchangeToFlux(r -> r.bodyToFlux(String.class)) return webClient.post().uri(dsApiBase).accept(MediaType.TEXT_EVENT_STREAM).bodyValue(reqBody.toJSONString()).exchangeToFlux(r -> r.bodyToFlux(String.class))
...@@ -619,6 +624,9 @@ public class AppChatCompletionService { ...@@ -619,6 +624,9 @@ public class AppChatCompletionService {
if(ObjectUtil.isEmpty(difySessionId[0]) && ObjectUtil.isNotEmpty(payload.getString("session_id"))) { if(ObjectUtil.isEmpty(difySessionId[0]) && ObjectUtil.isNotEmpty(payload.getString("session_id"))) {
difySessionId[0] = payload.getString("session_id"); difySessionId[0] = payload.getString("session_id");
} }
if (StrUtil.isBlank(recordId[0]) && StrUtil.isNotBlank(payload.getString("record_id"))) {
recordId[0] = payload.getString("record_id");
}
} }
} }
String finalContent = thoughtContent[0]; String finalContent = thoughtContent[0];
...@@ -642,7 +650,7 @@ public class AppChatCompletionService { ...@@ -642,7 +650,7 @@ public class AppChatCompletionService {
chatCompletionService.saveUserQaSession(updateModel); chatCompletionService.saveUserQaSession(updateModel);
} }
// 保存AI问答详情 // 保存AI问答详情
chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, finalContent, request.getAssistantId()); chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, finalContent, request.getAssistantId(), recordId[0]);
} }
).map(v -> ServerSentEvent.builder(v).build()); ).map(v -> ServerSentEvent.builder(v).build());
} }
...@@ -749,6 +757,23 @@ public class AppChatCompletionService { ...@@ -749,6 +757,23 @@ public class AppChatCompletionService {
saveModel.setId(model.getId()); saveModel.setId(model.getId());
saveModel.setDiss(status); saveModel.setDiss(status);
chatCompletionService.saveUserQaRecord(saveModel); chatCompletionService.saveUserQaRecord(saveModel);
// 提交腾讯云踩的数据
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);
});
}
}
} }
} }
......
...@@ -35,6 +35,11 @@ public class UserChatCompletionHistoryResponseModel implements Serializable { ...@@ -35,6 +35,11 @@ public class UserChatCompletionHistoryResponseModel implements Serializable {
*/ */
private Integer likes; private Integer likes;
/**
* 问答记录ID
*/
private String recordId;
/** /**
* 创建时间 * 创建时间
*/ */
......
...@@ -31,7 +31,7 @@ public interface ChatCompletionService { ...@@ -31,7 +31,7 @@ public interface ChatCompletionService {
Integer saveUserQaSession(UserChatCompletionSaveModel dto); Integer saveUserQaSession(UserChatCompletionSaveModel dto);
Integer saveUserQaRecord(Integer chatCompletionId, Integer type, Integer replyMessageId, String content, Integer assistantId); Integer saveUserQaRecord(Integer chatCompletionId, Integer type, Integer replyMessageId, String content, Integer assistantId, String recordId);
Integer saveUserQaRecord(UserQaHistorySaveModel dto); Integer saveUserQaRecord(UserQaHistorySaveModel dto);
......
...@@ -150,13 +150,14 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{ ...@@ -150,13 +150,14 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
} }
@Override @Override
public Integer saveUserQaRecord(Integer chatCompletionId, Integer type, Integer replyMessageId, String content, Integer assistantId) { public Integer saveUserQaRecord(Integer chatCompletionId, Integer type, Integer replyMessageId, String content, Integer assistantId, String recordId) {
UserChatCompletionHistoryEntity entity = new UserChatCompletionHistoryEntity(); UserChatCompletionHistoryEntity entity = new UserChatCompletionHistoryEntity();
entity.setChatCompletionId(chatCompletionId); entity.setChatCompletionId(chatCompletionId);
entity.setType(type); entity.setType(type);
entity.setReplyMessageId(replyMessageId); entity.setReplyMessageId(replyMessageId);
entity.setContent(content); entity.setContent(content);
entity.setAssistantId(assistantId); entity.setAssistantId(assistantId);
entity.setRecordId(recordId);
entity.setCreateTime(new Date()); entity.setCreateTime(new Date());
chatCompletionHistoryMapper.insertOrUpdateSelective(entity); chatCompletionHistoryMapper.insertOrUpdateSelective(entity);
return entity.getId(); return entity.getId();
......
...@@ -65,6 +65,13 @@ public class UserChatCompletionHistoryEntity implements Serializable { ...@@ -65,6 +65,13 @@ public class UserChatCompletionHistoryEntity implements Serializable {
* AI回复用户消息ID * AI回复用户消息ID
*/ */
private Integer replyMessageId; private Integer replyMessageId;
/**
* 问答记录ID
*/
private String recordId;
/** /**
* 创建时间 * 创建时间
*/ */
......
...@@ -28,6 +28,7 @@ deepseek: ...@@ -28,6 +28,7 @@ deepseek:
secret_id: AKIDHMA2jAKD6dwzpPikWR5TbT5RWLtAAuNZ secret_id: AKIDHMA2jAKD6dwzpPikWR5TbT5RWLtAAuNZ
app_key: imNDldBw app_key: imNDldBw
api_base: https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse api_base: https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse
diss_api_base: https://lke.tencentcloudapi.com/
--- ---
spring: spring:
config: config:
......
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