文心一言的流式接口数据进行处理 增加属性

需求:需要对文心一言的流式接口数据进行处理 增加属性

return ResponseEntity.ok().header("Access-Control-Allow-Origin", "*").contentType(org.springframework.http.MediaType.TEXT_EVENT_STREAM).cacheControl(org.springframework.http.CacheControl.noCache()).body(outputStream -> {try (Response response = client.newCall(request).execute();ResponseBody responseBody = response.body();InputStream inputStream = responseBody.byteStream()) {if (!response.isSuccessful()) {throw new IOException("Failed to fetch streaming data, HTTP error code: " + response.code());}byte[] buffer = new byte[4096];int bytesRead;while ((bytesRead = inputStream.read(buffer)) != -1) {/*outputStream.write(buffer, 0, bytesRead);outputStream.flush();*/String data = new String(buffer, 0, bytesRead, StandardCharsets.UTF_8);String[] lines = data.split("\n");for (String line : lines) {if (line.startsWith("data: ")) {// 记录流输出结果,用于后续持久化com.zbIntel.integration.wenxin.entity.ChatResponse bean =JSONUtil.parseObj(line.substring(6).getBytes(StandardCharsets.UTF_8)).toBean(com.zbIntel.integration.wenxin.entity.ChatResponse.class);bean.setSessionId(req.getSessionId());// 序列化bean并发送String serializedBean = JSONUtil.toJsonStr(bean);outputStream.write(("data: " + serializedBean + "\n\n").getBytes(StandardCharsets.UTF_8));outputStream.flush();log.info("返回数据:{}", bean);String content = bean.getResult();if (bean.getIs_end()) {isEndflag.set(Boolean.TRUE);}// 记录流输出结果,用于后续持久化respContent.append(content);}}}} catch (IOException e) {log.error("Error during streaming data: ", e);outputStream.write(("{" +"  \"error_code\": 112," +"  \"error_msg\": \"" + e.getMessage() + "\"" +"}").getBytes(StandardCharsets.UTF_8));outputStream.flush();}if(isEndflag.get()) {// 构造回复数据对象,持久化String respContentStr = respContent.toString();SessionChatRecordEntity replyRecord = new SessionChatRecordEntity(finalAskRecord.getSessionId(), Role.ASSISTANT.name,respContentStr, ChatGPTApi.getMessageTokenNum(respContentStr));sessionChatRecordService.saveBatch(ImmutableList.of(finalAskRecord, replyRecord));// 刷新缓存chatService.refreshWindowRecordCache(finalAskRecord.getSessionId());}});

主要时这段:

// 序列化bean并发送
                                        String serializedBean = JSONUtil.toJsonStr(bean);
                                        outputStream.write(("data: " + serializedBean + "\n\n").getBytes(StandardCharsets.UTF_8));
                                        outputStream.flush();

返回的结果:

增加了 sessionId的属性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python调用串口收发数据

1、确认串口信息 2、安装pyserial库 打开终端或命令行,敲入这行命令:pip install pyserial 3、python编程 import serial def main(): #创建串口对象 ser serial.Serial(COM4, 9600, timeout1) if not ser.isOpen(): print("串…

飞睿智能6公里WiFi图传接收模块,低延迟、抗干扰、高速稳定传输数据,无人机、农田远距离WiFi模块

在科技日新月异的今天,无线通信技术正以前所未有的速度发展,不仅改变了我们的生活方式,还为企业带来了前所未有的商业机遇。今天,我要向大家介绍一款飞睿智能的产品——6公里WiFi图传接收模块,它以其高性能、稳定的传输…

【React】基础数据回填--useForm与setFieldsValue详解

相关属性 1.form 2.setFieldsValue 代码 import{Form }from"antd";const Publish =

体积大的快递怎么寄便宜?如何寄件寄包裹更省钱?

大学毕业了,面对即将到来的工作生活,小李不得不把宿舍里的大包小包打包寄回家。可是,当他真正开始打包行李时,才发现这可不是一件简单的事:衣服、被子、书籍、杂物……这些东西加起来体积不小,想要省钱寄快…

基于stm32单片机的智能手环的设计

摘 要 随着科技的飞速发展和人们生活水平的提高,健康与科技日益融合,智能可穿戴设备已成为现代人生活中不可或缺的一部分。智能手环,作为一种便携、实用且功能丰富的可穿戴设备,受到越来越多用户的喜爱。它不仅能够实时监测用户的…

特殊的“user profile service服务登录失”情况

记录一下比较特殊的user profile service服务登录失败情况 公司电脑,某次之后每次来公司电脑开机后就会出现这个情况,后来发现只要是关机后再开机百分百出现,重启就不会,一开始也百度、google了,网上有很多解决方式&am…

DropNotch for Mac v1.0.1 在 Mac 刘海快速使用 AirDrop

应用介绍 DropNotch 是一款专为Mac设计的应用程序,可以将MacBook的凹口区域(刘海)转换为文件放置区。 功能特点 文件共享: 用户可以将文件拖放到MacBook的凹口区域,并通过AirDrop、邮件、消息等方式轻松共享。多显示器支持: 即…

.Net C#执行JavaScript脚本

文章目录 前言一、安装二、执行 JavaScript 脚本三、与脚本交互四、JS 调用 C# 方法五、多线程使用总结 前言 ClearScript 是一个 .NET 平台下的开源库,用于在 C# 和其他 .NET 语言中执行脚本代码。它提供了一种方便和安全的方法来将脚本与应用程序集成,…

PHP酒店宾馆民宿多商户版系统小程序源码

解锁酒店新境界!揭秘多商户版系统的无限可能🏨✨ 🚀 开篇:酒店业的新革命,多商户版系统来袭! 你是否梦想过将你的酒店打造成一个集餐饮、娱乐、购物于一体的综合型休闲空间?现在,这…

【linux】服务器卸载cuda

【linux】服务器卸载cuda 文章目录 【linux】服务器卸载cuda1、查找已安装的 CUDA 包:2、卸载 CUDA:3、删除残留文件4、更新系统的包索引:5、检查是否卸载干净: 1、查找已安装的 CUDA 包: dpkg -l | grep cuda2、卸载…

【JavaScript】深入理解Promise:从基础概念到进阶用法、手写promise

🔥 个人主页:空白诗 文章目录 一、引言二、Promise概述1. Promise的定义2. Promise的用途3. Promise的三种状态4. Promise的构造函数和基础结构5. Promise的优点6. Promise的实例方法7. Promise的静态方法 三、Promise的基本用法1. 创建一个Promise2. th…

The First项目报告:引领L2解决方案新纪元的模块化协议AltLayer

在区块链演进中,可扩展性与定制化成为开发者核心诉求。ZK Rollups与Optimistic Rollups虽显著提升以太坊等区块链性能,却面临访问性、定制难、中心化风险及流动性分散等挑战。AltLayer以Rollups-as-a-Service创新模式,赋予开发者直接管理roll…

【漏洞复现】飞企互联-FE企业运营管理平台——uploadAttachmentServlet——文件上传

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据…

在误装Windows server2019 后如何利用Windows.old恢复?

🏆本文收录于《CSDN问答解惑》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

开源数字人项目Hallo

硬件条件: gpu最低12G 软件: cuda需支持 Python选择3.10吧,我的版本3.11 源码: GitHub - fudan-generative-vision/hallo: Hallo: Hierarchical Audio-Driven Visual Synthesis for Portrait Image Animation models文件&…

阅读笔记——《Fuzz4All: Universal Fuzzing with Large Language Models》

【参考文献】Xia C S, Paltenghi M, Le Tian J, et al. Fuzz4all: Universal fuzzing with large language models[C]//Proceedings of the IEEE/ACM 46th International Conference on Software Engineering. 2024: 1-13.【注】本文仅为作者个人学习笔记,如有冒犯&…

科研绘图系列:python语言实验线图(line Chart)

介绍 两组数据在不同时间点的差异检验结果线图 导入包 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from scipy import stats输入数据 ctr = [2, 2, 3, 3, 4, 5, 5, 6, 4, 8, 6, 6, 9, 11, 12, 12, 15, 16, 20, 25, 27] drug = [2, 3, …

python开发prometheus exporter--用于hadoop-yarn监控

首先写python的exporter需要知道Prometheus提供4种类型Metrics 分别是:Counter, Gauge, Summary和Histogram * Counter可以增长,并且在程序重启的时候会被重设为0,常被用于任务个数,总处理时间,错误个数等只增不减的指…

如何录制屏幕视频?4款软件,轻松录屏

在数字化飞速发展的时代,如何录制屏幕视频已经成为我们工作、学习和娱乐中不可省略的一个重要问题。无论是制作教学教程还是录制游戏视频等,屏幕视频录制都为我们提供了极大的便利。今天,就让我们一起探索如何录制屏幕视频的精彩方式&#xf…

Windows环境+C#实现显示接口测试

代码如下: using Models; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; …