从零开始开发自己的chatgpt平台 之 SSE(Server-Sent Events)客户端和服务端

提示:如果你认为本文对你有帮助,请点一下关注,后面会有更多人工智能方面的文章。

文章目录

  • 前言
  • 一、SSE是什么?
  • 二、SSE服务端
  • 三、客户端
  • 四、SSE双向通信
  • 总结


如果有问题可以联系我**:https://gitee.com/xiaoyuren/gpt3

前言

我们都知道chatgpt官方是流式(stream)传输,也就是打字机的效果,当我们打开openai的官方网址

使用chatgpt对话时 我们会发现他并不是使用websocket实现的。分析一下他的代码发现 他是使用SSE

技术实现的打字机效果。


一、SSE是什么?

SSE 技术(Server-Sent Events,服务器推送事件)是一种用于在 Web 应用程序中实现实时通信的技

术。与 WebSocket 技术相比,SSE 更加简单,适用于单向通信场景,可以实现服务器向客户端的实时

推送。下面来看下SSE具体是怎么实现的。

在使用 SSE 技术时,客户端通过建立与服务器的 HTTP 连接来监听事件流。当服务器有事件需要推送

时,它会以文本格式发送到客户端,客户端则可以通过监听 message 事件来接收这些事件。这种方式

可以实现类似聊天室、实时股票价格更新、天气预报等应用程序的实时通信。

在 OpenAI 的官方网站中,他们使用了 SSE 技术来实现 ChatGPT 的打字机效果。当我们在输入框中输

入文字时,ChatGPT 会实时生成相应的回复,并以文本格式通过 SSE 传输到客户端,客户端则可以将

这些回复实时展示在界面上。

通过使用 SSE 技术,OpenAI 实现了一种简单而高效的实时通信方式,使得 ChatGPT 在 Web 环境下

具有了良好的用户体验。

二、SSE服务端

代码如下(示例):


from aiohttp import web
from aiohttp_sse import sse_responseasync def push_messages(request):param_value = request.query.get('param')print(param_value)async with sse_response(request) as resp:await resp.send('data: 你\n\n')await resp.send('data: 好\n\n')await resp.send('[END]')return respapp = web.Application()
app.add_routes([web.get('/push', push_messages)])web.run_app(app)

上面代码 我们使用了aiohttp 去实现SSE。当客户端给服务端发送请求,服务端给客户端回复2条信息。

三、客户端

代码如下(示例):

<!DOCTYPE html>
<html>
<head><title>SSE Client</title><meta charset="UTF-8">
</head>
<body><script>const evtSource = new EventSource("http://127.0.0.1:8080/push");evtSource.onmessage = function(event) {if(event.data=='[END]'){evtSource.close();}console.log(event.data);};</script>
</body>
</html>

客户端代码要加上判断:当服务端发送[END]代表发送全部完成,关闭连接。

如果不关闭 则会一直接受到服务端的消息。

我们来看下上面代码的效果:

在这里插入图片描述

聪明的你可能发现了,这样我们应该如何把消息发送给服务端?正常情况下SSE客户端是不能给服务端

发送消息的,正如开始所说这是一种单向通信的技术,客户端只能接收服务端的推送。那我们应该如何

绕过这个限制呢?

四、SSE双向通信

目前我所知道的有2种方法来实现双向通信,因篇幅问题 先讲述最基础的第一种方法 ,后面会专门再出

一篇讲第二种方法。

SSE 技术本质是对 HTTP 协议的一种扩展技术,那我们可以在网址中加入get请求的参数例如:

param=你好(注意:SSE不支持POST请求)

上面客户端代码修改:

const evtSource = new EventSource(“http://127.0.0.1:8080/push?param=你好”);

服务端代码修改:

    param_value = request.query.get('param')print(param_value)async with sse_response(request) as resp:await resp.send('data: '+param_value+'1\n\n')await resp.send('data: ' + param_value + '2\n\n')await resp.send('[END]')return resp

这样当客户端发送get请求,服务端就能接受到get请求的参数获取客户端发送过来的内容从而进行回复,就实现了双向通信,我们来下效果

在这里插入图片描述
实际应用中 把chatgpt的接口代码放入push_messages中,启用GPT接口的stream传输,至于怎么启用

可以看我前几篇文章中有介绍。当接受到chatgpt的消息 则直接发送给客户端就行了


总结

上面讲述了其中一种实现双向通信的方式,你可能发现了,这种方式并不是太好,因为客户端的消息是

放到get参数中的,我们知道get参数是有限制的,因此这个方法并不完美。我们抓取openai官方的数据

包发现他虽然使用了SSE技术 但是他使用的是POST请求,这个是如何做的呢?因篇幅问题这个我放到

下篇在讲。如果你认为本文对你有帮助可以关注一下,如果有任何问题也可以联系我:

如果有问题可以联系我**:https://gitee.com/xiaoyuren/gpt3

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

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

相关文章

中国院士称“我国已具备 ChatGPT 发展基础”

中国工程院院士王坚称「我国已具备支撑 ChatGPT 发展的算力基础」&#xff0c;“解好电力行业的关键问题&#xff0c;有可能会引领下一波AI浪潮。”中国工程院院士、阿里云icon创始人王坚2月17日在南方电网总部参加第四届电力调度AI应用大赛时表示。 我认为要开发出chatGPT这样…

Prompt 用法大全!让 ChatGPT 更智能的六种策略(中)

如果遵循以下六种策略来构建 Prompt 提示词&#xff0c;在和 ChatGPT 对话中我们将获得更好、更符合我们要求的回答。 这些策略&#xff0c;后几种更适合在编程调用 ChatGPT API 时使用&#xff0c;不过也适用直接和 ChatGPT 对话&#xff0c;让它更好的理解我们的意图。 1、写…

ChatGPT迎来华人产品负责人Peter Deng

6月1日&#xff0c;ChatGPT新任产品负责人Peter Deng在领英发布动态&#xff0c;宣布正式以“消费者产品副总裁”的身份加入了OpenAI&#xff0c;他写道&#xff0c;“我很高兴能够领导ChatGPT背后杰出的产品、设计和工程团队&#xff0c;目标是让AI对每个人都有用、易获得且有…

第十四届大学生服务外包创新创业大赛总结和心得

前言 比赛已经过去一个多月了&#xff0c;但是当时在为数不多的时间里学东西和完成项目的场景还历历在目&#xff0c;最后我们也获得了省三等的成绩&#xff0c;这对我们五个大一的学生来说已经非常满足了。 比赛介绍 相关连接&#xff1a;服务外包网址 比赛内容&#xff1a…

年薪高达 267 万元,ChatGPT 催生高薪职业,无需编程背景

整理 | 朱珂欣 出品 | CSDN程序人生&#xff08;ID&#xff1a;coder_life&#xff09; ChatGPT 的兴起&#xff0c;催生了一个“与众不同”的新职业 —— prompt engineer &#xff08;提示工程师&#xff09;。 主要职责是负责为 AI 聊天机器人生成的文本、图片、音频等内…

【关于ChatGPT的30个问题】25、ChatGPT的性能和效果如何?/ By 禅与计算机程序设计艺术

25、ChatGPT的性能和效果如何? 目录 25、ChatGPT的性能和效果如何? ChatGPT的性能涉及的方面 语言模型

ChatGPT专业应用:生成奖项方案

正文共 925 字&#xff0c;阅读大约需要 4 分钟 人力资源等必备技巧&#xff0c;您将在4分钟后获得以下超能力&#xff1a; 生成奖项方案 Beezy评级 &#xff1a;A级 *经过寻找和一段时间的学习&#xff0c;一部分人能掌握。主要提升效率并增强自身技能。 推荐人 | Kim 编辑者…

部署AI平台 宝马集团正在掀起新一轮数字化改革浪潮

数字化转型作为当代企业创新求变的重要突破口&#xff0c;成为各行各业推进持续发展的大热趋势。但在企业的在数字化征程中&#xff0c;却暗藏多重陷阱&#xff0c;数据孤岛、标准不一、质量太差、治理滞后、安全隐患等挑战&#xff0c;如影随形。 近日&#xff0c;宝马集团宣…

读书思考:步步惊心的《技术陷阱》

《技术陷阱》这本书450页&#xff0c;43万字之巨&#xff0c;信息量密密麻麻&#xff0c;采集的资料极其丰富&#xff0c;复习了一遍大停滞、大分流、大平衡、大逆转时代&#xff0c;并展望未来。 看完了有很多想法&#xff0c;随手写了下来&#xff0c;希望不是蹭热点。 &…

网易严选首页重构

目录 一、运行效果&#xff1a;很莫名其妙有的gif违规 二.项目设计技术以及所用库 三、源码 一、运行效果&#xff1a; 二.项目设计技术以及所用库 1.技术&#xff1a;HTMLCSSJavaScript 2.库&#xff1a;Swiper中文网-轮播图幻灯片js插件,H5页面前端开发 iconfont-阿里巴巴矢…

内啡肽和多巴胺真的是对立关系吗?如何正确戒瘾?

一、多巴胺 多巴胺是一种重要的神经递质&#xff0c;通常被称为“快乐分子”&#xff0c;它主要有 2 个作用&#xff1a; 它是一种“动机分子”。大脑中的多巴胺水平增加将使我们更有动力&#xff0c;大脑更加亢奋&#xff0c;更愿意采取行动以达成目标或满足需求&#xff0c;动…

ChatGPT 造富“神话”:大四学生放弃大厂去创业,半年后月收入45万

来源&#xff1a;InfoQ、整理&#xff1a;核子可乐、褚杏娟 面对铺天盖地的 OpenAI ChatGPT&#xff0c;有人走马观花&#xff0c;有人却利用它赚了不少。 有这样一个大学生&#xff0c;前脚还在 Meta 和 Tesla 等大厂实习&#xff0c;半年后&#xff0c;其创办的聊天机器人公司…

实战 ChatGPT 6 个月后月入 45 W,挂了两科!

以下内容来自公众号逆锋起笔&#xff0c;关注每日干货及时送达 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) ChatGPT 浪潮来袭&#xff0c;大厂们正在紧锣密鼓地研发大模型&#xff0c;创业公司在垂直生态之下发力内容制作、工具等应用&#xff0c;不少一线开发者、爱好者则利用 AI …

OpenAI官方提示词课(一)书写提示词的基本原则

下面是调用openai的completion接口的函数。但在本文中并不是重点。了解一下就好。 import openai import osfrom dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv())openai.api_key os.getenv(OPENAI_API_KEY)def get_completion(prompt, model"gp…

美容行业的翻身仗:ChatGPT带你玩转营销活动

&#xff08;今天给大家带来一个 用ChatGPT给美容院、美容店、美容行业的商家 出一个营销策划活动方案的实例&#xff09; 在这个竞争激烈的美容行业&#xff0c;想要脱颖而出&#xff0c;你得有点与众不同的手段。别再拿那些陈词滥调的营销策略来忽悠我了&#xff0c;今天我要…

ChatGPT热度不减!华为宣布入局,盘古GPT能否大杀四方!

ChatGPT热度不减 六月份了&#xff0c;朋友们&#xff0c;来到六月份了已经&#xff0c;ChatGPT的热度依旧不减&#xff0c;各大论坛网站的榜单上还飘着ChatGPT相关话题的文章&#xff0c;且排名靠前。由此可见&#xff0c;这ChatGPT这股子热潮还得持续一段时间呢。 而且ChatG…

midjourney最新使用方法教程指令关键词

自ChatGPT走红以来&#xff0c;以“聊天”为核心的人工智能协作工具们受到了各行各业的关注&#xff0c;让AI写首诗、发封邮件&#xff0c;或是做一份计划书&#xff0c;这些工作已经成为AI聊天机器人的“日常需求”。但似乎&#xff0c;人们遗忘了AI还具有创作文字以外的内容&…

如何复刻Midjourney的成功?

Midjourney是如何火起来的&#xff1f; AI绘画的大模型和应用非常多&#xff0c;但最有名的非Stable Diffusion和Midjourney莫属&#xff0c;其中&#xff0c;尤其是Midjourney(以下简称MJ)&#xff0c;仅11位成员&#xff0c;8个研发人员中的一半都是尚未毕业的本科生,从未融…

DNSPod十问周艺超:AI如何成为当代毕加索?

本期嘉宾 周艺超 腾讯QQ影像中心工程师 周艺超&#xff0c;腾讯QQ影像中心资深应用开发工程师。入职腾讯后负责超级QQ秀的智能捏脸相关的研发工作&#xff0c;2022年开始负责小世界AIGC相关的技术研发和产品落地&#xff0c;主要负责《异次元的我》、《魔法画室》等活动的算法…

那年马斯克在苏联

丰色 萧箫 发自 凹非寺量子位 | 公众号 QbitAI 这两天&#xff0c;一批上世纪照片被解禁&#xff0c;当年不为人知的真相浮出水面。 传闻来美国前&#xff0c;马斯克曾是一名苏联工程师。 他贿赂当地的社会名流&#xff0c;并对外自称是Yaroslavl汽车厂的创始人。 彼时在国内&a…