首页 > 其他分享 >聊聊大模型"打字机"效果的背后技术——SSE

聊聊大模型"打字机"效果的背后技术——SSE

时间:2024-03-27 19:57:39浏览次数:24  
标签:event 打字机 聊聊 SSE foo data id 客户端

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

从技术原理来看,其实就是事件的发布订阅。客户端订阅服务器端的事件数据;一旦服务器端数据就绪,封装成事件推送到客户端。
但从底层来分析,其实现依赖于底层协议与浏览器的支持。SSE的底层协议还是HTTP协议,以ChatGLM的请求为例,请求头中设置Accept:
image.png
返回的响应只有响应头:
image.png
此时只是建立了连接;一旦服务端数据准备好了,将会推送事件消息给客户端,基本的消息由以下几部分组成:

  • 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!

后端可以处理为全量返回,如上,客户端可以直接展示,不需要多余的处理。

标签:event,打字机,聊聊,SSE,foo,data,id,客户端
From: https://www.cnblogs.com/zhiyong-ITNote/p/18100091

相关文章

  • 【已解决】onnx转TensorRT遇到Assertion failed: axis >= 0 && axis < nbDims的问题
    最近在jetsonnano上部署YOLOv8的时候遇到了许多问题(参考jetsonnano部署YOLOv8),大部分比较好解决,其中在将模型部署到jetsonnano的阶段遇到了如下两个问题:静态onnx转TensorRT遇到Assertionfailed:axis>=0&&axis<nbDims问题动态onnx转tensorrt报错:Attributenotfound......
  • 聊聊微信小程序的隐私协议开发
    为什么需要隐私协议?小程序隐私授权弹窗FAQ官方:https://developers.weixin.qq.com/community/develop/doc/00000ebac5c3e0423840776a966c09 也就是说只要我们配置了隐私协议,那么涉及到拍照啊、上传、下载图片啊这些接口都不需要授权了,只要用户同意就能直接调用相关接口。如......
  • 聊聊多模态大模型处理的思考
    转载请注明出处:https://www.cnblogs.com/zhiyong-ITNote多模态:文本、音频、视频、图像等多形态的展现形式。目前部门内业务要求领域大模型需要是多模态——支持音频/文本。从个人思考的角度来审视下,审视下多模态大模型的实现方式。首先就要区分输入与输出,即输入的模态与输出......
  • Windows System Assessment Tool(WinSAT)是Windows操作系统中的一个工具,用于评估和测量
    您可以使用winsat命令来运行性能评分测试程序,也就是WindowsExperienceIndex(Windows体验指数)测试。这个测试程序能够评估您计算机的性能,并为各个硬件组件打分,最终得出一个综合的基准分数。WindowsSystemAssessmentTool(WinSAT)最早出现在WindowsVista操作系统中。它是由......
  • 聊聊ShareGPT格式的微调数据集
    转载请注明住处:https://www.cnblogs.com/zhiyong-ITNote概述ShareGPT格式的数据集中,一般是如下格式:[{"conversations":[{"from":"human","value":"IsawadressthatIliked.Itwasoriginallypriceda......
  • Loss Function: MSELoss, CrossEntropyLoss
    ......
  • 聊聊功率器件(氮化镓,碳化硅)
    氮化镓和碳化硅是两种具有独特性质和广泛应用的无机物。下面将尽可能详细地解释它们的定义、应用、研究热点以及对我们的价值。1,氮化镓氮化镓(GaN)是一种由氮和镓元素组成的化合物,具有直接能隙的半导体特性。其结构类似于纤锌矿,硬度很高,并且具有宽带隙、高热导率以及稳定的化学......
  • (Unity)Assembly Definition
    简单来说,AssemblyDefinition是一个可以划分代码集合的东西。​ 其核心用途一是减少编译时间,Unity在需要编译的时候会找到对应的csproj文件,然后直接对其进行重编译。默认情况下所有程序集都搁在Assembly-CSharp.csproj一起编译,随着你脚本越来越多,Assembly-CSharp.csproj也越来越......
  • 从ICAC 2024聊聊CIM trend
    从ICAC2024聊聊CIMtrend刚参加完今年在上海举办的ICAC2024,体验很好,从各位老师同学处学到很多。我是做CIM的,所以两个CIMSession一个不落,另外因为对Processor感兴趣,EffientDigitalCircuitSession和LowPowerSoCSession也去学习了一下。因为大部分工作在ISSCC上已经了解过......
  • stata 14中help merge 文档中的assert错误修正
    如图,小伙伴们注意在stata14中对于Helpmerge文档中,options中assert的用法,我画红线这里是有问题的,应该是notallow而不是allow这里的意思是:使用assert(matchmaster)指定合并文件必须仅包含匹配的/主数据观测值或使用数据中的观察值/和/未匹配的主数据观察结果,并且不得......