零基础教你免费接入GPT4 | gpt4free-ts + sealos + rapidapi + laf

laf活动天天有,laf明天见,laf天天见!

本次laf的活动主题是免费对接GPT4。大家都知道,本身获取gpt4就有门槛,即使你开了会员,也是有限制的,每 3 小时只能发送 25 条消息。。。更不用说gpt4的api,目前申请到 API 的小伙伴非常少,你以为申请到 API 就可以用了吗?GPT-4 的 API 价格超级无敌贵,是 GPT-3.5 价格的 30 倍,你敢用吗?

所以本次活动足够吸睛,完全免费白嫖 GPT-4 的机会来了,不仅可以白嫖,还可以直接作为 API 来调用!

目前通过该活动我已成功接入discord机器人和web

Discord

Web

本次活动项目的主角是sealos + gpt4free-ts + rapidapi + laf

laf 是开源的云开发平台,提供云函数、云数据库、云存储等开箱即用的应用资源。相关内容参见:免费云开发平台laf轻松零基础接入Midjourney,即刻拥有专属Midjourney调用方案

我们主要聊聊新朋友

一、gpt4free-ts

这个项目前身是gpt4free,该项目通过对各种调用了 OpenAI API 网站的第三方 API 进行逆向工程,达到使任何人都可以免费访问该流行 AI 模型的目的。gpt4free-ts可以看作是它的Typescript版本,更方便部署,而且封装了 API,接入了以下站点:

其中最香的站点是forefront.ai,我们的目标就是它。

二、rapidapi

forefront 的 GPT-4 模型是有限制的,每个账号每 3 小时内只能发送 5 条消息。

所以接下来需要用到一个非常神奇的服务叫RapidAPI

你可以通过这个 API 来获取无穷无尽的临时邮箱,然后再用这些无穷无尽的临时邮箱去注册无穷无尽的 forefront 账号,所以核心就是账号池,但我们不用手动再去写一个账号池了,接着看。

首先你需要在这里注册一个账号并登录:rapidapi.com/calvinlove

然后需要在 Pricing 页面开启订阅:

一般情况下订阅免费套餐即可,一天可以调用 100 次。

如果你有更高的需求,可以考虑订阅更高级的套餐(比如你的用户数量特别多)。

订阅完了之后,你就能看到 API Key 了。这个 Key 我们后面会用到。

三、sealos

sealos是云操作系统,就是把一群机器的 CPU 和内存看成一个整体,然后给用户提供一个交互界面,用户可以通过这个交互界面来操作所有的资源。

懂 K8s 的玩家可能要说了:这个我懂,K8s 就可以!

如果我们的目标愿景是一个云操作系统,K8s 充其量只能是这个云操作系统的内核,就像 Linux 内核一样。完整的云操作系统需要一个像 Windows 和 Ubuntu 操作系统那样的交互界面,也就是操作系统发行版。

sealos官网:https://cloud.sealos.io

四、配置流程

首先安装一个 gpt4free-ts 集群。

什么叫集群?就是说我要运行一群 gpt4free-ts 实例,然后前面加一个负载均衡作为对外的 API 入口。

首先进入 Sealos 云操作系统的界面,打开桌面上的应用管理 App

点击新建应用,然后在启动参数中,按照以下方式进行设置:

  • 应用名称随便写,比如 gpt4free。
  • 镜像名称是:xiangsx/gpt4free-ts:latest,这个名称严格按这个填
  • CPU 和内存需要根据应用的实际情况来填写。这个应用运行之后默认会启动两个 Chrome 浏览器来模拟登录 forefront,每次对话会从里面取一个账号来使用,次数用完了会自动注册新账号(因为每个账号每 3 小时只能发送 5 条信息)。我们可以通过环境变量来修改启动的浏览器数量,所以需要根据你的浏览器数量来确定 CPU 和内存。 我自己把浏览器数量设置为 3,所以需要的内存和 CPU 比较多(后面会告诉你怎么设置环境变量)。
  • 实例数根据自己的实际需求填写,我主要实现逻辑,就填了1个实例。
  • 容器暴露端口指定为 3000。
  • 打开外网访问。

打开高级配置-编辑环境变量,在环境变量中设置如下:

rapid_api_key=<rapid_api_key>
DEBUG=0
POOL_SIZE=3

⚠️注意:请将 <rapid_api_key> 替换为你自己的 key。

其中 POOL_SIZE 就是浏览器数量,每个浏览器会登录一个 forefront 账号。你可以根据自己的需要调整浏览器数量,并根据浏览器数量调整 CPU 和内存。如果你不知道怎么调整合适,建议无脑跟着本文操作。

接着点击新增存储卷,容量只需 1G,挂载路径设置为 /usr/src/app/run

这个存储的作用是为了保存已登录的账号。已经注册的账号 3 个小时以后还可以重新使用,不用再浪费邮箱去注册新账号。

最终点击右上角的「部署应用」,即可完成部署,最终要等实例处于Running状态才算正式启动。

之后复制右侧的外网地址,这就是你的API地址

进行测试

注意,使用gpt4的时候一定要在api后面加上ask,其他的字段格式参考上图。

五、接入Web

我在上文生成的api外面用laf又套了一层,其实就是用laf写了个请求函数作为自己调用的api。

import cloud from '@lafjs/cloud'

export default async function (ctx: FunctionContext) {
  const prompt = ctx.body.prompt
  console.log('prompt:', prompt)

  const ret = await cloud.fetch({
    url: `<这里是你在上文中生成的api>/ask?prompt=${prompt}&model=forefront`,
    method: "get",
  });
  console.log(ret.data);
  return ret.data;
}

然后发布该云函数即可。

为快速实现接入实际效果,web端没有做太多内容,采用了github上的开源项目github.com/adrianhajdin

该项目主要是实现和gpt3.5api对话的功能,因此在代码中只需要更改client端中script.js文件中handleSubmit函数中的请求代码。

const response = await fetch('<这里改为laf云函数的地址>', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      prompt: data.get('prompt')
    })
  });

源代码是用express构建了一个server端,这里可以根据自己需要是否要用它,如果要用的话就直接改这里的请求代码。

六、发布项目并部署到laf云平台

根据需求,本项目我只需要打包client端,在client路径下用命令行输入npm run build完成打包。

然后进入【Laf云开发】-【存储】,新建“Bucket”空间,如下图

完成后,点击上方“上传”按钮,将本地打包后生成的dist文件夹下的文件全部上传。注意,assets文件夹可能需要你先建立文件夹后,再在里面上传文件,最后的目录应该是这样:

最后点击右上方“开启网站托管”按钮,生成“当前域名”,即可进行外部访问了。

关于网站托管详细介绍,可访问官网:doc.laf.run/guide/websi

如有疑问请留言,欢迎大家关注公众号:Python生活志