mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-03-13 20:53:42 +08:00
feat: 处理在非Web线程中获取Request中token失败的问题;
This commit is contained in:
@@ -77,4 +77,9 @@ public class ChatRequest {
|
||||
*/
|
||||
private Boolean autoSelectModel;
|
||||
|
||||
/**
|
||||
* 会话令牌(为避免在非Web线程中获取Request,入口处注入)
|
||||
*/
|
||||
private String token;
|
||||
|
||||
}
|
||||
|
||||
@@ -128,8 +128,8 @@ public class ImageServiceImpl implements IChatService {
|
||||
OpenAiStreamClient openAiStreamClient = ChatConfig.createOpenAiStreamClient(chatModelVo.getApiHost(), chatModelVo.getApiKey());
|
||||
List<Message> messages = chatRequest.getMessages();
|
||||
|
||||
// 获取会话token
|
||||
String token = StpUtil.getTokenValue();
|
||||
// 获取会话token(从入口透传,避免非Web线程取值报错)
|
||||
String token = chatRequest.getToken();
|
||||
// 创建 SSE 事件源监听器
|
||||
SSEEventSourceListener listener = new SSEEventSourceListener(emitter, chatRequest.getUserId(), chatRequest.getSessionId(), token);
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ public class OpenAIServiceImpl implements IChatService {
|
||||
Message userMessage = Message.builder().content("工具返回信息:"+toolString).role(Message.Role.USER).build();
|
||||
messages.add(userMessage);
|
||||
}
|
||||
String token = StpUtil.getTokenValue();
|
||||
String token = chatRequest.getToken();
|
||||
SSEEventSourceListener listener = new SSEEventSourceListener(emitter,chatRequest.getUserId(),chatRequest.getSessionId(), token);
|
||||
ChatCompletion completion = ChatCompletion
|
||||
.builder()
|
||||
|
||||
@@ -47,6 +47,7 @@ import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
|
||||
/**
|
||||
* @author ageer
|
||||
@@ -77,6 +78,12 @@ public class SseServiceImpl implements ISseService {
|
||||
public SseEmitter sseChat(ChatRequest chatRequest, HttpServletRequest request) {
|
||||
SseEmitter sseEmitter = new SseEmitter(0L);
|
||||
try {
|
||||
// 记录当前会话令牌,供异步线程使用
|
||||
try {
|
||||
chatRequest.setToken(StpUtil.getTokenValue());
|
||||
} catch (Exception ignore) {
|
||||
// 保底:无token场景下忽略
|
||||
}
|
||||
// 构建消息列表
|
||||
buildChatMessageList(chatRequest);
|
||||
// 设置对话角色
|
||||
|
||||
Reference in New Issue
Block a user