大家好,我是LV。
目前所有业余时间已经All In AI,深度研究AI副业,组队打造AI自媒体矩阵 & 组队开发AI产品。
最近团队在开发AI产品的时候遇到了两个问题,只要你对接了OpenAI,那必然遇到过,话不多说,开始整活。
内容很干很充实,建议点赞、评论、收藏防失联,同时也分享给周围需要的朋友。
所有资料、代码在文末可免费自取。
什么问题
先简单介绍一下我们的产品,该产品是我们社群的2号车产品(Creator AI),跟微软合作对接了Azure OpenAI接口,第一版提供不同角色模型的AI会话能力,同时支持自定义AI模型。
目前使用OpenAI的能力主要有2个主流渠道,目前这2种渠道提供的API能力无差异。
1、对接OpenAI官方提供的API。(目前在国内使用可能会被随时封禁,个人兴趣开发者可选择)
2、对接微软Azure提供的OpenAI能力(目前国内唯一合规渠道,但是申请需企业资质)
以上2种渠道的具体申请方式本文不展开,如需要资料或需疑问解答,可以留言反馈(留言请描述清楚你的问题)。
如你已经申请到了OpenAI的使用权(2种渠道均可),接下来我们一起来踩坑吧!
1、速度问题
网络原因导致的速度慢
OpenAI的服务器节点部署在国外,由于数据传输需要经过境外网络(以及“某些”原因),网络延迟可能会比较高,影响API调用的响应时间。
针对这个问题,有很多解决方案,常见的比如使用CDN加速、租用专线、代理服务等。
笔者本文提供的解决方案是CDN加速 + 代理服务。
使用CDN技术,将数据分布在多个网络节点上,让用户从距离最近的节点获取数据,减少延迟并实现网络加速。
代理服务这里不详细说。
说到CDN加速,笔者第一个想到的就是Vercel这个大良心平台,Vercel是一家致力于优化现代网站部署和开发工具链的公司,Vercel的CDN网络覆盖全球许多地区和城市,拥有丰富的节点资源,用户可以从距离最近的节点获取数据,实现网络加速。
关键是免费额度用到你手软,作为个人开发者来说,完全够了,如果流量大,也有定制化的付费套餐,声明一下哈,我没有接Vercel的广告,只是个人在这个平台受益匪浅。
老粉丝知道,笔者之前写过一篇文章《手把手教你如何在国内搭建ChatGPT访问网站!!!》,在这篇文章详细地说了如何借助Vercel的能力来搭建一个在国内可以快速访问的GPT网站。
那么,如何在Vercel上部署一个OpenAI的代理服务呢?
笔者已经将所有的代码和资料都整理到了社群的Github开源项目中。
包括项目的功能特性、解决了什么问题、如何本地调试、如何部署Vercel进行CDN加速、如何使用OpenAI代理服务、以及如何参与开源代码贡献等等。
按照README文档部署了openai-proxy-vercel之后,你就可以在国内快速使用OpenAI服务了。
没有对接Stream传输导致的速度慢
在你的网络已经通畅的情况下,此时影响速度还有一个重大的原因,那就是没有对接Stream传输。
OpenAI提供了Stream式数据传输,简单理解就是将数据一段段进行传输,有什么数据就先传输什么数据,而不是等待所有的数据都生成了,再一起性传输。
那么,如何对接Stream式数据传输呢?
同样笔者已经将Stream式集成到了openai-proxy-vercel中,在请求的参数中携带stream: true即可开启流式模式。
此时,服务端传输给前端的数据已经是EventStream类型了。
那么,前端如何来进行解析呢?
没错,笔者开源了另外一个项目,包括在不同的环境下,如何来解析OpenAI 的 Stream。
如上两套组合拳打完之后,速度已经不是门槛,接下来我们看一下稳定性的问题。
2、稳定性问题
根据我们开发过程中的实践经验,当解决了速度问题之后,绝大部分的会话都是比较稳定的了,但是OpenAI这边还是有小几率出现不稳定的现象,就好比在ChatGPT官网上使用的时候,有几率会报错。
那么,如何解决呢?
经过测试,当第1次OpenAI报错,此时进行第2次请求,一般都会成功,于是我们在每次会话的请求中加入了超时重试机制,默认设置超时10s重试1次。
相关的DEMO已经放在开源项目的demo文件夹下,供你参考。
如果此时你看到了这里,感谢你的耐心阅读,笔者将所有的代码、相关资料汇总到了后台,请看下方资料包。
资料包
上述所有的代码均已放入AI应用大爆炸官方GitHub团队仓库中,建议Star,Follow,以防失联,欢迎提供Issue、PR,代码贡献者我们会邀请你入小群,参与我们的AI产品研发迭代。
GitHub Group:github.com/orgs/Ai-Big…
OpenAI代理服务项目:github.com/Ai-Big-Bang…
OpenAI Stream解析项目:github.com/Ai-Big-Bang…