Java8对接三方流式接口,并实时输出(GPT)

2024-09-06 06:52

本文主要是介绍Java8对接三方流式接口,并实时输出(GPT),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java对接模型流式接口,并流式输出

核心依赖

  		<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.33</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

Demo代码

@GetMapping(value = "/test", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)public DeferredResult<ResponseBodyEmitter> proxyModel22() throws IOException {DeferredResult<ResponseBodyEmitter> deferredResult = new DeferredResult<>();// 创建 URLURL url = new URL("Third-party API");// 打开连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");connection.setDoOutput(true); // 设置为 POST 请求connection.setDoInput(true); // 允许读取响应// 构建请求体String bodyJSON = "{\n" +"    \"input\": \"Who are you?\",\n" +"    \"user\": \"guest\",\n" +"    \"stream\": true,\n" +"    \"increase\": true,\n" +"    \"sessionId\": \"9xxxxxx\",\n" +"    \"history\": []\n" +"}";JSONObject jsonObject = JSON.parseObject(bodyJSON);try (OutputStream os = connection.getOutputStream()) {os.write(jsonObject.toString().getBytes(StandardCharsets.UTF_8)); // 写入请求体os.flush();}// 检查响应状态码int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {ResponseBodyEmitter emitter = new ResponseBodyEmitter();InputStream inputStream = connection.getInputStream();Thread thread = new Thread(() -> {byte[] buffer = new byte[4096]; // 缓冲区大小int length;try {while ((length = inputStream.read(buffer)) != -1) {// 只发送实际读取的数据长度byte[] dataToSend = new byte[length];System.arraycopy(buffer, 0, dataToSend, 0, length);emitter.send(dataToSend);}inputStream.close();emitter.complete(); // 完成发送} catch (IOException e) {log.error("错误信息为: " + e);}});thread.start();deferredResult.setResult(emitter);} else {// 如果第三方服务返回错误状态码deferredResult.setErrorResult(new RuntimeException("Third-party API returned an error: " + responseCode));}return deferredResult;}

这篇关于Java8对接三方流式接口,并实时输出(GPT)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141310

相关文章

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

基于SpringBoot实现文件秒传功能

《基于SpringBoot实现文件秒传功能》在开发Web应用时,文件上传是一个常见需求,然而,当用户需要上传大文件或相同文件多次时,会造成带宽浪费和服务器存储冗余,此时可以使用文件秒传技术通过识别重复... 目录前言文件秒传原理代码实现1. 创建项目基础结构2. 创建上传存储代码3. 创建Result类4.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一