这么好看的客服组件,还是觉得接入ChatGPT,把它放在博客中那就完美了

news/2025/2/14 8:17:58/

我们在使用ChatGPT时,它的返回方式是采用流式回复。感觉这个效果不错。之前做的全都是的等全部结果请求完成,再一次性返回给用户。今天就通过流式回复的效果重写之前的程序。

前端

前端采用一个网页版的客服组件,整体的效果如下:

前端的样式的这里就不过多介绍,主要看看关键的JS代码。

writeMessage方法主要的作用是,把输入框的内容在发送出去时,把内容渲染到消息框中,关键代码如下:
writeMessage方法

autoReply方法主要的作用是,构造自动回复的消息内容,然后把回复的消息内容渲染到消息框中,关键代码如下:
autoReply方法

后端

后端我们采用fastapi框架,通过调用OpenAI的接口返回请求的接口,而这次改用数据流的方式返回,关键代码如下:

上述方法是定义了请求OpenAI接口获取返回结果,stream=True是开启流式回复。

fastapi构造请求接口,关键代码如下:

接口方式采用GET,并接收一个路径参数question。到此,后端的代码已经完成了。

那问题来了,如何把这个客服组件接入ChatGPT呢?

回到前端代码中autoReply方法进行修改即可。采用EventSource去请求接口,并把结果渲染。

::: block-1

什么是 EventSource?

javascript EventSource 是一个内置在现代浏览器中的 API,它允许服务器向客户端发送实时事件。该 API 建立一个持久化的连接,通过该连接,服务器可以随时向客户端推送数据。该 API 建立的连接基于 HTTP 协议,而不是 WebSocket,因此不需要使用其他库或框架,即可在应用程序中使用它。
:::

好了,了解什么是 EventSource,我们看看它是如何用的,关键代码如下:

代码的13-19行就是通过EventSource请求后端接口,当返回的结果为[DONE]就关闭流。否则就往消息框渲染数据。guid()方法是生成一个uuid,这样就可以通过uuid获取到页面上的dom元素进行消息的渲染。

这样就完成了客服组件与chatGPT的整合了。来看看整体的效果吧。

今天的内容就分享到这里,如果觉得内容对你有所帮助,请点赞和关注吧。


http://www.ppmy.cn/news/41856.html

相关文章

leetcode459. 重复的子字符串

题目描述解题思路执行结果leetcode 459. 重复的子字符串 .题目描述 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。 示例 2: 输入: s "…

多智能体强化学习论文导读

Adaptive Value Decomposition with Greedy Marginal Contribution Computation for Cooperative Multi-Agent Reinforcement Learning Dec-POMDP 本文的研究对象是 decentralized partially observable Markov decision process (Dec-POMDP), 我们首先来看一下它和经典的MDP…

考研数二第十四讲 牛顿-莱布尼茨公式与用定义法求解定积分

牛顿-莱布尼茨公式 牛顿-莱布尼茨公式在微分与积分以及不定积分与定积分之间架起了一座桥梁,因此,这个公式又被称为微积分基本公式。 微积分基本公式的简单推导 在看微积分基本公式之前,我们先来看一个有点特殊的函数,积分上限…

开店必备的5款超实用零售管理软件,第1个新手也能轻松使用!

现在越来越多的零售店老板都开始用零售管理软件来管理门店,提升效率,节约人力和时间成本。 但对于刚刚接触零售管理软件的老板来说,应用市场上的零售管理软件那么多,究竟哪些好用,哪些容易上手……还不太了解。 别着急…

leetcode:同构字符串(详解)

前言:内容包括:题目,代码实现,大致思路,代码解读 题目: 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构…

qt动态加载qss 更好的推荐方式

1、编写QRC资源文件[window和linux通用] 2、过rcc程序生成rcc资源文件 生成2进制数据: 通过控制台窗口执行以下命令,会把qrc中的资源文件写成二进制数据保存 rcc.exe -binary .\resuorce.qrc -o .\resuorce.rcc 生成16进制数据: 通过控制台窗…

技术面面试高频考点总结-JAVA篇

文章目录技术面面试高频考点总结-JAVA篇一、Java基础二、JVM三、并发四、框架五、小结题外话技术面面试高频考点总结-JAVA篇 大家好呀,这里是小黛! 今天呀,来介绍大家最喜欢的Java篇,Java的八股文,可是非常非常非常庞…

spring-boot - 整合Reids集群

【spring-boot - 整合Reids集群】1.引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--SpringBoot与Redis整合依赖--><dependency><gro…