You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Spring Ai工具回调配置导致流式对话失效问题求助

Spring AI流式对话异常排查请求

系统环境与版本

win 11
jdk 21
Spring Ai 1.0.0-SNAPSHOT

问题现象

使用流式对话功能,配置returnRedirect=false让工具调用结果返回给模型生成最终响应时,模型未按流式返回内容,而是一次性返回完整的assistantMessage。监控显示模型运行期间CPU、GPU处于高负载状态,但全程仅返回单条包含完整响应内容的消息,而非逐字/逐段的流式输出。后续测试发现,即使不触发工具调用,只要ChatClient配置了defaultToolCallbacks就会出现该问题,移除该配置后流式响应恢复正常。

相关代码

异常场景下的ChatClient配置

public ChatClient ollamaChatClient(OllamaChatModel model, ToolCallbackProvider toolCallbackProvider) {
    ChatClient chatClient = ChatClient.builder(model)
            .defaultAdvisors(MessageChatMemoryAdvisor.builder(chatMemory).build())
            // set the default tool
            .defaultToolCallbacks(toolCallbackProvider)
            .build();
    log.info("Init Ollama ChatClient");
    return chatClient;
}

对话实现代码

Flux<ChatResponse> chatResponseFlux = chatClient
        .prompt()
        .user(dto.getContent())
        .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, dto.getConversationId()))
        .stream()
        .chatResponse();

修复后的ChatClient配置

public ChatClient ollamaChatClient(OllamaChatModel model, ToolCallbackProvider toolCallbackProvider) {
    ChatClient chatClient = ChatClient.builder(model)
            .defaultAdvisors(MessageChatMemoryAdvisor.builder(chatMemory).build())
            .build();
    log.info("Init Ollama ChatClient");
    return chatClient;
}

需求

希望工具调用执行完成后,模型能以流式响应返回结果,避免用户长时间等待。

内容的提问来源于stack exchange,提问作者JasonLong

火山引擎 最新活动