Spring Webflux 对接腾讯云智能体SSE模式

编程教程 > Java > Spring (7) 2025-09-05 14:14:38

环境

Java操作示例

示例代码参考

public Flux<ChatResult> chatSSE(String qa,String sessionId) {
       Flux<ChatResult> chatResultFlux = sseWebClient.post().bodyValue("""
                       {
                           "session_id":"%s",
                           "bot_app_key":"%s",
                           "visitor_biz_id":"%s",
                           "content":"%s",
                           "incremental": true,
                           "streaming_throttle": 10,
                           "visitor_labels": [],
                           "custom_variables":{},
                           "search_network":"disable",
                           "stream":"enable",
                           "workflow_status":"disable",
                           "tcadp_user_id":""
                       }
                       """
                       .formatted(
                               sessionId,//会话id
                               tencentProperties.getBotAppKey(),//bot app key
                               sessionId,//访客id
                               qa // 问题
                       )
               ).retrieve()
               .bodyToFlux(ChatResult.class)
//               .doOnNext(chatResult -> log.info("chatResult:\n{}", chatResult))
               // concatWith 在流正常结束后发送结束标记
               .concatWith(
                       Flux.defer(()->{
                           log.info("【兜底】发送结束标记");
                           return Flux.just(
                                   new ChatResult("done", null)
                           );
                       })
               )
               // 出错时也发送结束(可选)
               .onErrorResume(e ->{
                   log.error("【兜底】发送结束标记error");
                   return Flux.just(new ChatResult("error", new JSONObject(
                           Map.of("content","三方调用错误e:"+e.toString())
                   )));
               });

       return chatResultFlux.filter(chatResult ->
               (chatResult.getType().equals("reply")
                       && Objects.nonNull(chatResult.getPayload())
                       &&!chatResult.getPayload().getBoolean("is_from_self")
               )||chatResult.getType().equals("done")||chatResult.getType().equals("error"));
   }

提示:腾讯云智能体SSE接口虽然有个is_final字段但是自己都不建议使用。所以没有推荐的终止事件标记,官方人员建议通过连接断开来判断是否结束标记位置,所以加了concatWithonErrorResume 两个兜底处理。

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
spring boot webflux client实战,webclient是spring webflux的一个小组件。对于Java的http通讯来说,webclient是非常简单易用的。
Spring WebFlux,spring框架5.0将会新增的web增强框架,这里主要讲述什么是Spring WebFlux以及Spring WebFlux的新功能,Spring WebFlux...
Spring WebFlux 项目实战 在Spring WebFlux中创建多个RouterFunctions,在这篇文章中,我们将着眼于在Spring WebFlux中将多个路由器功能定义到不...
环境Spring boot 3.5.5Spring webflux 腾讯云智能体应用 管理接口文档:腾讯云智能体开发平台 对话端接口文档(HTTP SSE)_腾
Spring WebFlux入门程序hello word。本文主要在于讲解如何创建和运行spring webflux入门程序hello word。其实不难发现和spring mvc相比代码层基本...
1.引言Spring 5通过引入一种名为Spring WebFlux的全新反应框架来支持响应式编程范例
在 Spring WebFlux 中,当 Controller 返回 Flux 时,前端可以通过多种方式接收这个异步、流式的数据。最常见和推荐的方式是使用 Se
引言Spring Boot 2.0最近去了GA,所以我决定写我关于Spring的第一篇文章很长一段时间
Flux 和 Mono 区别说明Flux 和 Mono 是 Spring WebFlux 框架中用于响应式编程的核心类型,它们都来自于 Project Reac
1.引言Spring开发人员,您是否曾经觉得需要一个易于使用且高效的流畅功能样式 API 的异步/非阻塞 HTTP客户端?如果是,那么我欢迎您阅读关于WebClient的文章,WebClient...
概述本文讲解Java编程中如何通过Spring AI框架 集成 Redis Stack 向量数据库和Ollama模型服务提供者实现RAG本地外挂知识库。前置条件
概述实现外挂知识库基本就是给AI喂系统消息。或者以固定格式限制住AI的乱来。环境spring-ai-bom 1.0.1 spring ai基础库版本1.01sp
目标使用Redis Stack中间件作为向量数据库(Vector Database)实现文档数据的存储和查询功能。先决条件已安装好的 redis stack ,
基于上一个项目Spring Boot 接入Ollama实现与Deepseek简单对话修改,增加嵌入库配置,修改模型拉取策略为alwaysapplication.
使用 VectorStore.similaritySearchWithScore 获取带分数的结果过滤掉低分(低相关性)结果,只保留 score &gtl; thres