聊聊大模型"打字机"效果的背后技术——SSE
SSE:Server Sent Event;服务器发送事件。
Server-Sent Events(SSE)是一种由服务器向客户端推送实时数据的技术。它是构建基于事件的、服务器到客户端的通信的一种方法,特别适用于需要实时更新和推送信息的应用场景,如实时通知、股票交易、实时游戏状态更新等。
SSE的工作原理是,一旦客户端(通常是浏览器)与服务器建立连接,该连接会保持开放状态,服务器就可以推送事件给客户端,直到客户端或服务器决定关闭它,而无需客户端不断地询问服务器是否有新消息。这大大减少了网络通信量,提高了应用程序的性能和响应速度。

从技术原理来看,其实就是事件的发布订阅。客户端订阅服务器端的事件数据;一旦服务器端数据就绪,封装成事件推送到客户端。
但从底层来分析,其实现依赖于底层协议与浏览器的支持。SSE的底层协议还是HTTP协议,以ChatGLM的请求为例,请求头中设置Accept:

返回的响应只有响应头:

此时只是建立了连接;一旦服务端数据准备好了,将会推送事件消息给客户端,基本的消息由以下几部分组成:
- data:实际的消息数据;
- id:可选,消息的唯一标识符,用于在连接重新建立时同步消息;
- event:可选,定义事件类型,用于客户端区分消息的类型;
- retry:可选,自动重连的时间(毫秒),如果连接中断,客户端在自动重新连接之前,需要等待多长时间;
每个消息要以两个换行符(\n\n)结束。SSE返回示例数据如下:
id: 110
event: foo
data: Hello,
id: 111
event: foo
data: ,
id: 112
event: foo
data: world
id: 113
event: foo
data: !
标准的SSE返回内容是增量生成返回的,因此客户端需要单独处理合并内容块。
ChatGPT等AI模型回复消息时的 打字机 效果,其原理就是基于SSE协议实现的,只是在服务端做了处理,拼接了SSE每次返回的内容;前端直接展示效果就行。返回内容:
id: 110
event: foo
data: Hello,
id: 111
event: foo
data: Hello, world!
后端可以处理为全量返回,如上,客户端可以直接展示,不需要多余的处理。
聊聊大模型"打字机"效果的背后技术——SSE的更多相关文章
- 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅
摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...
- 千亿参数开源大模型 BLOOM 背后的技术
假设你现在有了数据,也搞到了预算,一切就绪,准备开始训练一个大模型,一显身手了,"一朝看尽长安花"似乎近在眼前 -- 且慢!训练可不仅仅像这两个字的发音那么简单,看看 BLOOM ...
- 冀永楠:OCR的应用锦集及背后技术
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云加社区技术沙龙 发表于云+社区专栏 演讲嘉宾:冀永楠,现为腾讯云大数据AI产品中心高级研究员.负责了腾讯云与华星光电等多个图像AI项 ...
- 无插件的大模型浏览器Autodesk Viewer开发培训-武汉-2014年8月28日 9:00 – 12:00
武汉附近的同学们有福了,这是全球第一次关于Autodesk viewer的教室培训. :) 你可能已经在各种场合听过或看过Autodesk最新推出的大模型浏览器,这是无需插件的浏览器模型,支持几十种数 ...
- Hinton等人最新研究:大幅提升模型准确率,标签平滑技术到底怎么用?
Hinton等人最新研究:大幅提升模型准确率,标签平滑技术到底怎么用? 2019年07月06日 19:30:55 AI科技大本营 阅读数 675 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- js打字机效果实现
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>打 ...
- 关于Unity中NGUI的Tab商城、Scrollview和打字机效果的实现
Tab商城实例 UIToggle 和 UIToggledObjects+ Box Collider(实现商城功能必备) 1.创建两个个UI Sprite,Sprite1和Sprite2 2.给Spri ...
- PowerDesigner 学习:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- PowerDesigner 15学习笔记:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- 利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果
利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果 前言 近日公司接到一个轨道系统的需求,需要将地铁线路及列车实时位置展示在大屏上.既然是大屏项目,那视觉效果当然是第一重点,咱们可以先来看看项 ...
随机推荐
- 【Unity3D】边缘检测特效
1 边缘检测原理 边缘检测的原理是:检测每个像素周围的像素亮度差,如果亮度差异较大,就将该像素识别为边缘,并进行边缘着色. 本文完整资源见→Unity3D边缘检测特效. 使用过卷积神经网络 ...
- Java集合框架学习(五) ArrayList详解
Arraylist介绍 Arraylist类实现了List接口. public class ArrayList<E> extends AbstractList<E> imple ...
- SDL开发笔记(一):SDL介绍、编译使用以及工程模板
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 异步aioredis连接时报错TypeError: duplicate base class TimeoutError问题
版本 python3.11版本,aioredis 2.0.1版本,redis 7.x版本 redis.conf配置文件 daemonize yes bind 0.0.0.0 port 6379 pro ...
- 【LeetCode贪心#10】划分字母区间(有涉及hash数组的使用)
划分字母区间 力扣题目链接(opens new window) 字符串 S 由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中.返回一个表示每个字符串片段的长度的列表 ...
- 【Azure API 管理】APIM中证书更新问题
问题描述 每一年到期更新域名证书,APIM会中断服务,请问如何不中断服务? 问题解答 Azure API 管理允许在受信任的根证书和中间证书存储中的计算机上安装 CA 证书,分配证书的过程可能需要 1 ...
- ie7bug,一个块级元素或者一个行内元素里面有个子元素设置向右边浮动,在IE7会出现元素下掉现象!
元素包含结构如下: <h1>testing<span>综合评级:<em></em></span></h1> CSS,如下 h1{ ...
- 2023 Gartner RPA魔力象限报告解读:国产厂商“破纪录”跃升意味着什么?
2023 Gartner RPA魔力象限报告解读:象限跃升彰显国产RPA厂商实力 2023 Gartner RPA魔力象限报告四大行业趋势,国产RPA厂商已在践行 文/王吉伟 8月3日,全球著名咨询调 ...
- 10、mysql的锁
锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢). 在数据库中,除传统的计算资源(如 CPU.RAM.I/O 等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访 ...
- C 语言字符串操作总结
C 语言字符串操作总结 一.字符串操作 size_t 是一个无符号整型. 1.1 strcpy 函数原型:char *strcpy(char *dest, const char *src). 功 能: ...