您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

ChatGPT的打字回复效果,原理是什么?我带你们实现!

时间:2023-05-22 13:46:23  来源:微信公众号  作者:林三心不学挖掘机

前言

大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心。

ChatGPT 回复效果

相信使用过 chatGPT 的朋友,都会看到,当你提问一个问题时,chatGPT 会一字一字地给你展示出来,而不是一次性给你返回,如下图:

 

这样做的好处,我想应该是节省性能吧,并且应该也是因为 AI 需要一边学习,一边把学习到的结果返回到前端,所以需要这样持续输出

怎么实现的?

一开始我联想到 Websocket,因为它能做到跟前端建立长连接,不断向前端输送东西,但是我一打开.NETwork 界面,看到用的不是 Websocket,而是 Server-sent events

 

Server-sent events

一个网页获取新的数据通常需要发送一个请求到服务器,也就是向服务器请求的页面。使用 server-sent 事件,服务器可以在任何时刻向我们的 Web 页面推送数据和信息。这些被推送进来的信息可以在这个页面上作为 Events + data 的形式来处理。

 

EventSource

想要使用 Server-sent events,就不得不依赖到一个 API —— EventSource

 


 

实现

接下来带大家来简单实现以下吧!

Nodejs 起服务

Nodejs 起服务需要注意几个响应头

  • 'Content-Type': 'text/event-stream'
  • 'Connection': 'keep-alive'
  • 'Access-Control-Allow-Origin': '*'
const http = require('http');

// 将歌词变成一个数组
let song = [
  '我', '懒', '得', '写', '你', '谷', '搜', '到', '处', '皆', '只', '因', '你', 
  '太', '美', '浅', '唱', '动', '人', '说', '不', '出', '我', '试', '着', '多', 
  '看', '你', '一', '眼', '却', '发', '现', '我', '已', '沉', '溺', '于', '你', 
  '的', '镜', '头', '里', '只', '因', '你', '太', '美', '所', '以', '我', '多', 
  '看', '了', '一', '眼', '只', '因', '我', '太', '傻', '所', '以', '我', '放', 
  '不', '开', '你', '的', '手', '只', '因', '你', '太', '美', '所', '以', '我', 
  '做', '了', '个', '梦', '梦', '见', '你', '在', '微', '笑', '我', '在', '注', 
  '视', '只', '因', '你', '太', '美', '所', '以', '我', '放', '了', '你', '的', 
  '手', '所', '以', '我', '会', '微', '笑', '因', '为', '你', '太', '美', 'end'
];

http.createServer((req, res) => {

  if (req.url === '/article') {
    res.writeHead(200, {
      // 开启 Server-sent events
      'Content-Type': 'text/event-stream',
      'Cache-Control': 'no-cache',
      // 保持连接
      'Connection': 'keep-alive',
      // 允许跨域
      'Access-Control-Allow-Origin': '*'
    });
    let index = 0;

    // 模拟每隔0.5s向前端推送一次
    setInterval(() => {
      const s = song[index];

      if (s) {
        res.write(`data: ${song[index]}nn`);
      } else {
        res.write('0');
      }
      index++;
    }, 500);
  }
}).listen(3000);

console.log('Server running at http://localhost:3000/');

前端

// 建立连接
const source = new EventSource('http://localhost:3000/article');
let str = '';
// 接收信息
source.onmessage = function (e) {
  if (e.data === 'end') {
    // 判断end,关闭连接
    source.close()
  }

  str += e.data
  // 实时输出字符串
  console.log(str)
};

效果

现在我们可以去前端看效果:

 

我们只需要把这个字符串,实时渲染到页面上就行了,就能实现一个字一个字打出来的效果!!!!!

作者:林三心不学挖掘机

来源:微信公众号:前端之神

出处
:https://mp.weixin.qq.com/s/3ah4ReA_VeXxJ7vyruefdw



Tags:ChatGPT   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除。
▌相关推荐
前言大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心。chatGPT 回复效果相信使用过 chatGPT 的朋友,都会看到,当你提问一个问题时,cha...【详细内容】
2023-05-22  Tags: ChatGPT  点击:(0)  评论:(0)  加入收藏
腾讯科技讯 5月22日消息,像聊天机器人ChatGPT这种人工智能驱动的工具,有可能彻底改变人类工作的效率、效果和速度。这在金融市场是如此,在医疗保健、制造业以及我们生活的几乎...【详细内容】
2023-05-22  Tags: ChatGPT  点击:(3)  评论:(0)  加入收藏
中新经纬5月20日电 ChatGPT在几乎每个领域都引发了大量讨论,这些对未来经济有何影响?诺贝尔经济学奖获得者迈克尔·斯宾塞(Michael Spence)18日在2023清华五道口全球金融...【详细内容】
2023-05-20  Tags: ChatGPT  点击:(1)  评论:(0)  加入收藏
来源:华尔街见闻作者|于惠如 编辑|罗丽娟一周之内,OpenAI连放两个大招。在向所有Plus用户推出ChatGPT的联网和插件功能后,5月19日凌晨,OpenAI重磅发布了ChatGPT的官方iOS版App,这...【详细内容】
2023-05-20  Tags: ChatGPT  点击:(1)  评论:(0)  加入收藏
(图片来源:shutterstock)ChatGPT 的真“iPhone 时刻”来了。钛媒体App 5月19日消息,今天凌晨,美国人工智能研究公司OpenAI宣布推出ChatGPT的iOS App版本,并在美区App Store应用商...【详细内容】
2023-05-19  Tags: ChatGPT  点击:(3)  评论:(0)  加入收藏
ChatGPT的iOS移动版本正式上线。当地时间5月18日,人工智能研究公司OpenAI在其官网宣布,在美国推出了聊天机器人ChatGPT的iPhone应用,并承诺未来也将为安卓手机提供相同的服务。...【详细内容】
2023-05-19  Tags: ChatGPT  点击:(12)  评论:(0)  加入收藏
每经编辑 毕陆名在手机上也能玩ChatGPT了!当地时间周四(5月18日),人工智能研究公司OpenAI在官网宣布,其在美国推出了聊天机器人(16.220, -0.43, -2.58%)ChatGPT的iPhone应用,并承...【详细内容】
2023-05-19  Tags: ChatGPT  点击:(11)  评论:(0)  加入收藏
当地时间周四(5月18日),人工智能研究公司OpenAI在官网宣布,其在美国推出了聊天机器人ChatGPT的iPhone应用,并承诺未来也将为安卓手机提供相同的服务。官网还附带了该应用在苹果Ap...【详细内容】
2023-05-19  Tags: ChatGPT  点击:(8)  评论:(0)  加入收藏
作者|真梓*备受瞩目的ChatGPT联网功能又更进一步。继三月首次推出插件功能(Plugin)后,本周ChatGPT再次更新,将向Plus用户开放约70个第三方插件,覆盖购物、餐饮、旅行、天气、运算...【详细内容】
2023-05-18  Tags: ChatGPT  点击:(7)  评论:(0)  加入收藏
华夏时报(www.chinatimes.net.cn)记者 齐萌 张智 深圳报道近日,OpenAI发推文称,将在本周向所有ChatGPT Plus用户开放联网功能和众多插件。值得关注的是,其中有一个名为Portfolio...【详细内容】
2023-05-18  Tags: ChatGPT  点击:(11)  评论:(0)  加入收藏
▌简易百科推荐
前言大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心。chatGPT 回复效果相信使用过 chatGPT 的朋友,都会看到,当你提问一个问题时,cha...【详细内容】
2023-05-22  林三心不学挖掘机  微信公众号  Tags:ChatGPT   点击:(0)  评论:(0)  加入收藏
什么是嵌入嵌入(embeddings)捕捉文本、图像、视频或其他信息类型的“相关性”。这种相关性最常用于以下方面: 搜索:搜索词与文本主体的相似程度有多高? 推荐:两个产品有多相似? 分...【详细内容】
2023-05-22    闪念基因  Tags:Embeddings   点击:(1)  评论:(0)  加入收藏
阿里巴巴是中国最著名的互联网企业之一,其成功的背后离不开高质量的代码。然而,随着近年来大量公司源代码泄露事件的发生,安全问题也逐渐成为了程序员们关注的焦点。本文将从阿...【详细内容】
2023-05-19  月亮供电不足    Tags:关键词   点击:(14)  评论:(0)  加入收藏
常见的生产故障有哪些?在生产环境中,常见的故障类型包括但不限于以下几种: 网络故障:网络故障可能包括网络连接中断、网络延迟过高、路由错误等。这可能导致系统无法正常访问外...【详细内容】
2023-05-18    悟空聊架构  Tags:生产故障   点击:(11)  评论:(0)  加入收藏
摘要远程过程调用(RPC)是分布式服务广泛使用的一种技术。 这种技术现在越来越多地用于高性能计算 (HPC) 的上下文中,它允许将例程的执行委托给远程节点,这些节点可以留出并专用...【详细内容】
2023-05-18  云原生云  微信公众号  Tags:Mercury   点击:(12)  评论:(0)  加入收藏
一、摘要上篇文章中,我们有介绍到对象属性复制相关的工具,这些工具所进行的对象拷贝,其实都是浅拷贝模式。可能有的同学会发出疑问,什么叫浅拷贝?我们都知道,Java 中的数据类型分...【详细内容】
2023-05-17  Java极客技术    Tags:浅拷贝   点击:(17)  评论:(0)  加入收藏
使用 GitLab 管道部署 Terraform 为管理基础设施提供了一个安全、无缝的过程,从而实现更快、更高效的部署。基础设施即代码 (IaC) 是现代 DevOps 和敏捷团队一致、高效地管理...【详细内容】
2023-05-17  科技狠活与软件技术  今日头条  Tags:GitLab   点击:(9)  评论:(0)  加入收藏
我们都知道,磁盘IO以块为单位读取数据,如果你所需要的数据都存储在一个块呢,一次IO即可返回。如果跨越多个块,只要你的块是连续的,类似MYSQl,基于预读机制,一次读取多个块的数据。...【详细内容】
2023-05-16  一个即将退役的码农  今日头条  Tags:ArrayList   点击:(21)  评论:(0)  加入收藏
最近这段时间小编陆续收到粉丝们的私信,提到的最多的问题就是有没有非常优秀的开源项目推荐,有没有AI相关的开源项目推荐,有没有的ChatGPT开源项目推荐等等。说句话实话,优化开...【详细内容】
2023-05-16  Echa攻城狮  今日头条  Tags:Github   点击:(21)  评论:(0)  加入收藏
作者 | Robin Guldener策划 | 言征OAuth 是一个标准协议。基本上你可以想象的每种编程语言都有 OAuth 2.0 的客户端库。但有了客户端库,却并不意味着万事大吉,如果你能够在大...【详细内容】
2023-05-16    51CTO  Tags:OAuth   点击:(17)  评论:(0)  加入收藏
站内最新
站内热门
站内头条