將ChatGPT接入QQ機(jī)器人
0x01
ChatGPT 在3月初 推出了 `gpt-3.5-turbo` 模型,生成答案的速度更快,每千 tokon 的價(jià)格進(jìn)一步降低至 $0.002。
外加網(wǎng)頁(yè)版的訪問(wèn)越來(lái)越困難,DNS污染 + cf 限制運(yùn)營(yíng)商 IP 訪問(wèn)的雙重夾擊
所以上周花了點(diǎn)時(shí)間,研究了一下 [go-cqhttp](https://github.com/Mrs4s/go-cqhttp) 和 openai 開放的 [api](https://platform.openai.com/docs/guides/chat/introduction),將兩頭對(duì)接起來(lái),寫了一個(gè) QQ 機(jī)器人程序,直接用 QQ 對(duì)話來(lái)使用 ChatGPT:

程序用 Rust 語(yǔ)言編寫,現(xiàn)已更新 release v0.2.0,開源在 [qbot](https://github.com/EluvK/qbot)

0x02
原理上很簡(jiǎn)單:監(jiān)聽(tīng) go-cqhttp 的消息通知,對(duì)其中的私聊消息和群聊@消息進(jìn)行處理,請(qǐng)求 openai 的 api,得到返回結(jié)果后再通過(guò) go-cqhttp 回復(fù)消息。(接口戰(zhàn)士)
然后進(jìn)一步的可以開發(fā)更多便捷的功能:
? bot 程序保存住對(duì)話歷史,作為后續(xù)請(qǐng)求的上下文,就可以得到連續(xù)對(duì)話體驗(yàn)。
? 機(jī)器人指令 (清理對(duì)話歷史,切換預(yù)設(shè)角色)
? 黑名單管理
? 通過(guò) proxy 轉(zhuǎn)發(fā)請(qǐng)求 openai,這樣機(jī)器人也可以部署在國(guó)內(nèi)的服務(wù)器上(有利于 QQ 登陸穩(wěn)定安全)

0x03
開發(fā)過(guò)程中的一點(diǎn)感想:
尊重他人命運(yùn),放棄助人情節(jié)。愿意折騰的人自有途徑去獲取到他想要的工具。開發(fā)群聊功能讓我掉入了處理無(wú)意義需求的陷阱里,最終也得不到想要的結(jié)果。
不過(guò)簡(jiǎn)單搜索了下,同類型的機(jī)器人里也沒(méi)有用 Rust 寫的,作為對(duì)開源世界的一點(diǎn)微不足道的貢獻(xiàn),還是分享出來(lái)。希望能夠幫助到想把 ChatGPT 作為開發(fā)輔助工具的同學(xué)。愿意部署自己的bot的同學(xué)可以在上面的開源倉(cāng)庫(kù)里找到方法。

#?商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
# For commercial use, please contact the author for authorization. For non-commercial use, please indicate the source.
# 協(xié)議(License):署名-非商業(yè)性使用-相同方式共享 4.0 國(guó)際 (CC BY-NC-SA 4.0)
# 作者(Author):Mr.Eucalypt
# 鏈接(URL):https://blog.eluvk.cn/rust/2023/03/%e5%b0%86chatgpt%e6%8e%a5%e5%85%a5qq%e6%9c%ba%e5%99%a8%e4%ba%ba/
# 來(lái)源(Source):Eluvk