chat 您所在的位置:网站首页 ps5usb接口有什么用 chat

chat

2023-03-31 06:22| 来源: 网络整理| 查看: 265

背景

上次发表《手把手教你搭建ChatGPT-API》

收到了很多热心网友的反馈,特别多的就是有以下个问题

第一个:为什么在AI回答比较长的文字的时候,接口很慢才会有返回?严重影响用户体验!

第二个:为什么要使用NGINX代理转发到海外服务器?

第三个:如果不用Google Cloud,自己部署服务器怎么弄?

其实这些问题都不复杂,但是作为保姆级入门教程,搞明白这些问题,是今天课题的关键

下面一个一个为大家解答:

为什么在AI回答比较长的文字的时候,接口很慢才会有返回?

大家在看到ChatGPT官网在回答的的时候,字是一个一个蹦出来的,而不是一次性返回的,其实这不是特效,而是ChatGPT作为一个语言模型,他的算法就是根据上下文一个字一个字计算出来的(算法具体的可以看其他文章,这里不做科普)。

那么,在普通API方式调用接口的时候,他是需要等到所有结果都返回回来的时候,才会一起返回。所以,就会有接口返回比较慢的现象。

解决这个问题,其实官方早有解决方案,也就是所谓的流式(Stream),我们看下官方文档

其实呢,就是采用了SSE技术(有兴趣的小伙伴可以学习下),在调用接口的时候,增加stream: true这个参数就行了

那么,使用了Stream方式调用接口,有什么不同呢?我们还能想之前,愉快的调用代码了吗?

答案是否定的,采用了Stream方式,整个接口的逻辑都会发生改变,之前简单的普通API方式,则通通无效了。

也就是说,整体实现的逻辑架构,都需要调整,具体实现如下:

我们需要在中间架设一个websocket服务器,然后让他来用Stream方式调用ChatGPT接口,实时获取接口返回的数据,然后通过websocket长连接的方式,实时返回给客户端,实现流式反馈。

好了,换Stream方式,居然还多出这么多概念,索性,我又找了一个开源代码,我们来做快速实现

这次,我们就不用Google Cloud,但是一定要记住,你的websocket服务,一定要部署在OpenAI支持的国家的服务器上。

这次我们使用Docker方式部署

流程如下:

下载源码解压配置API-KEYdocker部署# 下载源码 wget https://github.com/kenshin1983/ChatGPTAPIStream/archive/refs/heads/main.zip # 解压 unzip ./main.zip cd ./ChatGPTAPIStream-main # 配置API-KEY echo "API_KEY=sk-xxxxxxxxx" >> .env # docker部署 docker build -f ./Dockerfile -t chatgpt-stream . docker run -p 9010:9010 --name chatgpt-stream -d chatgpt-stream

这样你就启动了一个websocket服务,端口是9010

我们来测试下:

这边为了方便,直接用官方推荐的wscat方式模拟websocket请求

# 安装wscat npm i wscat -g # 连接刚才部署的ws服务 wscat --connect ws://127.0.0.1:9010/chat

连接成功后,直接输入问题,websocket会实时返回答案

https://www.zhihu.com/video/1623800076139978752

这个效果,基本满足我们的需要了,Perfect!!

客户端只需要完成websocket的接入,就可以实现ChatGPT Stream模式的对话效果了。

为什么要使用NGINX代理转发到海外服务器?因为有些海外服务器不是很稳定,直延迟会比较高,但是有些云服务厂商,通过自己的国内云产品去连接海外的云产品会快很多,如果你也碰到这种情况,可以试下代理转发的方式。如果不用Google Cloud,自己部署服务器怎么弄?

这个就很简单了,只要有docker就行,今天的案例就是使用docker来部署,效果是一样的。

总结

希望我的文章能给大家有所启示和帮助

文章不长,但是真正要搭建一个完整的ChatGPT服务,还是需要很多其他环节,这边也只是提供了一个解决问题的思路,如果有疑惑或更好的方案,也欢迎在评论区留言

原文链接



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有