三分鐘擁有自己的 chat-gpt (開發(fā)到上線)
- 首先你需要有一個(gè)
laf賬號(hào),如果你還不知道laf是什么,點(diǎn)擊這里三分鐘學(xué)會(huì) - 然后你還需要有一個(gè)
chat-gpt的賬號(hào)并且生成一個(gè)apiKey(這一步可以問Google)
云函數(shù)
具備了上面這兩個(gè)條件我們就可以開始啦。
點(diǎn)擊 NPM 依賴右邊的加號(hào)

file
搜索
chatgpt 找到對(duì)應(yīng)的 npm 包 保存并重啟應(yīng)用。然后就可以像我一樣新建一個(gè)云函數(shù) 名字叫
send并寫入以下內(nèi)容(記得更換 apiKey)
import cloud from '@lafjs/cloud'
export async function main(ctx: FunctionContext) {
const { ChatGPTAPI } = await import('chatgpt')
const data = ctx.body
// 這里需要把 api 對(duì)象放入 cloud.shared 不然無法追蹤上下文
let api = cloud.shared.get('api')
if (!api) {
api = new ChatGPTAPI({ apiKey: "這里需要換成你自己的apiKey哦" })
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
}
前端
前端項(xiàng)目中老三樣
// 安裝 laf sdk
npm install laf-client-sdk
// 引入
import { Cloud } from "laf-client-sdk";
// 創(chuàng)建 cloud 對(duì)象 這里換掉appid
const cloud = new Cloud({
baseUrl: "https://這里換成自己的appid.laf.dev",
getAccessToken: () => "",
});
這里我們看一下前端的核心代碼,非常的簡單,就是把提問的內(nèi)容和上下文 id 傳入云函數(shù)就可以了。
async function send() {
// 我們提問的內(nèi)容
const message = question.value;
let res;
// 與云函數(shù)邏輯一樣,有上下文 id 就傳入
if (!parentMessageId.value) {
res = await cloud.invoke("send", { message });
} else {
res = await cloud.invoke("send", { message, parentMessageId: parentMessageId.value });
}
// 回復(fù)我們的內(nèi)容在 res.text
// 這個(gè)是上下文 id
parentMessageId.value = res.id;
}
到這一步 我們已經(jīng)可以發(fā)信息給 chatgpt 并且拿到回復(fù)的消息了。
我們只要稍微加億點(diǎn)點(diǎn)細(xì)節(jié),就可以變成這樣。
加完這點(diǎn)細(xì)節(jié)之后,基本開發(fā)工作就完成了,接下來就是把項(xiàng)目上線分享給你的朋友,順便裝個(gè)杯。
說到上線我們現(xiàn)在應(yīng)該要去 買一臺(tái)服務(wù)器 安裝
nginx 配置nginx 解析域名 綁定域名...
NO NO NO 我不允許你浪費(fèi)年輕而美好的生命,life is short, you need laf :)
上線
打開你的 laf 點(diǎn)擊存儲(chǔ)界面->點(diǎn)擊上方加號(hào)->創(chuàng)建一個(gè)權(quán)限為 readonly 的存儲(chǔ)桶(名字隨意)
創(chuàng)建完之后 在你的前端項(xiàng)目中運(yùn)行打包命令 我這里是
npm run build,打包完畢之后找到打包好的 dist 文件夾。像我一樣把
dist 文件里面的所有東西都上傳到我們剛剛創(chuàng)建的存儲(chǔ)桶里面,記住是原封不動(dòng)的上傳哦,文件就是文件,文件夾就是文件夾。上傳完畢之后,發(fā)現(xiàn)右上角有一個(gè) “開啟網(wǎng)站托管” 點(diǎn)一下。
點(diǎn)完之后出來一個(gè)鏈接,我們點(diǎn)擊一下訪問看看是啥東西。
哦!我的老天鵝呀 這不就是我剛剛開發(fā)的項(xiàng)目嗎?
恭喜 到這里你的項(xiàng)目已經(jīng)上線了,快分享給你的好朋友吧!
點(diǎn)擊這里查看我的 chatGPT
點(diǎn)擊這里查看項(xiàng)目源碼(樣式部分是從 chatGPT 官網(wǎng)復(fù)制過來的有些亂)
原文地址
sealos 以kubernetes為內(nèi)核的云操作系統(tǒng)發(fā)行版,讓云原生簡單普及
laf 寫代碼像寫博客一樣簡單,什么docker kubernetes統(tǒng)統(tǒng)不關(guān)心,我只關(guān)心寫業(yè)務(wù)!