搭配生成 添加sessionId

This commit is contained in:
2025-11-03 16:03:53 +08:00
parent 9952c36e29
commit 0f1481878a
4 changed files with 19 additions and 9 deletions

View File

@@ -30,7 +30,7 @@ public class ChatController {
@Parameter(description = "用户输入的消息内容", example = "你好,请介绍一下自己")
@RequestParam(required = false) String message,
@Parameter(description = "会话ID", example = "123456", required = true)
@Parameter(description = "会话ID", example = "1740968404", required = true)
@RequestParam Long sessionId,
@Parameter(description = "性别", example = "male | female", required = true)

View File

@@ -52,4 +52,11 @@ public class RequestOutfitDTO {
)
private int num = 1;
@Schema(
description = "会话id",
example = "1740968404",
requiredMode = Schema.RequiredMode.REQUIRED
)
private String sessionId;
}

View File

@@ -30,11 +30,12 @@ public class ChatServiceImpl implements ChatService {
*/
public SseEmitter streamChat(String message, Long sessionId, String gender) {
SseEmitter emitter = new SseEmitter(0L);
Long userId = UserContext.getUserHolder().getId();
CompletableFuture.runAsync(() -> {
try {
// 连接第三方AI服务
processAIStream(message, sessionId.toString(), gender, emitter);
processAIStream(message, userId, sessionId.toString(), gender, emitter);
emitter.complete();
} catch (Exception e) {
log.error("AI流式对话处理失败", e);
@@ -48,14 +49,14 @@ public class ChatServiceImpl implements ChatService {
/**
* 处理第三方AI服务的流式响应
*/
private void processAIStream(String message, String sessionId, String gender, SseEmitter emitter) {
private void processAIStream(String message, Long userId, String sessionId, String gender, SseEmitter emitter) {
HttpURLConnection connection = null;
try {
// 1. 创建AI服务连接
connection = createAIConnection();
// 2. 发送请求到AI服务
sendToAI(connection, message, sessionId, gender);
sendToAI(connection, message, userId, sessionId, gender);
// 3. 流式读取并转发响应
streamAIResponse(connection, emitter, sessionId);
@@ -89,13 +90,12 @@ public class ChatServiceImpl implements ChatService {
/**
* 发送请求到AI服务
*/
private void sendToAI(HttpURLConnection connection, String message, String sessionId, String gender)
private void sendToAI(HttpURLConnection connection, String message, Long userId, String sessionId, String gender)
throws IOException {
Long userId = UserContext.getUserHolder().getId();
// 构建AI服务请求体
JSONObject requestBody = new JSONObject();
requestBody.put("user_message", message);
requestBody.put("user_id", userId);
requestBody.put("user_id", userId.toString());
requestBody.put("session_id", sessionId);
requestBody.put("gender", gender); // 启用流式输出

View File

@@ -51,7 +51,8 @@ public class StyleServiceImpl extends ServiceImpl<StyleMapper, Style> implements
// 请求需要顾客id, 生成的数量,风格
StylistPathEnum stylistPathEnum = StylistPathEnum.of(requestOutfitDTO.getStylist());
Map<String, Object> params = setRequestOutfitParams(requestOutfitDTO.getCustomerId(), requestOutfitDTO.getNum(), stylistPathEnum.getPath(), requestOutfitDTO.getGender());
Map<String, Object> params = setRequestOutfitParams(requestOutfitDTO.getCustomerId(), requestOutfitDTO.getNum(),
stylistPathEnum.getPath(), requestOutfitDTO.getGender(), requestOutfitDTO.getSessionId());
OutfitRequest outfitRequest = new OutfitRequest();
outfitRequest.setCustomerId(requestOutfitDTO.getCustomerId());
@@ -60,6 +61,7 @@ public class StyleServiceImpl extends ServiceImpl<StyleMapper, Style> implements
outfitRequest.setGender(requestOutfitDTO.getGender());
outfitRequestMapper.insert(outfitRequest);
log.info("agent request params: {}", JSON.toJSONString(params));
String response = SendRequestUtil.sendPostWithRetry(CommonConstants.REQUEST_OUTFIT, JSON.toJSONString(params));
JSONObject jsonObject = JSONObject.parseObject(response); // todo 确认这里的status的取值
@@ -92,7 +94,7 @@ public class StyleServiceImpl extends ServiceImpl<StyleMapper, Style> implements
}
private Map<String, Object> setRequestOutfitParams(Long customerId, int num, String stylistPath, String gender) {
private Map<String, Object> setRequestOutfitParams(Long customerId, int num, String stylistPath, String gender, String sessionId) {
HashMap<String, Object> params = new HashMap<>();
params.put("user_id", customerId.toString());
params.put("num_outfits", num);
@@ -100,6 +102,7 @@ public class StyleServiceImpl extends ServiceImpl<StyleMapper, Style> implements
params.put("callback_url", webhookDomain);
params.put("gender", gender);
params.put("max_len", 9);
params.put("session_id", sessionId);
return params;
}