方案选择

去年ChatGPT第一波火爆的时候就短暂体验了一下大语言模型的妙处。但后续逐渐加强封锁,我的号又是用自己的手机和Google账号注册的,很怕被ban,就大半年没使用了。 后面也尝试搭建 LLaMA2 13B的模型,但实际效果并不是很好,有需要的可以试试这个中文llama模型,Chinese-LLaMA-Alpaca-2。 Google Bard 也是免费使用的,尝试过一段时间,被骗次数不少。

因此也就考虑继续使用OpenAI的 gpt。一种方式是使用国外服务器连接OpenAI本体;另一个是使用 Azure OpenAI接口,不限制使用地域。 比较坎坷的是,前者准备充钱的时候,一直在使用的美国虚拟信用卡突然需要200刀起充,这个条件就有一些苛刻了。后者需要使用公司邮箱申请,但申请了两次都没通过,可能是因为制裁的原因吧。

最终考虑是在Azure搭建网页服务 ChatGPT Next Web,然后通过访问第三方封装的API进行曲线救国。当然,本文依然会按照官方API的来写。

哈?为什么要用Azure搭建网页服务?为什么不用免费的Serverless服务?因为当我用 Github 登陆 Vercel 的时候被当场ban了。可能由于IP原因,也可能是因为Github显示的邮箱是大陆邮箱。

相关的Azure免费服务

可以直接看 免费产品 来了解可以白嫖的业务。本来是考虑函数计算的,国内几个云在去年已经取消了函数计算的免费服务,我也是奔着试一试的想法来看看Azure的。他家的函数计算支持每月100w次的免费请求,但似乎不能使用容器。 在浏览免费目录的时候,发现一个“容器应用”的产品具有永久的每月180,000 vCPU 秒、360,000 GiB 秒和 200 万个请求。随便算一算就能发现按最低的 0.25core,0.5GiB的规格的容器来说,每天能使用6.66个小时。再深入了解后可以发现它默认具有弹性伸缩功能,内置 KEDA 可以设置最低副本数为0,默认300秒无请求就能将副本数缩减到0。按这种扩容方式,主要没有恶意访问,完全足够我每天24小时访问了。

另外还需要成本管理来设置预算,万一产生费用需要发出告警,同样也可以花费每月0.1刀来监控容器平均副本数或请求数。

在CICD上,也可以通过 Github Action进行持续部署,也有免费使用的容器镜像仓库。下一步需要修改网页服务可以用到。

image.png

基础部署

鉴于 Azure 确实难懂,还是写的细一点吧。记得先注册账号

创建容器应用

Azure Portal 中选择创建资源,在侧边类别中找到 容器,就能找到容器应用了。 image.png

输入名称,选择资源组和容器应用环境,没有的话需要新建一下。然后直接创建即可,镜像需要后期更换。 image.png

一些配置需要后面才能替换。 image.png

需要等待一些时间,页面显示部署完成后就能跳转到资源了。 image.png

创建个Secret

创建容器前,先创建个secret吧。 新建一个机密,将 OpenAI 或一些代理站的 API key写进去。 image.png

修改容器镜像

进入容器,点击编辑和部署 image.png

点击已经在的 simple-hello-world-container 进行编辑。 重新写个名字,需要输入 注册表登录服务器 为 docker.io,映像和标记 写为 yidadaa/chatgpt-next-web:latest

环境变量需根据 chatgpt-next-web 文档中的来填写。我这边由于使用了镜像站,因此使用了 BASE_URL。

  • OPENAI_API_KEY: 使用刚新增的机密
  • CODE:用于web访问密码

其他参数见:Yidadaa/ChatGPT-Next-Web

image.png

点击下一步,配置缩放,将最小副本数配置为0,最大副本数配置为1吧。就能点击创建了。

配置访问及验证

进入 流入量,配置目标端口为 3000,这是由于容器内端口是3000. 保存一下。 image.png

然后点击终结点尝试访问。完美。 image.png

在登录页输入刚配置的CODE,就能使用了。

进阶

自定于域名及https

使用 A record和 CNAME 都行。目前我使用了CNAME 在 域 中输入自己的域名,需要带上二级域名哦,例如 gpt.domain.com image.png

下面的域验证信息需要输入到你的DNS服务商。 如果域是 gpt.domain.com,需要添加的记录就是

  • gpt,记录类型CNAME
  • asuid.gpt,记录类型为 TXT

image.png

然后在azure网页上进行验证,验证成功后即可添加。这个等待时间就会有亿点点久了。 成功后是这样子的: image.png 个人域名验证,很方便。 image.png

PS: 🤯 Lobe Chat 很好用,后面已变更为使用LobeChat