ChatGPT近期以強大的對話和信息整合能力風(fēng)靡全網(wǎng),可以寫代碼、改論文、講故事,幾乎無所不能,這讓人不禁有個大膽的想法,能否用他的對話模型打造一個智能機器人,可以在與好友對話中給出意想不到的回應(yīng),而且再也不用擔(dān)心女朋友影響我們
打游戲工作了。
本項目是基于ChatGPT的聊天機器人,通過 OpenAI 接口生成對話內(nèi)容,使用 itchat 實現(xiàn)消息的接收和自動回復(fù)。
簡介
已實現(xiàn)特性
- 文本對話: 接收私聊及群組中的消息,使用ChatGPT生成回復(fù)內(nèi)容,完成自動回復(fù)
- 規(guī)則定制化: 支持私聊中按指定規(guī)則觸發(fā)自動回復(fù),支持對群組設(shè)置自動回復(fù)白名單
- 多賬號: 支持多賬號同時運行
- 圖片生成: 支持根據(jù)描述生成圖片,并自動發(fā)送至個人聊天或群聊
Github地址: https://github.com/zhayujie/chatgpt-on-wechat
更新日志
2023.02.09: 掃碼登錄存在封號風(fēng)險,請謹慎使用,參考 #58
2022.12.19: 引入 itchat-uos 替換 itchat,解決由于不能登錄網(wǎng)頁版而無法使用的問題,且解決Python3.9的兼容問題
2022.12.18: 支持根據(jù)描述生成圖片并發(fā)送,openai版本需大于0.25.0
2022.12.17: 原來的方案是從 ChatGPT頁面 獲取session_token,使用 revChatGPT 直接訪問web接口,但隨著ChatGPT接入Cloudflare人機驗證,這一方案難以在服務(wù)器順利運行。 所以目前使用的方案是調(diào)用 OpenAI 官方提供的 API,回復(fù)質(zhì)量上基本接近于ChatGPT的內(nèi)容,劣勢是暫不支持有上下文記憶的對話,優(yōu)勢是穩(wěn)定性和響應(yīng)速度較好。
快速開始
準(zhǔn)備
1. OpenAI賬號注冊
前往 OpenAI注冊頁面 創(chuàng)建賬號,參考這篇 教程 可以通過虛擬手機號來接收驗證碼。創(chuàng)建完賬號則前往 API管理頁面 創(chuàng)建一個 API Key 并保存下來,后面需要在項目中配置這個key。
項目中使用的對話模型是 davinci,計費方式是每1k字 (包含請求和回復(fù)) 消耗 $0.02,圖片生成是每張消耗 $0.016,賬號創(chuàng)建有免費的 $18 額度,使用完可以更換郵箱重新注冊。
2.運行環(huán)境
支持 Linux、MacOS、Windows 系統(tǒng)(可在Linux服務(wù)器上長期運行),同時要求安裝有 Python
(版本需在 3.7.1~3.9.X 之間,Linux環(huán)境建議使用3.7.X)。
1.克隆項目代碼:
git clone https://github.com/zhayujie/chatgpt-on-wechat
cd chatgpt-on-wechat/
2.安裝所需核心依賴:
pip3 install itchat-uos==1.5.0.dev0
pip3 install openai==0.25.0
配置
配置文件的模板在根目錄的config-template.json
中,需復(fù)制該模板創(chuàng)建最終生效的 config.json
文件:
cp config-template.json config.json
然后在config.json
中填入自定義配置,各配置項含義如下:
# config.json文件內(nèi)容示例
{
"open_ai_api_key": "YOUR API KEY" # 填入上面創(chuàng)建的 OpenAI API KEY
"single_chat_prefix": ["bot", "@bot"], # 私聊時文本需要包含該前綴才能觸發(fā)機器人回復(fù)
"single_chat_reply_prefix": "[bot] ", # 私聊時自動回復(fù)的前綴,用于區(qū)分真人
"group_chat_prefix": ["@bot"], # 群聊時包含該前綴則會觸發(fā)機器人回復(fù)
"group_name_white_list": ["ChatGPT測試群", "ChatGPT測試群2"], # 開啟自動回復(fù)的群名稱列表
"image_create_prefix": ["畫", "看", "找"] # 開啟圖片回復(fù)的前綴
}
配置說明:
- 個人聊天中,需要以 “bot” 或 “@bot” 為開頭的內(nèi)容觸發(fā)機器人,對應(yīng)配置中的
single_chat_prefix
;機器人回復(fù)的內(nèi)容會以 “[bot]” 作為前綴, 以區(qū)分真人,對應(yīng)的配置為single_chat_reply_prefix
- 群組聊天中,群名稱需配置在
group_name_white_list
中才能開啟群聊自動回復(fù),默認只要被@就會觸發(fā)機器人自動回復(fù),另外群聊天中只要檢測到以 “@bot” 開頭的內(nèi)容,同樣會自動回復(fù),這對應(yīng)配置group_chat_prefix
- 對于圖像生成,在滿足個人或群組觸發(fā)條件外,還需要額外的關(guān)鍵詞,對應(yīng)配置
image_create_prefix
- 關(guān)于OpenAI對話及圖片接口的參數(shù)配置(內(nèi)容自由度、回復(fù)字數(shù)限制、圖片大小等),可以參考 對話接口 和 圖像接口 文檔直接在 代碼
bot\openai\open_ai_bot.py
中進行調(diào)整。
運行
1.如果是開發(fā)機本地調(diào)試,直接在項目根目錄下執(zhí)行:
python3 app.py
終端輸出二維碼后,進行掃碼,當(dāng)輸出 “Start auto replying” 時表示自動回復(fù)程序已經(jīng)成功運行了(注意:用于登錄的賬號需要在支付處已完成實名認證)。掃碼登錄后你的賬號就成為機器人了,可以在手機端通過配置的關(guān)鍵詞觸發(fā)自動回復(fù) (任意好友發(fā)送消息給你,或是自己發(fā)消息給好友),參考#142。
2.如果是服務(wù)器部署,則使用nohup命令在后臺運行:
touch nohup.out # 首次運行需要新建日志文件
nohup python3 app.py & tail -f nohup.out # 后臺運行程序并輸出日志
掃碼登錄后程序即可運行于服務(wù)器后臺,此時可通過 ctrl+c
關(guān)閉日志,不會影響后臺程序的運行。使用 ps -ef | grep app.py | grep -v grep
命令可查看運行于后臺的進程,如果想要重新啟動程序可以先 kill
掉對應(yīng)的進程。日志關(guān)閉后如果想要再次打開只需輸入 tail -f nohup.out
。
注:如果 掃碼后手機提示登錄驗證需要等待5s,而終端的二維碼再次刷新并提示
Log in time out, reloading QR code
,此時需參考此 issue 修改一行代碼即可解決。
常見問題
FAQs: https://github.com/zhayujie/chatgpt-on-wechat/wiki/FAQs
聯(lián)系
歡迎提交PR、Issues,以及Star支持一下。程序運行遇到問題優(yōu)先查看 常見問題列表 ,其次前往 Issues 中搜索,沒有相似問題則創(chuàng)建Issue。文章來源:http://www.zghlxwxcb.cn/news/detail-554023.html
文章鏈接: https://zhayujie.com/chatgpt-on-wechat.html
Github倉庫:https://github.com/zhayujie/chatgpt-on-wechat文章來源地址http://www.zghlxwxcb.cn/news/detail-554023.html
到了這里,關(guān)于智能聊天機器人的實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!