分享

自建ChatGPT服务

前言

ChatGPT免费版,如果多聊几句,gpt-4/4o的quota的不够用;但如果开通Plus,每个月$20美元也不便宜,如果用得不够多总觉得很亏。

还是通过api部署自己的服务比较好,用多少算多少,而且现在Azure中申请4/4o的API也很容易,不用一等再等了。

通过部署ChatGPT-Next-Web来实现自建ChatGPT服务ChatGPT-Next-Web

提前条件

本篇中ChatGPT-Next-Web服务是通过微软Azure OpenAI API + docker部署的,所以你必须先拥有以下两样:
– Azure账户。最好是非国内的,国内的账户的没试过。
– 公网上的虚拟机。同样,最好是非国内的,虽然目前可以直接Azure API,但不知以后怎样;另外,国内的主机要开web访问也非常麻烦。

创建Azure OpenAI服务

  1. 找到Azure OpenAI(没看到的话直接搜索),然后按”创建”
    创建Azure OpenAI服务

  2. 订阅账户、资源群组、名称、定价层等,按照自身实际情况选择或填写就可以。这里最重要的选择是区域,因为不同区域提供的模型是不一样的,详细可以参考这里 ,还有价格
    选择区域

  3. 网络和tag根据自身情况选择,本例中是对所有网络开放存取,提交后后台会进行部署,约1、2分钟就能创建完成。

  4. 点击”Azure OpenAI”的图标,就能看到刚才创建的服务。
    AzureAI服务清单
  5. 点击进去,在”资源管理”->”金钥与端点”可以看到API的key和url
    key&endpoint
  6. 还需要部署模型,点击“模型部署”->“管理部署”,部署新的模型(会打开新的页面)。
    管理部署模型
  7. 点击”部署模型”->”部署基本模型”,选择要部署的模型(不同区域这里的选项会有不同)
    选择模型
  8. 下一步要输入部署名称,点击”确定”即部署完成。需要注意,调用是以”部署名称”为准,不是模型名称(本例中部署名称跟模型名称一样)。
    部署名称

容器部署ChatGPT-Next-Web

确保虚拟机已经安装好docker相关组件,运行以下命令就可以直接部署完成(相关变量替换为实际参数):

docker run \
  --name=nextchat \
  -p 3000:3000 \
  -e CODE=xxx \
  -e AZURE_URL=https://fortestme.openai.azure.com/openai \
  -e AZURE_API_KEY=xxx \
  -e AZURE_API_VERSION=2024-06-01 \
  -e CUSTOM_MODELS="-all,+gpt-4o-mini@Azure=gpt-4o-mini" \
  -e DEFAULT_MODEL="gpt-4o-mini@Azure" \
  --privileged \
  --restart unless-stopped \
  -d yidadaa/chatgpt-next-web

环境变量说明:

  • CODE,访问密码
  • AZURE_URL,AZURE API接口URL,在endpoint的url后再加上openai就可以
  • AZURE_API_KEY,API key,页面中看到的key1、key2通用
  • AZURE_API_VERSION,API版本,详细参考这里
  • CUSTOM_MODELS,自定义模型。ChatGPT-Next-Web支持多家公司的多种模型,都内置到选项中,不便于选择使用,可以自定义需要的选项。
  • DEFAULT_MODEL,默认使用哪个模型

CUSTOM_MODELS语法简要说明,详细见项目文档

-all, 禁用所有模型
+gpt-4o-mini@azure=gpt-4o-mini,增加一个Azure的模型,’@’前面的是模型的部署名称,’=’后面的是使用时选项中显示的名称

ChatGPT-Next-Web的容器正常运行后,浏览器输入http://ip:3000就访问自己的ChatGPT服务,如果访问不了,注意虚拟机上的防火墙配置。

web

服务发布

完成以上步骤,虽然已经可以正常使用,但基于安全性等种种原因,还是不建议直接3000端口进行访问。以下提供几种对外发布的方案供参考(不作详细展开说明)。

  1. 安装nginx,以反代方式进行部署,再把DNS指向过来就可以通过域名访问;
  2. 通过caddy来进行反代部署,原理跟nginx一样,但caddy能自动申请免费证书并自动续期,省事并提高安全性。
  3. 在主机上安装cloudflared,再通过Tunnels发布,天然享有ssl和cdn,但前提是你的域名托管在CF。

發佈留言