当前位置:首页 > 数码 > 像-ChatGPT-主机端事情-一样前往流式照应-解密-SSE (像ChatGPT的网站)

像-ChatGPT-主机端事情-一样前往流式照应-解密-SSE (像ChatGPT的网站)

admin6个月前 (05-12)数码51

咱们知道目前的HTTP/1.1驳回的是规范的恳求-照应模型,客户端主动发恳求,服务端主动地前往照应。这种模型在客户端须要实时失掉结果的场景下是不适宜的,由于这象征着客户端须要不时地轮询,所以最好的做法是服务端生成结果之后,主动推送给客户端。

比如,它在生成内容时,也是生成一局部,就主意向客户端推送一局部。而在这个环节中,客户端不须要做任何事情,只需期待ChatGPT服务端前往内容即可。

说到这儿,你必需想到了WebSocket,没错这是一种处置打算。但WebSocket太重了,它和HTTP都是基于TCP的运行层传输协定,只不过在握手的时刻搭了HTTP的便车,应用HTTP自身的协定更新个性,伪装成HTTP,这样就能绕过阅读器沙箱、网络防火墙等限度。

当成功握手之后,后续传输的数据就不再是HTTP报文,而是WebSocket格局的二进制帧。所以这两者齐全是不同的协定,那有没有一种方法,咱们依然经常使用HTTP协定,同时还能让服务端主动推送数据呢?

答案是有的,也就是本文将要引见的SSE技术,它的英文全称是Server-SentEvents(服务端推送事情)。经过SSE可以让服务端即时推送数据到客户端,而不须要客户端轮询服务端以失掉更新。

图片

到这你或许会问,那WebSocket和SSE有什么区别呢?

1)通讯方式

WebSocket提供全双工通讯,服务端和客户端都可以在同一个衔接上同时发送和接纳数据。最关键的是,WebSocket独立于HTTP协定,虽然它开局于一个HTTP握手。

SSE仅提供服务端到客户端的单向通讯,客户端不能经过SSE给服务端发信息。

2)协定和成功

WebSocket经常使用自己的协定(ws://或wss://),须要服务端和客户端都支持,并且协定比拟复杂。

SSE则是经常使用规范的HTTP协定,成功起来更便捷,尤其是在服务端。

3)实用场景

WebSocket实用于服务端和客户端之间双向实时通讯的场景,如在线游戏、聊天运行等。

SSE实用于服务端向客户端单向推送数据的场景,如信息通知、数据更新。并且SSE智能支持断线重连,而WebSocket则须要额外部署。

4)复杂性和资源经常使用

WebSocket由于其双向通讯的才干,理论比SSE更复杂,或许须要更多的资源来保养和治理衔接。

SSE由于其单向性和基于HTTP的个性,它可以应用现有的网络基础设备,如代理主机、负载平衡器和防火墙等等,理论更容易成功和保养。

置信如今你曾经明确SSE是做什么的了,它的目标就是让服务端能够主动推送数据给客户端。假设不须要和服务端灵活交互,只是宿愿服务端在有数据的时刻推上来,那么WebSocket就有些太重了,由于这象征着要交流HTTP协定,而经常使用SSE无疑是更好的选用。

SSE是什么咱们曾经知道了,那它是怎样成功的呢?原理是什么呢?

1)建设衔接

客户端动员一个规范的HTTP恳求来开启SSE会话,这个恳求的不凡之处在于它蕴含一个头字段。

Accept:text/event-stream

相当于客户端通知服务端,希冀接纳SSE信息流。而服务端在看到该字段时,也知道这是一个SSE恳求,于是立刻向客户端前往照应头,留意:前往的只要照应头,外面会蕴含如下头字段。

Content-Type:text/event-stream

照应头前往之后标记着SSE衔接成功建设,并且衔接会坚持开明形态,服务端后续可以随时经过此衔接向客户端发送数据。此外当衔接不小心断开时,客户端也会智能启动重连。

所以在普通的HTTP恳求中,一旦服务端前往,那么恳求完结了。虽然可以将Connection头字段设置为keep-alive保障衔接不时开,但每次访问都蕴含了HTTP恳求/照应的完整环节。

而在SSE中,服务端会坚持一个开明的衔接,只需有新数据可用,就会间接发送给客户端。所以服务端会将照应以流的方式发送给客户端,每次发送的信息都是照应流的一局部,而不是独立的HTTP照应。

因此SSE的服务端在发送数据时,并不遵照传统的一次性恳求,一次性照应形式。它在建设衔接之后会坚持衔接开明,并经过这个继续的衔接流式地发送数据,这种方式就使得SSE十分适宜实时数据推送的场景。

2)发送信息

客户端发送恳求,服务端前往照应头之后,SSE衔接就建设成功了。此时客户端只须要躺平,宁静地期待服务端的输入即可。所以如今的关键就在于服务端要前往什么格局的数据呢?很便捷,一个基本的信息由以下几局部组成:

留意:每个信息要以两个换行符(nn)完结,举个例子,咱们发送一个HelloWorld。

data:HelloWorldnn

也可以发送带有事情类型的信息:

event:userUpdate>importasynciofromasyncioimportStreamReader,StreamWriterclassSSE:def__init__(self,,port=9999):self.host=hostself.port=port@staticmethoddefparse_request_headers(data:bytes)->dict:"""此函数担任从原始字节流中解析出恳求头"""headers=>像ChatGPT的网站<!DOCTYPE><html><head><meta><title>Title</title><style>#data{font-weight:bold;color:cadetblue;font-size:large;}</style></head><body><h1>SSETest</h1><div></div><script>document.addEventListener("DOMContentLoaded",function(){//和服务端建设SSE衔接vareventSource=newEventSource("http://localhost:9999");eventSource.onmessage=function(e){//将数据渲染在<div></div>的外部var/>

以上咱们就便捷成功了SSE,当然为了加深印象,这里的后端是经常使用原生的asyncio编写的,但在上班中,咱们会经常使用现成的Web框架,比如FastAPI,Blacksheep等等。

须要说明的是,虽然经过SSE技术可以成功相似ChatGPT的成果,但ChatGPT外部并没有用到SSE,它外部是基于HTTP的分块传输成功的。由于SSE只能经过GET恳求收回,并且不可自定义恳求头。

假构想成功ChatGPT的成果,须要经常使用HTTP的分块传输。而像FastAPI、BlackSheep等框架提供的流式照应,便是基于HTTP的分块传输成功的,比如FastAPI:

importasynciofromfastapiimportFastAPIfromfastapi.responsesimportStreamingResponsefromfastapi.middleware.corsimportCORSMiddlewareimportuvicorn=FastAPI()app.add_middleware(CORSMiddleware,allow_origins=["*"],allow_methods=["*"],allow_headers=["*"],)asyncdefevent_generator():for_inrange(5):#每隔1秒前往数据alt="解密SSE,像ChatGPT一样前往流式照应"/>图片

所以基于StreamingResponse可以成功SSE,也可以间接访问。而间接访问的话,此时外面的data:和rn就是实体数据的一局部。并且这种方式和ChatGPT的上班机制是相似的,都经常使用了HTTP的分块传输,支持一切的恳求方法,而SSE只支持GET恳求。

BlackSheep也是相似的,它雷同也支持流式照应。

importasynciofromblacksheepimportApplication,Response,StreamedContentimportuvicornapp=Application()app.use_cors(allow_origins=["*"],allow_methods=["*"],allow_headers=["*"],)asyncdefevent_generator():for_inrange(5):#每隔1秒前往数据>fromsse_starlette.sseimportEventSourceResponse

FastAPI其实就是在starlette的基础上套了一层壳,经过装置sse_starlette可以让FastAPI更好地支持SSE。

以上就是本文的内容,假设对你有协助,就点个赞吧。


如何解计算机的密码

如果你忘记了密码

开机时OK 进入 DOS 工具箱(前提是你装了 在启动XP之前有个选折的 是启动DOS 还是XP 还是一键GOST)

里面有清楚密码的选项

用户A需要通过计算机网络安全的将一份机密文件传送给用户B,请问如何实现?

一、加密的过程不可抵赖性可非对称加密算法和HASH函数实现,即数字签名过程如下:1. 使用HASH算法将主机A要发送的文件生成摘要2. 利用主机A的私钥加密1中生成的摘要加密过程由对称密码算法实现:1. 用对称密码算法对文件进行加密生成加密后的文件传输1. 将数字签名、对称密码算法的密钥、加密后的文件打包在一起,使用主机B的公钥进行加密2. 将生成的整个密文文件发送给主机B二、解密的过程1. 主机B得到密文,使用自己的私钥解密,得到数字签名、对称密钥和加密后的文件2. 主机B用对称密钥解密加密文件,再用HASH函数生成摘要3. 主机B使用主机A的公钥验证数字签名的正确性(校验HASH散列值)以上就是文件安全传输的主要过程,脑袋有些乱,可能有错误,楼主自己在查查相关资料吧

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: ChatGPT

“像-ChatGPT-主机端事情-一样前往流式照应-解密-SSE (像ChatGPT的网站)” 的相关文章

明年晋升超智能个人助理-内部代号Sunshine-ChatGPT个性化重磅升级

明年晋升超智能个人助理-内部代号Sunshine-ChatGPT个性化重磅升级

简介 据爆料,OpenAI 正在开发让 ChatGPT 更具「个性化」的一系列新功能。这些功能包括: 更连贯的对话 不断改进 自定义记忆 更连贯的对话 通过在不同对话中...

的建议超越专家-ChatGPT-研究表明其全面性和有用性 (对超越的理解和认识)

的建议超越专家-ChatGPT-研究表明其全面性和有用性 (对超越的理解和认识)

根据一项最近的研究,ChatGPT 提供的建议在平衡性、全面性、同理心和帮助性方面优于人类专家提供的回复。 研究方法 来自墨尔本大学和西澳大利亚大学的研究团队从十大热门建议栏网站上随机...

打造个性化聊天体验-OpenAI发布允许用户构建自定义ChatGPT版本 (打造个性化聊天平台)

打造个性化聊天体验-OpenAI发布允许用户构建自定义ChatGPT版本 (打造个性化聊天平台)

OpenAI 宣布了其备受欢迎的大型语言模型 GPT 的重大更新,包括以下内容: 自定义 GPT OpenAI 现在允许用户构建自定义的 GPT 版本。该公司表示,利用此新选项,用户...

ChatGPT-使用的机器学习技术 (chatgpt)

ChatGPT-使用的机器学习技术 (chatgpt)

ChatGPT是由OpenAI开发的大型语言模型,它能够理解人类语言,并生成类似人类的文本。ChatGPT使用了一系列先进的机器学习技术,包括: 机器学习技术的发展 机器学习技术的发展...

微软闹乌龙的背后-ChatGPT禁止又放开

微软闹乌龙的背后-ChatGPT禁止又放开

微软禁止员工使用 ChatGPT:安全和数据担忧 导言 就在 ChatGPT 突然宕机之时,微软内部网站宣布了一则重磅消息:禁止员工使用 OpenAI 的 ChatGPT 服务,将其视为第三方外部...

ChatGPT-颠覆性的-插件-提升您的效率并释放创造力 (chatgpt入口)

ChatGPT-颠覆性的-插件-提升您的效率并释放创造力 (chatgpt入口)

ChatGPT 的付费订阅版本 ChatGPT Plus 为其用户提供了针对数百款插件的访问。这些插件扩展了 AI 聊天机器人的功能,让您可以与外部应用程序、服务和公司进行交互。本文将介绍...

MIT学者独家揭示ChatGPT的瓶颈与解药 (mit学院教授)

MIT学者独家揭示ChatGPT的瓶颈与解药 (mit学院教授)

麻省理工学院(MIT)学者罗鸿胤供稿,经其授权后编辑发布。 罗鸿胤是人工智能领域的青年科学家,MIT计算机学与人工智能实验室(CSL)博士后研究员,主要关注自然语言处理方向,包括自训练算法、...

ChatGPT参数竟然只有200亿-令人大跌眼镜!-万万没想到 (chatgpt)

ChatGPT参数竟然只有200亿-令人大跌眼镜!-万万没想到 (chatgpt)

ChatGPT 的发布掀起了大型语言模型 (LLM) 的热潮,但其技术细节一直是一个谜团。现在,一篇名为《CodeFusion: A Pre-trained Diffusion Model for...