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;
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;
......@@ -62,6 +63,9 @@ public class AppChatCompletionService {
@Value("${deepseek.app_id}")
private String dsAppId;
@Value("${deepseek.diss_api_base}")
private String dissApiBase;
private final RestTemplate restTemplate = new RestTemplate();
private final ChatCompletionService chatCompletionService;
......@@ -371,7 +375,7 @@ public class AppChatCompletionService {
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
AiChatComplateResultDto complateResultDto = ask4Knowledge(sessionId, userPrincipal.getUserId(), request.getContent(), request.getAssistantId());
......@@ -387,7 +391,7 @@ public class AppChatCompletionService {
}
// 保存AI问答详情
chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId());
chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId(), "");
result.setChatCompletionId(chatCompletionId);
result.setReplyContent(replyContent);
......@@ -431,7 +435,7 @@ public class AppChatCompletionService {
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();
......@@ -501,7 +505,7 @@ public class AppChatCompletionService {
chatCompletionService.saveUserQaSession(updateModel);
}
// 保存AI问答详情
chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId());
chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId(), "");
}
).map(v -> ServerSentEvent.builder(v).build());
}
......@@ -542,7 +546,7 @@ public class AppChatCompletionService {
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();
......@@ -585,6 +589,7 @@ public class AppChatCompletionService {
final String[] thoughtContent = {""};
final String[] replyContent = {""};
final String[] difySessionId = {""};
final String[] recordId = {""};
final Boolean[] replyFlag = {false};
String finalSessionId = sessionId;
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 {
if(ObjectUtil.isEmpty(difySessionId[0]) && ObjectUtil.isNotEmpty(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];
......@@ -642,7 +650,7 @@ public class AppChatCompletionService {
chatCompletionService.saveUserQaSession(updateModel);
}
// 保存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());
}
......@@ -749,6 +757,23 @@ public class AppChatCompletionService {
saveModel.setId(model.getId());
saveModel.setDiss(status);
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 {
*/
private Integer likes;
/**
* 问答记录ID
*/
private String recordId;
/**
* 创建时间
*/
......
......@@ -31,7 +31,7 @@ public interface ChatCompletionService {
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);
......
......@@ -150,13 +150,14 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
}
@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();
entity.setChatCompletionId(chatCompletionId);
entity.setType(type);
entity.setReplyMessageId(replyMessageId);
entity.setContent(content);
entity.setAssistantId(assistantId);
entity.setRecordId(recordId);
entity.setCreateTime(new Date());
chatCompletionHistoryMapper.insertOrUpdateSelective(entity);
return entity.getId();
......
......@@ -65,6 +65,13 @@ public class UserChatCompletionHistoryEntity implements Serializable {
* AI回复用户消息ID
*/
private Integer replyMessageId;
/**
* 问答记录ID
*/
private String recordId;
/**
* 创建时间
*/
......
......@@ -28,6 +28,7 @@ deepseek:
secret_id: AKIDHMA2jAKD6dwzpPikWR5TbT5RWLtAAuNZ
app_key: imNDldBw
api_base: https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse
diss_api_base: https://lke.tencentcloudapi.com/
---
spring:
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