chat | 您所在的位置:网站首页 › ps5usb接口有什么用 › chat |
背景 上次发表《手把手教你搭建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会实时返回答案 ![]() 这个效果,基本满足我们的需要了,Perfect!! 客户端只需要完成websocket的接入,就可以实现ChatGPT Stream模式的对话效果了。 为什么要使用NGINX代理转发到海外服务器?因为有些海外服务器不是很稳定,直延迟会比较高,但是有些云服务厂商,通过自己的国内云产品去连接海外的云产品会快很多,如果你也碰到这种情况,可以试下代理转发的方式。如果不用Google Cloud,自己部署服务器怎么弄?这个就很简单了,只要有docker就行,今天的案例就是使用docker来部署,效果是一样的。 总结希望我的文章能给大家有所启示和帮助 文章不长,但是真正要搭建一个完整的ChatGPT服务,还是需要很多其他环节,这边也只是提供了一个解决问题的思路,如果有疑惑或更好的方案,也欢迎在评论区留言 原文链接 |
CopyRight 2018-2019 实验室设备网 版权所有 |