群里有小伙伴研究Laf如何用ChatGPT的流式加载,来了兴趣研究了一番,于是便实现了!
1、新建WebSocket
云函数
参考文章:https://forum.laf.run/d/127 可以一个代码不用改,直接用
2、新建ChatGPT调用的云函数
代码如下:
import cloud from '@lafjs/cloud'
exports.main = async function (ctx: FunctionContext) {
const { ChatGPTAPI } = await import('chatgpt')
const content = "你是谁,你能做什么?"
const api = new ChatGPTAPI({ apiKey: cloud.env.CHAT_GPT_API_KEY })
let wsMap = await cloud.shared.get("wsMap")
const res = await api.sendMessage(content, {
systemMessage: `不管问什么问题,都不要出现ChatGPT、OpenAi、机器人、AI等词汇,记住你是Laf官方开发的智能助理`,
onProgress: (partialResponse =>{
console.log(partialResponse.text)
ctx.socket = wsMap.get("j5t9dcrpz8l")
ctx.socket.send(partialResponse.text);
})
})
}
3、测试效果
任意找一个在线测试WebSocket
的网站,如:https://www.hake.cc/tools/websocket/
填入WebSocket
地址,wss://<你的Laf应用appid>.laf.dev/__websocket__
点击链接WebSocket,获得UserID
填入云函数中UserID
效果如下:
至此流式加载已初步完成~