Vue3——如何读取chatgpt的流式数据

一、实现效果图

二、读取数据

下图是gpt返回的流式数据的数据形式,那么我们怎么把这个数据放到页面中,以实现gpt的打字机效果呢?

const response = await fetch(baseURLs + "/api/ut/plan/smartWriteStream", {method: "POST",body: JSON.stringify(par),headers: {"Content-Type": "application/json",Accept: "text/event-stream",tk: localStorage.getItem("token"),},});searchCon.value = "";const encode = new TextDecoder("utf-8");const reader = response.body.getReader();while (true) {const { done, value } = await reader.read();const decodeText = encode.decode(value);// console.log(decodeText, "流式数据");// 读取结束if (done) {isShowstopBtn.value = false;isShowconfirmBtn.value = true;break;}if (isAddText.value) {longText.value += getReaderText(decodeText);setTimeout(() => {if (scrollbarRef.value) {let ele = document.getElementById("innerRef");const max = ele.clientHeight;scrollbarRef.value[0].setScrollTop(max * 1 + 1000000);}}, 300);} else {break;}}

 三、处理流式数据中的特殊字符

const getReaderText = (str) => {let matchStr = "";try {let resultList = str.trim().split("\n");resultList.forEach((item) => {const firstQuoteIndex = item.indexOf('"');const lastQuoteIndex = item.lastIndexOf('"');matchStr += item.substring(firstQuoteIndex + 1, lastQuoteIndex).replace("\\n\\n", "").replace("\n\n", "").replace("\\n", "").replace("\n", "").replace("\\\\", "").replace("\\", "");});// console.log(resultList, "4444");} catch (e) {// console.log(e);}// console.log(matchStr);return matchStr;
};

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

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

相关文章

STM32H7的DMA双缓冲控制IO输出脉冲

STM32H7的DMA双缓冲控制IO输出脉冲 keil的sct文件配置MPU配置初始化DMA双缓冲初始化TIM12用处触发DMAMUX的请求发生器 keil的sct文件配置 ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision ***…

YOLOV5检测界面搭建+bug解决

目录 一、环境搭建 二、界面运行bug解决 三、界面 先给出Github链接:https://github.com/Javacr/PyQt5-YOLOv5 大佬链接:大佬 一、环境搭建 下载完项目后,需要配置环境: conda create -n yolov5_pyqt5 python3.8 conda act…

milvus各组件的结构体分析

milvus各组件的结构体分析 各组件启动,需要构建各组件的结构体,一共8个。 runComponent(ctx, localMsg, wg, components.NewRootCoord, metrics.RegisterRootCoord) runComponent(ctx, localMsg, wg, components.NewProxy, metrics.RegisterProxy) run…

html--烟花3

html <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Canvas烟花粒子</title> <meta name"keywords" content"canvas烟花"/> <meta name"description" content"can…

亚马逊卖家如何选择合适的海外仓系统,如何利用海外仓系统进行退货换标?

在亚马逊的全球电商舞台上&#xff0c;如何选择一个合适的海外仓系统&#xff0c;高效管理海外仓库、优化退货换标流程&#xff0c;成为了卖家们亟待解决的问题。 今天&#xff0c;让我们就来聊聊怎么挑选海外仓系统&#xff0c;还有怎么利用它来处理退货换标的。 一、选择海外…

web3项目自动连接小狐狸以及小狐狸中的各种“地址”详解

刚做web3的时候&#xff0c;比较迷糊的就是人们口中说的各种地址&#xff0c;小狐狸钱包地址&#xff0c;私钥地址&#xff0c;跳转地址&#xff0c;接口地址&#xff0c;交易地址&#xff0c;等等XX地址&#xff0c;常常感觉跟做链的同事们说话不在一个频道。 这一小节&#x…

Java开发从入门到精通(十一):Java常用的API编程接口:ArrayList集合

Java大数据开发和安全开发 &#xff08;一&#xff09;Java的常用API:ArrayList集合1.1 什么是集合?1.2 有数组&#xff0c;为啥还学习集合?1.3 ArrayList集合该怎么学呢?1.3.1 创建ArrayList对象1.3.ArrayList的增删改查操作1.3.3 ArrayList集合的案例 &#xff08;一&…

波纹加载---

代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style…

【C语言】指针篇-初识指针(1/5)

&#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&#xff1a; C笔记 &#x1f308;喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 **内存和地址(知识铺垫(了解即可))**如何理解编址**指针变量*…

【unity】【C#】游戏音乐播放和发布

今天我们来认识一下有关 unity 音乐的一些知识 我们先创建 AudioClips 文件夹&#xff0c;这个文件夹通常就是 unity 中存放音乐的文件夹&#xff0c;然后拖进音乐文件进去 这里为大家提供了两个音乐&#xff0c;有需要可以自取 百度网盘&#xff1a;https://pan.baidu.com/s…

泛域名/通配符SSL证书有免费的吗?怎么申请?

我们需要明确的是&#xff0c;市场上确实存在免费的泛域名SSL证书&#xff0c;但这些免费证书通常由自动化的证书颁发机构&#xff08;CA&#xff09;提供&#xff0c;如JoySSL、Lets Encrypt。这些免费证书虽然能够满足基本的加密需求&#xff0c;但在服务支持、保险额度、信任…

Python7种运算符及运算符优先级

🥇作者简介:CSDN内容合伙人、新星计划第三季Python赛道Top1 🔥本文已收录于Python系列专栏: 零基础学Python 💬订阅专栏后可私信博主进入Python学习交流群,进群可领取Python视频教程以及Python相关电子书合集 私信未回可以加V:hacker0327 备注零基础学Python 订阅专…