【零成本】基于函数计算搭建ChatGPT站点

1,845 阅读4分钟

当今互联网上的文本生成技术越来越流行,其中最为著名的自然语言处理技术之一是使用预训练的语言模型。ChatGPT 是一个基于 GPT 系列模型的聊天机器人,可以进行对话、问答等多种任务。

阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能

本文将介绍如何使用阿里云函数计算搭建 ChatGPT 站点,实现 无需魔法加持 的在线聊天和问答功能。

image-20230531155038304

前期准备工作

  • 准备一个阿里云账号,并开通 阿里云函数计算 服务托管在中国香港区域,实现在大陆地区无魔法加持的访问OpenAI服务(香港IP访问chat.openai.com/容易被封,但通过SDK访问服务很稳定)
  • 开通容器镜像服务(个人版 免费)注意地域选择香港 在本地构建镜像并上传至阿里云ACR,使用镜像部署函数
  • 注册ChatGPT账号,生成一个API KEY platform.openai.com API Key格式为 sk-xxxxxxxx 调用 OpenAI 官方API 需要在请求头传入该key
  • clone github.com/monarchwang… 使用了OpenAI官方提供的 NodeJS SDK 对接了ChatGPT API,函数计算将部署该服务
  • clone github.com/Chanzhaoyu/… 用 Express 和 Vue3 搭建的 ChatGPT 演示网页,在本地启动后,访问函数计算服务

操作步骤

下面我们一步步来实现,坐稳 发车!

开通OpenAI账号,获取API Key

网上教程很多,这里就略过了,默认大家已经完成这一步,获取了API Key

开通阿里云镜像服务 ACR

打开 cr.console.aliyun.com/cn-hongkong… 创建并进入个人实例

个人实例免费,仅限制命名空间数和上传/下载并发数,个人使用完全足够了

注意需要地域为 中国香港

image-20230531173624303

创建一个命名空间,个人ACR实例限制最多创建三个命名空间

image-20230531173947513

设置访问凭证,即推送和拉取镜像时的用户名和密码(不要把镜像仓库设置成公共读)

image-20230531174714699

Clone代码,构建镜像

终端运行

git clone https://github.com/monarchwang/chatgpt-node-fc.git
cd chatgpt-node-fc

目录下的 .env.example 文件重命名为 .env 并设置对应的参数,例如:

# TODO 设置OpenAI API Key
OPENAI_API_KEY=sk-xxxx
​
# TODO  阿里云容器镜像服务 相关设置,命名空间、访问凭证
ACR_NAMESPACE=namespace
ACR_USERNAME=user
ACR_PASSWORD=password
​

执行命令构建并推送镜像(传参为镜像版本,每次推送新版本需要更改下)

./build.sh v1.1

一切顺利的话,目前镜像已经准备好了,并且在ACR镜像仓库中可以查到对应版本的镜像,接下来就可以去函数计算部署了

部署函数计算

打开 fcnext.console.aliyun.com/cn-hongkong…

image-20230531173113984

注意地域选择中国香港,点击创建服务,填写服务基础信息

image-20230531173326958

点击函数管理,进入函数创建页面

image-20230531173401194

选择 使用容器镜像创建 ,填写基础信息,并从ACR中选择对应的容器镜像

image-20230531175429826

监听端口填写3002,点击创建按钮

image-20230531175549343

点击函数详情,获取公网访问地址

image-20230531175828846

访问 /api/healthy 如果显示如下信息,说明服务一切正常,已经能正常访问OpenAI服务

image-20230531180008685

至此,服务已经部署完成,并且获取到了服务公网访问地址,接下来在本地部署下前端页面

阿里云函数计算有比较大的免费额度,这点还是比较良心的,还可以设置弹性伸缩,没有调用时不计费,个人使用几乎不用花钱,详情可以查看官方文档

本地运行前端页面

终端运行

git clone https://github.com/Chanzhaoyu/chatgpt-web
cd chatgpt-web
npm i

修改根目录下 .env 文件中的 VITE_GLOB_API_URL 为你的实际后端接口地址(即上一步获取到的函数计算公网地址,加上 /api 路径)

image-20230531181025733

运行 npm run dev 打开,访问 http://localhost:1002

image-20230531181237465

尽情享用一个无需魔法的ChatGPT吧

进阶玩法

云效流水线 Flow 提供灵活易用的持续集成、持续验证、 持续发布功能,帮助企业高质量、高效率的交付业务。

借助云效流水线可以实现构建和部署的自动化,最关键的是个人免费。。。(从头白嫖到尾,真香😄)

详细操作步骤后续再补充吧,今天肝不动了。。。

使用云效流水线实现自动部署

image-20230531155337842

image-20230531155405708