三分鐘擁有自己的 chat-gpt (開發(fā)到上線)
- 首先你需要有一個
laf
賬號,如果你還不知道laf
是什么稚矿,點擊這里三分鐘學(xué)會 - 然后你還需要有一個
chat-gpt
的賬號并且生成一個apiKey
(這一步可以問Google
)
云函數(shù)
具備了上面這兩個條件我們就可以開始啦锋勺。
點擊 NPM
依賴右邊的加號
搜索
chatgpt
找到對應(yīng)的 npm
包 保存并重啟應(yīng)用乍丈。然后就可以像我一樣新建一個云函數(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 對象放入 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
}
前端
前端項目中老三樣
// 安裝 laf sdk
npm install laf-client-sdk
// 引入
import { Cloud } from "laf-client-sdk";
// 創(chuàng)建 cloud 對象 這里換掉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
// 這個是上下文 id
parentMessageId.value = res.id;
}
到這一步 我們已經(jīng)可以發(fā)信息給 chatgpt
并且拿到回復(fù)的消息了秋忙。
我們只要稍微加億點點細節(jié)彩掐,就可以變成這樣构舟。
加完這點細節(jié)之后,基本開發(fā)工作就完成了堵幽,接下來就是把項目上線分享給你的朋友狗超,順便裝個杯。
說到上線我們現(xiàn)在應(yīng)該要去 買一臺服務(wù)器 安裝
nginx
配置nginx
解析域名 綁定域名...
NO NO NO 我不允許你浪費年輕而美好的生命朴下,life is short, you need laf :)
上線
打開你的 laf
點擊存儲界面->點擊上方加號->創(chuàng)建一個權(quán)限為 readonly 的存儲桶(名字隨意)
創(chuàng)建完之后 在你的前端項目中運行打包命令 我這里是
npm run build
,打包完畢之后找到打包好的 dist
文件夾努咐。像我一樣把
dist
文件里面的所有東西都上傳到我們剛剛創(chuàng)建的存儲桶里面,記住是原封不動的上傳哦殴胧,文件就是文件渗稍,文件夾就是文件夾。上傳完畢之后团滥,發(fā)現(xiàn)右上角有一個 “開啟網(wǎng)站托管” 點一下竿屹。
點完之后出來一個鏈接,我們點擊一下訪問看看是啥東西灸姊。
哦拱燃!我的老天鵝呀 這不就是我剛剛開發(fā)的項目嗎?
恭喜 到這里你的項目已經(jīng)上線了力惯,快分享給你的好朋友吧碗誉!
點擊這里查看我的 chatGPT
點擊這里查看項目源碼(樣式部分是從 chatGPT 官網(wǎng)復(fù)制過來的有些亂)
原文地址
sealos 以kubernetes為內(nèi)核的云操作系統(tǒng)發(fā)行版,讓云原生簡單普及
laf 寫代碼像寫博客一樣簡單父晶,什么docker kubernetes統(tǒng)統(tǒng)不關(guān)心哮缺,我只關(guān)心寫業(yè)務(wù)!