当前位置: 首页 > ds >正文

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 -> {// 在流结束时执行的操作,包括正常完成、取消或出错等情况});
}
http://www.xdnf.cn/news/4759.html

相关文章:

  • oracle 对一个字段的数据做排序 :值的依次排序为.“思考”->“asd”->“三点“
  • MySQL 8.0 OCP 英文题库解析(一)
  • Web开发-JavaEE应用SpringBoot栈ActuatorSwaggerHeapDump提取自动化
  • 【Bluedroid】 HID 设备应用注册与主机服务禁用流程源码解析
  • SpringBoot项目接入DeepSeek
  • 「Mac畅玩AIGC与多模态24」开发篇20 - 多语言输出工作流示例
  • 17.Java 注解与实例
  • C++回顾 Day4
  • 【Bootstrap V4系列】学习入门教程之 组件-轮播(Carousel)高级用法
  • 基于供热企业业务梳理的智能化赋能方案
  • 易境通散货拼柜系统:如何让拼箱货代协作效率翻倍?
  • 编程日志4.28
  • python23-函数返回值和参数处理,变量作用域
  • 记录学习的第三十五天
  • 2025-05-08-如何在一次 cmd 会话中批量设置多个 API key?
  • 英文论文查重笔记
  • 用3D slicer 去掉影像中的干扰体素而还原干净影像(脱敏切脸处理同)
  • 按拼音首字母进行排序组成新的数组(vue)
  • 强人工智能是否会诞生于现在的AI之中
  • 第二章 MySql
  • lc3341. 到达最后一个房间的最少时间 Ⅰ 算法解析
  • Red Hat linux环境openssh升级到openssh-10.0p1
  • FileInputStream
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(15):何と どういう
  • process-exporter服务安装并启动
  • 【C++游戏引擎开发】第32篇:物理引擎(Bullet)—约束系统
  • ollama+deepseek+openwebui安装
  • OrangePi Zero 3学习笔记(Android篇)2 - 第一个C程序
  • 创建需求跟踪矩阵5大常见步骤(附注意事项)
  • linux - shell脚本编程