ai 的流式输出是怎么做的呢

公司早期,我在开发 智能问答平台,早期是全量返回,并不支持,流式输出,整体的内部用户体验比较差,因此接入了 流式接口。

后台返回的形式 @microsoft/fetch-event-source 是一个用于处理服务器发送事件(Server-Sent Events, SSE)的客户端库。它提供了一个可靠的方式来建立与服务器的长连接,接收实时更新,特别适用于流式API响应、实时通知和数据流等场景。

js 复制代码
import { fetchEventSource } from '@microsoft/fetch-event-source';

// 建立连接
fetchEventSource('/api/events', {
  method: 'GET',
  headers: {
    'Accept': 'text/event-stream',
    // 可以添加其他请求头,如认证信息
  },
  onmessage(event) {
  //不断的累加响应字符串
    // 处理接收到的消息
    console.log(event.data);
  },
  onopen(response) {
    // 连接打开时的回调
    console.log('Connection opened:', response.status);
  },
  onerror(error) {
    // 错误处理
    console.error('Error:', error);
  },
  onclose() {
    // 连接关闭时的回调
    console.log('Connection closed');
  }
});

当建立链接后,会不断监听到服务端消息传递,前端这里先不断累加响应字符串,然后,一定时间间隔更新内容状态, 最终通过reactmarkdown 来进行展示相关的视图。ai 内容,一般只有转换为markdown 格式,才能更精准的识别内容块的类别,或者代码块等。

相关推荐
RD_daoyi13 分钟前
Google核心算法不再通知!全年持续滚动更新
大数据·服务器·前端·网络·搜索引擎·.net
এ慕ོ冬℘゜18 分钟前
纯 CSS 实现自定义 Switch 开关(商品上下架滑块)
前端·css
再吃一根胡萝卜19 分钟前
dompdf.js 分页功能完整实现指南
前端
wordbaby22 分钟前
App 热更新(OTA)原理深解 —— 以 React Native 为例
前端·react native
再吃一根胡萝卜32 分钟前
Vue + dompdf.js 实现简历分页导出的完整踩坑记录
前端
其美杰布-富贵-李1 小时前
第 6 篇:相机与 OrbitControls
前端·javascript·three.js
lichenyang4531 小时前
从图片生成任务到用户隔离:AIGC Creative Studio 后端与 PostgreSQL 建模实践
前端·后端
小黑技术栈1 小时前
关于前端的一些话
前端
无人生还2 小时前
从 Vue3 到 React · 快速上手系列第 11 篇:状态管理
前端·vue.js·react.js
GuWenyue2 小时前
90%前端写React TS都踩坑!一套父子组件+Hooks完整实战,彻底搞懂类型约束
前端·react.js