|
|
@@ -40,7 +40,6 @@ import java.time.Duration;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
@Managed
|
|
|
@@ -75,8 +74,11 @@ public class AiService {
|
|
|
|
|
|
|
|
|
private final Map<String, AgentSession> sessionMap = new ConcurrentHashMap<>();
|
|
|
- private final AgentSessionProvider sessionProvider = (sessionId) -> sessionMap.computeIfAbsent(sessionId, key ->
|
|
|
- new FileAgentSession(key, PathConst.AGENT_PATH.resolve(AgentRuntime.SESSION_PATH, key).toString()));
|
|
|
+ private final AgentSessionProvider sessionProvider = (sessionId) -> sessionMap.computeIfAbsent(sessionId, key -> {
|
|
|
+ List<String> split = StrUtil.split(sessionId, "_");
|
|
|
+ String last = split.getLast();
|
|
|
+ return new FileAgentSession(key, PathConst.AGENT_PATH.resolve(AgentRuntime.SESSION_PATH, last, key).toString());
|
|
|
+ });
|
|
|
|
|
|
public void createModel(AppChatModel model) {
|
|
|
ChatConfig chatConfig = new ChatConfig();
|
|
|
@@ -143,6 +145,7 @@ public class AiService {
|
|
|
return Flux.just(message);
|
|
|
}
|
|
|
String sessionId = StrUtil.emptyToDefault(chatRequest.getSessionId(), "default_session_id");
|
|
|
+ sessionId = sessionId + "_" + StateManager.instance().getCaseId();
|
|
|
// 从向量库查询相关历史消息
|
|
|
List<ChatMessage> messages = buildContextMessage(chatRequest);
|
|
|
return buildStreamFlux(sessionId, Prompt.of(messages));
|
|
|
@@ -170,8 +173,6 @@ public class AiService {
|
|
|
*/
|
|
|
private Flux<String> buildStreamFlux(String sessionId, Prompt prompt) {
|
|
|
AgentRuntime agentRuntime = Singleton.get(AgentRuntime.class);
|
|
|
- Integer caseId = StateManager.instance().getCaseId();
|
|
|
- sessionId = sessionId + Objects.requireNonNullElse(caseId, "");
|
|
|
return agentRuntime.stream(sessionId, prompt)
|
|
|
.map(chunk -> {
|
|
|
if (chunk instanceof ReasonChunk) {
|