【项目方案】OpenAI流式请求实现方案

文章目录

      • 实现目的
      • 效果比对
        • 非stream模式
        • stream模式
      • 实现方案
        • 方案思路总体描述
        • 前端
          • 方案对比
          • event-source-polyfill代码示例
          • 前端实现遇到的问题与解决方法
        • 后端
          • 参考资料
          • 时序图
          • 关键代码示例
          • 后端实现时遇到的问题与解决方法

实现目的

streamOpenAI API中的一个参数,用于控制请求的模式。当将stream参数设置为True时,API会以流式方式返回响应,即在请求过程中会立即返回部分结果,而不需要等待完整的响应
这使得实时交互、大规模数据处理和逐步呈现结果成为可能。
ChatGpt回答stream模式与普通模式区别
我们的AI Assistant,本质上也是一个聊天机器人,因此非常需要流式方式返回来以提高交互性和响应速度
通过使用流式方式返回响应,我们可以在用户输入后立即开始处理,并逐步返回部分结果,使用户能够更快地获得反馈,以及更加流畅的交互体验。
同时,它更能够让用户在等待完整响应的同时,逐步阅读和理解部分结果,以便更连贯地进行对话。

效果比对

下面是两种请求方式的交互示意以及效果对比

非stream模式

  • 交互示意
    在这里插入图片描述
  • 实际效果
    非stream模式请求OpenAI——等待时间久,直接显示

stream模式

  • 交互示意

  • 实际效果
    stream模式请求OpenAI——等待时间短,逐步显示

实现方案

方案思路总体描述

前端采用**EventSource**来进行请求服务器端的实时数据更新。EventSource提供了一种简单的、基于事件的方式来接收服务器端的实时事件通知。通过使用EventSource,前端可以建立持久的、基于HTTP的连接,以接收服务器端的实时数据更新。
后端采用**Reactor Flux**技术来处理异步数据流,它是Reactive Streams规范中的一种数据流处理规范。Flux可以处理非阻塞的异步数据流,并具备背压处理能力,从而实现高效的响应式编程。通过使用Flux,后端可以有效地处理大量的异步数据流,并根据消费者的处理能力进行背压控制,确保数据流的稳定和高效处理。
结合前端的EventSource和后端的Flux,我们可以简单地建立起一个实时数据更新的机制。
前端通过EventSource与后端建立持久连接,一旦后端有新的数据更新,就会通过EventSource将数据推送给前端。前端接收到数据后,可以根据需要进行相应的处理和展示。

前端

前端前后换了4种方案,最终使用了event-source-polyfill来进行处理。

方案对比

几种方案的对比如下:

方案实现参考优缺点使用注意
sse.jssse.js无需第三方依赖,不适用于React需要显式调用stream()方法发起请求
sse.jsxSSE.jsx无需第三方依赖,使用于React,但是打包后无效需要显式调用stream()方法发起请求
react-native-ssehttps://www.npmjs.com/package/react-native-sse/v/1.0.1仅适用于RN,不适用于fishx(打包后可用,但是会导致基于React构建的fishx项目启动报错)支持POST\GET无需显式调用open()方法,否则可能出现连续请求的问题
event-source-polyfillhttps://www.npmjs.com/package/event-source-polyfill适用于fishx. 但只支持GET请求(如果想传参则需要采用url带参的形式)无需显式调用open()方法,否则可能出现连续请求的问题

event-source-polyfill代码示例
import { EventSourcePolyfill } from 'event-source-polyfill';const streamChatWithBSS = (value, now) => {let es = null;try {// 1.生成带参URLconst baseUrl = '/chat';const params = {}const queryString = Object.keys(params).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`

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

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

相关文章

如何接收用户发送的短信验证码,判断是否合法-短信验证码开发10

在《向用户发送手机验证码》这篇教程中, 你已经通过php在服务器端生成和保存验证码, 并且通过腾讯云的短信发送接口, 把验证码发送到用户手机上。 当用户根据提示, 把手机上的验证码, 以短信的方式回复, 你…

揭秘验证码,你可能不知道的那些事儿

在现代网络世界中,我们经常遇到验证码这个概念。它是一种用于验证使用者身份或防止恶意行为的安全机制。然而,除了表面上的使用和功能,验证码还有许多有趣而不为人所知的方面。本文将带你揭秘验证码背后的秘密,探索你可能不知道的…

注册kaggle人机验证没有验证码

打开edge浏览器,安装header editor扩展。 1.点击扩展 2.管理扩展 3.获取扩展 4.搜索框中输入“header editor”。 5.点击获取,我这里是因为已经获取了。所以获取按钮是删除。 6. 获取成功后,打开扩展的详细信息。 7.点击扩展选项。 8.在URL内输入网址。…

Kaggle账号注册时验证码无法显示问题解决方法

学习机器学习,想用深度神经网络做一个猫狗识别的程序,然后到kaggle上下载训练集猫狗图片,奈何一直出现验证码未填写的情况。看了很多文章说是要下载谷歌浏览器还有助手什么的,想起手机之前有个浏览器,一直没用过&#…

什么是消息验证码

在信息安全领域中,常见的信息保护方法分为加密和认证两大类。认证技术又分为对用户的认证和对消息的认证两种方式。用户认证用于鉴别用户的身份是否是合法用户;消息认证就是验证所收到的消息确实是来自真实的发送方且未被修改的消息,可以验证…

5个值得推荐的英语学习网站及1个英语学习App

1、练习听力 美国国家公共广播电台NPR:http://www.npr.org/特点:标准美式英语。 建议:每天花三十分钟左右,反复听英语广播,这是听力过关的必经之路。点击网页中左边“BROWSE TOPICS”下面的“News”选项。选择自己有…

随时随地学英语的美好愿望 Tutorabc 能帮你实现

随着互联网技术的飞速发展,在线教育也随着得到长足的发展,而后随着它的优势不断凸显,越来越多的人开始认可并接受在线教育。这也是在线英语学习平台能不断发展和进步的主要原因,正是因为越来越多的人能接受这一新的学习方式&#…

精选 8个 学习英语的APP,完全免费,适合不同阶段的你

一直有小伙伴找盘哥要学习英语的软件,以前零零星星的分享过几个,这次花了2天时间,重新挑选了10个良心好用的英语学习APP,有安卓版本的,也有iOS版本的,希望对你有所帮助。 文章比较长,希望你在饭…

全天候自动化的企业知识库文档、帮助中心到底有什么用?

想要给客户提供一个良好的客户体验,除了出色的服务态度之外,很重要的就是可以及时给到客户们他们想要的信息。最好的方法就是建立一个企业的知识库文档,也可以叫做是帮助中心。很多时候,客户都是根据帮助中心的内容来作出购买决定…

用C端经验做B端产品,需要考虑客户的整个体验旅程

B端产品大多需要保障业务流程的顺畅。一款B端SAAS产品选择长尾部分的客户,对产品设计和运营提出了高要求,除了考虑产品满足客户实际管理需求外,更需要考虑客户整个体验旅程。 B端产品大多需要保障业务流程的顺畅。一款B端SAAS产品选择长尾部分…

实现layui中每次切换页面时刷新页面(tab页面)

实现layui中每次切换页面时刷新页面(tab页面) 在html中找到tabChange方法,加上下面这部分代码即可实现每次切换tab页面时刷新页面(重新载入) tabChange: function (id) {//切换到指定Tab项element.tabChange(demo, i…

【微信小程序】页面tabBar切换、下拉刷新

目录 前言 一、tabBar切换 1.为什么使用tabBar 2.注意事项(官网提示) 3.如何使用(附源码) 二、下拉刷新 前言 基本上,所有的小程序,页面底部都有个tab,来实现页面的切换,效果如下 一、t…

后台管理tab切换回显刷新页面

el-form-item style"margin-bottom: 0px" label"拆股人手机号"><el-inputsize"small"v-model"form.mobile"placeholder"请输入手机号"input"onInput"></el-input></el-form-item><el-for…

chrome浏览器手动调节模拟网速

chrome浏览器手动调节模拟网速 参考网址&#xff1a; https://blog.csdn.net/Liberty_yes/article/details/122792457?ops_request_misc&request_id&biz_id102&utm_termchrom%E6%B5%8F%E8%A7%88%E5%99%A8%E9%99%8D%E4%BD%8E%E7%BD%91%E9%80%9F&utm_mediumdis…

女方父母总是插手家里的事怎么办?

我老弟的丈母娘就喜欢插手女儿女婿的家事&#xff0c;结婚五年多从未间断过&#xff0c;为此我老弟差点跟媳妇离婚&#xff0c;最后还是找到了解决的方法。 我老弟和弟媳是经人介绍认识的&#xff0c;虽然我们家是农村的&#xff0c;弟媳是城里人&#xff0c;但我老弟是烧烤大师…

传说中程序员都是直男,程序员适合做老公吗?

我是程序员汉小哲。 说说媳妇眼中的我。 --------------------------------------------------------------------------------------- 来自笔记 工作认真、爱玩打牌游戏 工作认真&#xff0c;基本晚上11点以后睡觉&#xff0c;没弄明白的在家弄到凌晨不知几点&#xff0c…

这个程序员男朋友我还能要吗?

昨天&#xff0c;一女粉丝在微信上找小码哥聊天&#xff0c;称她终于脱单了&#xff0c;而且男朋友还是在我们粉丝群里认识的。称她男朋友既温柔又体贴。 这就对了嘛&#xff0c;肥水不流外人田呀&#xff01; 我当时一听&#xff0c;真为她俩感到高兴&#xff01;这是好事呀&a…

在父母心里,你可能真的没有婚姻重要,催婚更像一种挣面子的工具

随着年龄一天一天的增加,你在父母的心里比重就越来越低。 20岁的时候,父母说不能早恋,要好好读书。 24岁的时候,可能父母都认为谈恋爱可以无师自通,只要一毕业就可以立马谈到对象,顺利结婚。 26岁的时候,我们就开始掉价了,因为父母已经开始给我们张罗相亲的事了。 28岁…

女程序员婚前买房给父母住,婚后要求男程序员一起还房贷!男程序员怀疑婚姻!...

每个人的人生中都会面临婚姻这一个重大课题&#xff0c;不管是讲诗书礼仪的大儒&#xff0c;还是市井的籍籍无名之辈&#xff0c;只要谈到结婚&#xff0c;都是一个无比现实的问题。爱情牵涉的物质利益甚少&#xff0c;可婚姻不行&#xff0c;过日子嘛&#xff0c;总需要些柴米…

教授父母网上为儿子“征婚”火上热榜,这“彩礼”太特别了!

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 本文募格学术撰写。参考资料&#xff1a;抖音之昊will、募格学术。请勿二转&#xff01; 爸妈都是大学教授是种怎样的体验&#xff1f; 近日&#xff0c;抖音博主之昊will…