方案选择
去年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进行持续部署,也有免费使用的容器镜像仓库。下一步需要修改网页服务可以用到。
基础部署
鉴于 Azure 确实难懂,还是写的细一点吧。记得先注册账号。
创建容器应用
在 Azure Portal 中选择创建资源,在侧边类别中找到 容器
,就能找到容器应用了。
输入名称,选择资源组和容器应用环境,没有的话需要新建一下。然后直接创建即可,镜像需要后期更换。
一些配置需要后面才能替换。
需要等待一些时间,页面显示部署完成后就能跳转到资源了。
创建个Secret
创建容器前,先创建个secret吧。 新建一个机密,将 OpenAI 或一些代理站的 API key写进去。
修改容器镜像
进入容器,点击编辑和部署
点击已经在的 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
点击下一步,配置缩放,将最小副本数配置为0,最大副本数配置为1吧。就能点击创建了。
配置访问及验证
进入 流入量,配置目标端口为 3000,这是由于容器内端口是3000. 保存一下。
然后点击终结点尝试访问。完美。
在登录页输入刚配置的CODE,就能使用了。
进阶
自定于域名及https
使用 A record和 CNAME 都行。目前我使用了CNAME 在 域 中输入自己的域名,需要带上二级域名哦,例如 gpt.domain.com
下面的域验证信息需要输入到你的DNS服务商。 如果域是 gpt.domain.com,需要添加的记录就是
- gpt,记录类型CNAME
- asuid.gpt,记录类型为 TXT
然后在azure网页上进行验证,验证成功后即可添加。这个等待时间就会有亿点点久了。 成功后是这样子的: 个人域名验证,很方便。
PS: 🤯 Lobe Chat 很好用,后面已变更为使用LobeChat