SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回
介绍
用于构建基于 WebFlux 的响应式 Web 应用程序。集成了 Spring WebFlux 模块,支持响应式编程模型,构建非阻塞、异步的 Web 应用。WebFlux 使用了非阻塞的异步模型,能够更好地处理高并发请求。适合需要实时数据推送的应用场景。
WebClient 是 Spring WebFlux 中用于创建 WebClient 实例的构建器方法。用于发起 HTTP 请求的非阻塞、响应式的客户端,可以与 Web 服务进行交互,支持异步和响应式编程模型。
讯飞星火
官方文档:https://www.xfyun.cn/doc/spark/X1http.html
接口地址:https://spark-api-open.xf-yun.com/v2/chat/completions
效果图
流式异步返回数据
依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
构建请求体
/*** 构建消息体* @param userId 用户的唯一id,表示一个用户,user_123456* @param text 问题内容* @return*/
private JSONObject builderBody(String userId,String text){// 创建最外层的JSON对象并填充字段JSONObject jsonObject = new JSONObject();jsonObject.put("user", userId);jsonObject.put("model", "x1");jsonObject.put("stream", true);jsonObject.put("max_tokens", 4096);// 创建单个消息的JSON对象JSONObject messageObject = new JSONObject();messageObject.put("role", "user");messageObject.put("content", text);messageObject.put("temperature", "0.5");// 历史记录JSONObject test = new JSONObject();test.put("role", "user");test.put("content", "梅州城市为背景");test.put("temperature", "0.5");// 创建messages数组并将消息对象添加到数组中JSONArray messagesArray = new JSONArray();messagesArray.add(messageObject);messagesArray.add(test);// 将messages数组添加到最外层的JSON对象中jsonObject.put("messages", messagesArray);return jsonObject;
}
控制器
private final static String APIPassword="gQnwqGhbiifKUgtxhQrXnb:JdDduuVNXTxduGIvwtorNjw";@GetMapping("/chat")
public Flux<String> chat(String text) {return WebClient.builder().defaultHeader("Content-Type", "application/json; charset=UTF-8") // 明确指定UTF-8.defaultHeader("Authorization","Bearer" + APIPassword).baseUrl("https://spark-api-open.xf-yun.com/v2/chat/completions").build().post() //post请求.accept(MediaType.TEXT_EVENT_STREAM)// 设置接受的响应类型.bodyValue(builderBody("123",text).toString()) //请求体内容.retrieve() // 执行请求.bodyToFlux(String.class) // 响应体转换成 String.map(s->s).timeout(Duration.ofSeconds(10)) // 设置请求超时时间,10秒.retry(3) // 如果发生错误,最多重试3次.onErrorResume(WebClientRequestException.class, ex ->Flux.just(ex.getLocalizedMessage())) // 处理 WebClient 请求错误.doOnTerminate(() -> {// 终止流时执行的操作,可能用于清理资源等}).doOnCancel(() -> {// 流取消时执行的操作}).doFinally(signalType -> {// 在流结束时执行的操作,包括正常完成、取消或出错等情况});
}
相关文章:
SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回
介绍 用于构建基于 WebFlux 的响应式 Web 应用程序。集成了 Spring WebFlux 模块,支持响应式编程模型,构建非阻塞、异步的 Web 应用。WebFlux 使用了非阻塞的异步模型,能够更好地处理高并发请求。适合需要实时数据推送的应用场景。 WebClie…...
Python学习笔记--Django的安装和简单使用(一)
一.简介 Django 是一个用于构建 Web 应用程序的高级 Python Web 框架。Django 提供了一套强大的工具和约定,使得开发者能够快速构建功能齐全且易于维护的网站。Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1…...
Java 17配置Jenkins
找到 Java 17 的安装路径 which java ls -l /usr/lib/jvm/ 修改 Jenkins 服务配置 sudo nano /etc/systemd/system/jenkins.service 修改为 [Unit] DescriptionJenkins Automation Server Afternetwork.target[Service] Typesimple Userjenkins Groupjenkins Environment&…...
前端面试每日三题 - Day 28
这是我为准备前端/全栈开发工程师面试整理的第28天每日三题练习: ✅ 题目1:HTTP缓存策略全景解析 核心缓存类型对比表 缓存类型验证方式响应头网络请求消耗强缓存无Cache-Control/Expires无协商缓存If-Modified-Since等ETag/Last-Modified304响应 1.强…...
B站pwn教程笔记-8
接着上次的习题刷,然后补充新的知识。这开始就接触花式栈溢出了 pwn3(ret2libc较难) 上次已经知道大致思路,现在看看怎么实现。 使用命令 ldd 可看出连接的LIBC是哪个,如下图所示。(第一行) …...
uniapp项目打包的微信小程序,设置uni-popup type=“bottom“时,底部有空隙
问题: uniapp项目打包的微信小程序,设置uni-popup type"bottom"时,底部有空隙 解决思路: 1、检查代码是否存在样式问题 2、使用微信小程序自带的调试器元素 3、查看源码定位底部是如何出现该空隙的 1、检查代码 检…...
《Zabbix Proxy分布式监控实战:从安装到配置全解析》
注意:实验所需的zabbix服务器的搭建可参考博客 zabbix 的docker安装_docker安装zabbix-CSDN博客 1.1 实验介绍 1.1.1 实验目的 本实验旨在搭建一个基于Zabbix的监控系统,通过安装和配置Zabbix Proxy、MySQL数据库以及Zabbix Agent,实现分…...
zookeeper实现分布式获取全局唯一自增ID的案例。
项目结构 所有配置写在 application.yml 文件中,代码进行了拆分,加入了相关依赖。 1. pom.xml 依赖 <dependencies><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><…...
微信小程序上传视频,解决ios上传完video组件无法播放
1.碰到问题 工单里面上传完视频video组件ios无法播放视频,安卓可以 2.原因 使用了后台接口返回的url拼域名 , 正确做法:使用wx.chooseMedia()里面的tempFilePath(本地临时文件路径 (本地路径)),上传好了详情可以使用后…...
硕博士学位论文题目需要注意的几个问题
摘要: 论文题目既要高大上, 又要与别人的区别开. 本贴描述一些基本的思路. 研究生们应该从图书馆找 100 篇博士论文的题目参考,以跳出思维定式. 1. 题目要足够具体 需要把自己的几篇小论文覆盖,且最小的一个帽子 帽子大了就变成书籍的名字,…...
图像匹配导航定位技术 第 8 章
第 8 章 SAR 图像匹配定位技术 目前 ,光学传感器已经能获取高分辨率,即与视觉效果相近的目标图像,但是光学传感器容易受到天气变化的影响,从而影响效率。而径雷达 ( synthetic aperture radar,SAR)传感器不仅能获得与…...
四、Hadoop 2.X vs 3.X:特性、架构与性能全解析
Hadoop 2.X 与 Hadoop 3.X 深度对比:版本特性、架构与性能剖析 在大数据处理的浪潮中,Hadoop 凭借其分布式存储与计算的强大能力,成为了业界的核心框架之一。随着技术的不断演进,Hadoop 也经历了多个重要版本的迭代。其中&#x…...
【Linux】FreeRTOS与Linux:实时与通用的终极对比
文章目录 FreeRTOS & Linux1 本质区别2 应用场景3 架构差异4 为什么容易混淆?5 合作与共存总结 FreeRTOS & Linux FreeRTOS 和Linux是两种完全不同的操作系统,设计目标和应用场景有显著区别。 1 本质区别 特性FreeRTOSLinux类型实时操作系统&…...
关于vue-office在vue3工程中的引用报错问题
在vue3项目工程中,根据vue-office文档在vue2中的引用: //引入VueOfficeDocx组件 相关样式import VueOfficeDocx from vue-office/docx;import vue-office/docx/lib/index.css; 报错信息: [plugin:vite:import-analysis] Failed to resolve …...
【NLP 71、常见大模型的模型结构对比】
三到五年的深耕,足够让你成为一个你想成为的人 —— 25.5.8 模型名称位置编码Transformer结构多头机制Feed Forward层设计归一化层设计线性层偏置项激活函数训练数据规模及来源参数量应用场景侧重GPT-5 (OpenAI)RoPE动态相对编码混合专家架构(MoE&#…...
Java详解LeetCode 热题 100(13):LeetCode 53:最大子数组和(Maximum Subarray)详解
文章目录 1. 题目描述2. 理解题目3. 解题思路3.1 暴力法3.1.1 O(n) 暴力解法3.1.2 O(n) 优化的暴力解法3.2 分治法3.3 动态规划(Kadane算法)3.3.1 动态规划基本思路3.3.2 Kadane算法(空间优化版本)3.4 前缀和方法4. 具体实例解析5. 代码优化与技巧5.1 处理空数组和边界情况…...
数字化驱动下的智慧物流与零售创新:全流程无人仓与定制开发开源AI智能名片S2B2C商城小程序的协同实践
摘要:本文以京东"全球首个全流程无人仓"为技术载体,结合"定制开发开源AI智能名片S2B2C商城小程序"的零售创新实践,探讨数字化技术如何重构物流与零售场景。研究揭示,京东通过全流程无人仓实现仓储效率提升4倍…...
从“工地砌砖”到“工厂造房”:模块化集成建筑(MiC建筑)如何重塑建筑业
在城市化进程加速与资源环境约束加剧的双重挑战下,建筑业正经历着一场深刻变革。模块化集成建筑(Modular Integrated Construction,简称MiC)以“工厂造楼”为核心理念,通过将建筑拆解为标准化模块并在工厂完成全流程预…...
idea出现tomcat不能正确部署的问题--解决方案
启动tomcat 报如下错误:(是因为已经在其他tomcat的中使用了这两个端口) 改成新端口 注意:不管是新增了页面,还是修改了页面,都需要重新部署项目,方法就是点击下面的绿色图标。否则新的页面操作不…...
编专利或委托他人编专利属于学术不端行为吗?
原文链接:编专利或委托他人编专利属于学术不端行为吗? 自己编专利或委托他人编专利属于学术不端吗? 5月4日,一篇题为《针对性护理干预在子宫肌瘤围手术期的情绪和生活质量临床应用效果》的论文,受到网友的广泛议论。…...
IEEE PRMVAI Workshop 17 | 智能医疗数据分析与应用
科研小伙伴们看过来!2025 年 IEEE 第三届模式识别、机器视觉和人工智能国际会议旗下的 Workshop 17——“Intelligent Health Monitoring and Inspection of Infrastructure(智能医疗数据分析与应用)” 超值得关注! 📅…...
网工实验——OSPF配置
网络拓扑图 配置 1.为每个路由器配置接口(略)(详细见RIP实验) 2.配置OSPF AR1 [AR1]ospf [AR1-ospf-1]area 1 [AR1-ospf-1-area-0.0.0.1]network 172.16.1.1 0.0.0.0 #精确配置网络,也可以像下面那条命令那样配置 …...
图灵码上爬第5题:屠龙刀--爬虫逆向
别问我,问我就是小菜鸡记录下学习成果,哈哈哈哈 第五题其实跟第四题的逻辑差不多,只不过加了点简单混淆的代码 题目: 请求参数经过特殊处理,适合JavaScript逆向入门练习 思路: 首先打开开发者工具&…...
Linux网络编程day7 线程池
线程池 typedef struct{void*(*function)(void*); //函数指针,回调函数void*arg; //上面函数的参数 }threadpool_task_t; //各子线程任务的结构体/*描述线程池相关信息*/struct threadpool_t{pthread_mutex_t lock; …...
【SpringMVC】详解cookie,session及实战
目录 1.前言 2.正文 2.1cookie与session概念 2.2返回cookie参数 2.3设置session 3.小结 1.前言 哈喽大家好吖,今天继续来给大家来分享SpringMVC的学习,今天主要带来的是cookie与session的讲解以及通过postman和fiddler来实战,废话不多…...
《Vuejs 设计与实现》第 4 章(响应式系统)( 上 )
目录 4.1 响应式数据和副作用函数 4.2 基本响应式数据实现 4.3 设计完善响应系统 4.4 分支切换与清理 4.5 嵌套的 effect 与 effect 栈 4.1 响应式数据和副作用函数 副作用函数是指那些产生副作用的函数 function effect() {document.body.innerText = hello vue3 }执行 …...
《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》
React Native和Flutter作为当下热门的跨平台开发框架,在社交应用开发领域各显神通。今天,我们深入探索它们在高可用架构中的部署与容灾策略。 React Native凭借其独特优势,在社交应用开发中拥有一席之地。它基于JavaScript和React࿰…...
K8s网络从0到1
K8s网络从0到1 前言 K8s是一个强大的平台,但它的网络比较复杂,涉及很多概念,例如Pod网络,Service网络,Cluster IPs,NodePort,LoadBalancer和Ingress等等。为了帮助大家理解,模仿TC…...
React Native基础环境配置
React Native基础环境配置 1.引言2.React-Native简介3.项目基础环境搭建1.引言 感觉自己掌握的知识面还是有点太窄了,于是决定看看移动端的框架,搞个react搭一个后端管理项目,然后拿react-native写个小的软件,试着找个三方上架一下应用市场玩玩。毕竟不可能一直在简历上挂一…...
k8s术语之DaemonSet
DaemonSet确保全部(或者一些)Node上运行一个Pod的副本。当有Node加入集群时,也会为它们新增一个Pod。当有Node从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod 使用DaemonSet的一些典型用法: …...
接口自动化测试框架详解(pytest+allure+aiohttp+ 用例自动生成)
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效…...
Go:简洁高效,构建现代应用的利器
Go,又称 Golang,是由 Google 开发的一种开源编程语言。它以其简洁的语法、高效的性能以及强大的并发特性,在云计算、微服务、DevOps 等领域迅速崛起,成为构建现代应用的利器。本文将带你了解 Go 的魅力,探讨其核心特性…...
Minor GC与Full GC分别在什么时候发生?
一、Minor GC 触发条件 1.Eden区空间不足 • 核心机制:新对象优先分配在Eden区,当Eden区无法满足新对象分配时触发Minor GC。 示例: // 循环创建对象填满Eden区 for (int i 0; i < 1000000; i) {byte[] data new byte[1 * 1024]; // 持…...
Crawl4AI:高效的开源 Python 网页爬取与数据提取库
Crawl4AI:高效的开源 Python 网页爬取与数据提取库 在数据驱动的时代,网页爬取和数据提取是众多 AI 项目及语言模型性能提升的关键环节。Crawl4AI 作为一款开源的 Python 库,凭借强大且灵活的功能,致力于简化这一复杂工作流程。其全异步设计不仅大幅提升了处理速度,还增强…...
【目标检测标签转换工具】YOLO 格式与 Pascal VOC XML 格式的互转详解(含完整代码)
一、写在前面:为什么需要标签格式转换? 在目标检测任务中,不同的模型和标注工具使用的标签格式常常不同: YOLO 系列(YOLOv5/v8) 使用的是 .txt 格式,每行为一个目标,记录相对归一化…...
Redis最新入门教程
文章目录 Redis最新入门教程1.安装Redis2.连接Redis3.Redis环境变量配置4.入门Redis4.1 Redis的数据结构4.2 Redis的Key4.3 Redis-String4.4 Redis-Hash4.5 Redis-List4.6 Redis-Set4.7 Redis-Zset 5.在Java中使用Redis6.缓存雪崩、击穿、穿透6.1 缓存雪崩6.2 缓冲击穿6.3 缓冲…...
2025年渗透测试面试题总结-某步在线面试(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 一、操作系统相关问题总结与分析及扩展回答 1. Linux命令熟悉度 2. 查看进程的命令 3. 查看网络进程…...
网络化:DevOps 工程的必要基础(Networking: The Essential Foundation for DevOps Engineering)
李升伟 编译 理解网络化基础知识 你是否曾想过是什么真正让卓越的DevOps工程师与众人区别开来?答案是网络化。是的,对网络的基本理解不仅仅是有帮助的——它是绝对必要的。在当今以微服务、容器和分布式系统为主宰的互联互通世界中,对网络原…...
<template>标签的用法
一、原生的template标签的用法 <template> 是 HTML5 引入的一个标签,用于声明 HTML 片段,这些片段在页面加载时不会被渲染,但可以在运行时通过 JavaScript 实例化和使用。 基本用法 <template id"myTemplate"> <…...
【数据结构】——链表OJ(下)
前面我们已经刷了几道单链表的题目,下面我们继续看几道题目。 一、相交链表 这道题题目的要求是很好理解的,就是现在我们有两个链表,然后我们就相办法进行判断,这两个链表是否是相交的,那么链表的相交其实就是有没有共…...
笔试专题(十六)
文章目录 相差不超过k的最多数题解代码 最长公共子序列(一)题解代码 小红的口罩题解代码 春游题解代码 相差不超过k的最多数 题目链接 题解 1. 排序 滑动窗口 2. 为什么使用滑动窗口? 因为max-min < k,求这个区间内的数最…...
云原生应用全生命周期管理实战:从开发、部署到运维的一体化方案
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、前言:应用交付正在被“云原生”重塑 随着企业IT架构从单体转向微服务,再到全面拥抱容器化与Kubernetes,应用的构建、部署、配置、监控、弹性与治理也正经历一场全方位的变革。传统的开发运维…...
图表制作-带背景色的柱状图
首先登录自己的账号,没有账号的可以注册一个。 登录之后,在左侧菜单栏找到图表制作-统计图。 点击新建统计图,点击柱状图-带背景色的柱状图。 初始会有一些演示数据,可以根据自己的需要进行修改。 如果觉得手动修改太麻烦…...
【Pandas】pandas DataFrame ewm
Pandas2.2 DataFrame Function application, GroupBy & window 方法描述DataFrame.apply(func[, axis, raw, …])用于沿 DataFrame 的轴(行或列)应用一个函数DataFrame.map(func[, na_action])用于对 DataFrame 的每个元素应用一个函数DataFrame.a…...
V 型球阀:多材质多驱动,精准适配复杂严苛工况-耀圣
V 型球阀:多材质多驱动,精准适配复杂严苛工况 在化工、矿业、环保等工业领域,带颗粒介质、料浆以及高腐蚀性介质的输送与控制一直是行业难题。普通阀门在这些复杂工况下,易出现磨损、腐蚀、控制失灵等问题,而 V 型球阀…...
使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(2)
接上文 使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(1) https://blog.csdn.net/coldwind811201/article/details/147607641 1. 更新NuGet包 升级NuGet包后,注意相应修改前面页面上的JS引用为相应新版本的jquery JS脚本 …...
Java响应实体【R】
R响应实体 响应实体R(Response Entity)具体作用说明?1、用与数据传输2、用于状态反馈3、指令与控制 普通响应实体优化后的R:高级响应实体类 响应实体R(Response Entity)具体作用说明? 1、用与数据传输 传输请求结果 :当客户端向…...
短视频矩阵系统批量剪辑模式开发详解,支持OEM
在短视频行业竞争激烈的当下,短视频矩阵系统通过批量剪辑功能实现高效内容生产,成为众多运营者的利器。本文将深入探讨短视频矩阵系统中几种常见批量剪辑模式的开发思路与实现方法,助力开发者构建功能强大的批量剪辑模块。 一、批量剪辑模式概…...
顺丰科技:从 Presto 到 Doris 湖仓构架升级,提速 3 倍,降本 48%
导读:顺丰科技引入 Doris 替换 Presto,在内部可视化数据自助分析工具丰景台场景广泛应用。目前,顺丰临时查询业务、丰景台报表业务的 Presto 场景已经 100% 切换到 Doris 集群中,日均查询量 100W。并实现 P95 性能提升近 3 倍&…...
使用 Cesium 构建 3D 地图应用的实践
CesiumJS 是一个功能强大的开源 JavaScript 库,能够帮助开发者快速构建高性能、高精度的 3D 地球和地图应用 。本文将介绍如何使用 Cesium 构建一个基本的 3D 地图应用,并加载自定义的 3D Tiles 模型。 初始化 Cesium Viewer 首先,在 Vue 的…...