生成式AI爆火,如何快速搭建属于自己的chatGPT?

从去年11月份至今,chatGPT已经刷爆全球技术圈。从chatGPT诞生短短一周时间注册用户就达到了100万,目前注册及使用人数已经破亿。而且,在长达3个月时间里chatGPT一直占据各大技术社区和平台的榜首,各种关于它的话题讨论也是层出不穷。

chatGPT的热度“高烧不退”,ChatGPT不仅可以写论文、写代码,还可以写诗、写新闻、写情书、写邮件,甚至还可以当“翻译”、当“心理咨询师”。

可能很多人都想要使用他,但对于一般人来说,却有着不低的门槛。这里,就教大家一种方法,可以快速搭建出属于自己的ChatGPT。想怎么玩,就怎么玩。

OpenAI 已经公布了 ChatGPT 正式版 API,背后的新模型是 gpt-3.5-turbo,这是 OpenAI 一个分成先进的模型,响应速度快,价格也非常便宜。

作为开发人员,我们希望通过 API 将 ChatGPT 和相关模型集成到自己的产品和应用中,但因为某些原因,可能无法正常访问 ChatGPT 的API。于是网上出现了各种各样的 API 反代服务,我们可以直接通过这些反代服务来变相访问 ChatGPT API。

解决了 API 的访问问题之后,我们还要准备一个开发环境,如果使用 Node.js 客户端来说,我们就需要准备一个 Node.js 环境。

有没什么简单快捷的方法来调用 ChatGPT的 API 呢?

当然有了,那就是 Laf 。

Laf 是一个完全开源的一站式云开发平台,提供了开箱即用的云函数,云数据库,对象存储等开发能力,让你可以像写博客一样简单轻松的写代码。

如果你想要快速的了解 Laf 的用法,可以参考一下这篇文章:让你快速学会 Laf。

下面说说具体使用方法:

首先你需要登录laf.dev,然后新建一个应用。

在 NPM 依赖面板中点击右上角输入 chatgpt 进行搜索,选择第一个搜索结果,保存并重启:

重启之后,自定义依赖项中便出现了 chatgpt。

然后就可以新建一个云函数,名字可以叫send,并写入以下内容:

import cloud from '@lafjs/cloud'
export async function main(ctx: FunctionContext) {const { ChatGPTAPI } = await import('chatgpt')const api = new ChatGPTAPI({ apiKey: cloud.env.CHAT_GPT_API_KEY })let res = await api.sendMessage('你喜欢唱、跳、篮球、Rap吗')console.log(res.text)return res.text
}

API Key 是通过环境变量传入的,所以我们还需要创建一个环境变量。

点击左下角的设置图标:CHAT_GPT_API_KEY

依次选择「环境变量」、 「新增环境变量」,输入环境变量的名称和值,然后点击「确定」,再点击「更新」,便会重启应用。

现在点击右上角的「运行」,即可调试运行。

好了!现在我们来试试添加追踪上下文的功能。

其实也很简单,只需要在对话时传入上一次对话的 ID 即可,代码如下:

import cloud

import cloud from '@lafjs/cloud'
export async function main(ctx: FunctionContext) {const { ChatGPTAPI } = await import('chatgpt')const api = new ChatGPTAPI({ apiKey: cloud.env.CHAT_GPT_API_KEY })let res = await api.sendMessage('你喜欢唱、跳、篮球、Rap吗')console.log(res.text)// 传入 parentMessageId 追踪上下文 res = await api.sendMessage('不对,请重新回答', { parentMessageId: res.id }) console.log(res.text) return res.text
}

运行一下看看:

好的,现在已经明白基本用法了!

接下来我们就可以开始动手打造自己的 ChatGPT 了,首先把上一节的函数替换为下面的内容:

import cloud from '@lafjs/cloud'
export async function main(ctx: FunctionContext) { 
const { ChatGPTAPI } = await import('chatgpt') 
const data = ctx.body // 这里需要把 api 对象放入 cloud.shared 不然无法追踪上下文 let api = cloud.shared.get('api') if (!api) { api = new ChatGPTAPI({ apiKey: cloud.env.CHAT_GPT_API_KEY }) cloud.shared.set('api', api) } let res // 这里前端如果传过来 parentMessageId 则代表需要追踪上下文 if (!data.parentMessageId) { res = await api.sendMessage(data.message) } else { res = await api.sendMessage(data.message, { parentMessageId: data.parentMessageId }) } return res
}

现在应该很好理解这个函数了吧?

前端

我们要实现的是 Web 版 ChatGPT,所以还需要一个前端页面。首先需要安装 Laf 的 SDK:

$ npm install laf-client-sdk

接下来,需要创建一个 cloud 对象:

import { Cloud } from "laf-client-sdk"; // 创建 cloud 对象 这里需要替换成自己的 App ID
const cloud = new Cloud({baseUrl: "https://laf.dev", getAccessToken: () => "", // 这里不需要授权,先填空
});

这里我们看一下前端的核心代码,非常的简单,就是把提问的内容和上下文 id 传入云函数就可以了。

async function send() {
// 我们提问的内容const message = question.value;let res;// 与云函数逻辑一样,有上下文 id 就传入if (!parentMessageId.value) { res = await cloud.invoke("send", { message });} else { res = await cloud.invoke("send", { message, parentMessageId: parentMessageId.value });}// 回复我们的内容在 res.text // 这个是上下文 idparentMessageId.value = res.id;
}

到这一步 我们已经可以发信息给 ChatGPT 并且拿到回复的消息了。

我们只要稍微加点细节,就可以了。

加完这点细节之后,基本开发工作就完成了,接下来就是把项目上线分享给你的朋友们了。

那么我们现在应该要去买一台服务器安装 ,配置 Nginx,解析域名,绑定域名…

不不不,完全不需要。

我们只需要打开你的 Laf,点击存储界面 –> 点击上方加号 –> 创建一个权限为 readonly 的存储桶就可以了(名字可以随便起哦)。

本文链接:https://my.lmcjl.com/post/4939.html

展开阅读全文

4 评论

留下您的评论.