三分鐘擁有自己的 chat-gpt (開發(fā)到上線)

三分鐘擁有自己的 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ù)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容