Commit 12089728 authored by youxiaoji's avatar youxiaoji

* [区分智能体,非访客预约智能体暂不添加toolcontext]

parent 3f92e64d
...@@ -47,7 +47,8 @@ public class DefaultReactExecutor implements ReactExecutor { ...@@ -47,7 +47,8 @@ public class DefaultReactExecutor implements ReactExecutor {
private final AgentToolManager agentToolManager; private final AgentToolManager agentToolManager;
private final UserTokenService userTokenService; private final UserTokenService userTokenService;
public DefaultReactExecutor(EventSplitter eventSplitter, AgentToolManager agentToolManager ,
public DefaultReactExecutor(EventSplitter eventSplitter, AgentToolManager agentToolManager,
MemoryService memoryService, ErrorHandlerService errorHandlerService, UserSseService userSseService, UserTokenService userTokenService) { MemoryService memoryService, ErrorHandlerService errorHandlerService, UserSseService userSseService, UserTokenService userTokenService) {
this.eventSplitter = eventSplitter; this.eventSplitter = eventSplitter;
this.agentToolManager = agentToolManager; this.agentToolManager = agentToolManager;
...@@ -168,8 +169,9 @@ public class DefaultReactExecutor implements ReactExecutor { ...@@ -168,8 +169,9 @@ public class DefaultReactExecutor implements ReactExecutor {
try { try {
Prompt prompt = buildPromptWithHistory(defaultSystemPrompt, userInput, agent, userId); Prompt prompt = buildPromptWithHistory(defaultSystemPrompt, userInput, agent, userId);
SseTokenEmitter sseTokenEmitter = (SseTokenEmitter)tokenConsumer; SseTokenEmitter sseTokenEmitter = (SseTokenEmitter) tokenConsumer;
String emitterId = sseTokenEmitter.getEmitterId(); String emitterId = sseTokenEmitter.getEmitterId();
if (agent.getId().contains("agent-8")) {
chatClient.prompt(prompt) chatClient.prompt(prompt)
.tools(agentTools.toArray()) .tools(agentTools.toArray())
.toolContext(Map.of("emitterId", emitterId, "userId", sseTokenEmitter.getUserId())) .toolContext(Map.of("emitterId", emitterId, "userId", sseTokenEmitter.getUserId()))
...@@ -177,9 +179,21 @@ public class DefaultReactExecutor implements ReactExecutor { ...@@ -177,9 +179,21 @@ public class DefaultReactExecutor implements ReactExecutor {
.chatResponse() .chatResponse()
.subscribe( .subscribe(
chatResponse -> handleTokenResponse(chatResponse, tokenConsumer, fullResponse), chatResponse -> handleTokenResponse(chatResponse, tokenConsumer, fullResponse),
throwable -> handleStreamError(throwable, tokenConsumer,emitterId), throwable -> handleStreamError(throwable, tokenConsumer, emitterId),
() -> handleStreamCompletion(tokenConsumer, fullResponse, agent, userId,emitterId) () -> handleStreamCompletion(tokenConsumer, fullResponse, agent, userId, emitterId)
);
} else {
chatClient.prompt(prompt)
.tools(agentTools.toArray())
.stream()
.chatResponse()
.subscribe(
chatResponse -> handleTokenResponse(chatResponse, tokenConsumer, fullResponse),
throwable -> handleStreamError(throwable, tokenConsumer, emitterId),
() -> handleStreamCompletion(tokenConsumer, fullResponse, agent, userId, emitterId)
); );
}
} catch (Exception e) { } catch (Exception e) {
log.error("流式执行ReAct流程时发生错误", e); log.error("流式执行ReAct流程时发生错误", e);
...@@ -227,7 +241,7 @@ public class DefaultReactExecutor implements ReactExecutor { ...@@ -227,7 +241,7 @@ public class DefaultReactExecutor implements ReactExecutor {
String responseStr = fullResponse.toString(); String responseStr = fullResponse.toString();
saveAssistantResponseToMemory(agent, responseStr, userId); saveAssistantResponseToMemory(agent, responseStr, userId);
log.info("complete, remove emitterId {}",emitterId); log.info("complete, remove emitterId {}", emitterId);
userSseService.removeEmitter(emitterId); userSseService.removeEmitter(emitterId);
sendCompletionEvent(tokenConsumer, responseStr); sendCompletionEvent(tokenConsumer, responseStr);
} catch (Exception e) { } catch (Exception e) {
...@@ -290,7 +304,7 @@ public class DefaultReactExecutor implements ReactExecutor { ...@@ -290,7 +304,7 @@ public class DefaultReactExecutor implements ReactExecutor {
* @param throwable 异常对象 * @param throwable 异常对象
* @param tokenConsumer token消费者 * @param tokenConsumer token消费者
*/ */
private void handleStreamError(Throwable throwable, Consumer<String> tokenConsumer,String emitterId) { private void handleStreamError(Throwable throwable, Consumer<String> tokenConsumer, String emitterId) {
log.info("error,remove emitterId:{}", emitterId); log.info("error,remove emitterId:{}", emitterId);
userSseService.removeEmitter(emitterId); userSseService.removeEmitter(emitterId);
errorHandlerService.handleStreamError(throwable, tokenConsumer, "ReAct流式处理"); errorHandlerService.handleStreamError(throwable, tokenConsumer, "ReAct流式处理");
......
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