使用ChatGPT搭建微信聊天機器人
簡介
ChatGPT近期以強大的對話和信息整合能力風靡全網,可以寫代碼、改論文、講故事,幾乎無所不能,這讓人不禁有個大膽的想法,能否用他的對話模型把我們的微信打造成一個智能機器人,可以在與好友對話中給出意想不到的回應,而且再也不用擔心女朋友影響我們 打游戲 工作了。
基于ChatGPT的微信聊天機器人,通過 ChatGPT 接口生成對話內容,使用 itchat 實現微信消息的接收和自動回復。已實現的特性如下:
ChatGPT接口:https://github.com/openai/openai-pythonitchat:https://github.com/littlecodersh/ItChat 文本對話:接收私聊及群組中的微信消息,使用ChatGPT生成回復內容,完成自動回復規則定制化:支持私聊中按指定規則觸發自動回復,支持對群組設置自動回復白名單多賬號:支持多微信賬號同時運行圖片生成:支持根據描述生成圖片,并自動發送至個人聊天或群聊上下文記憶:支持多輪對話記憶,且為每個好友維護獨立的上下會話語音識別:支持接收和處理語音消息,通過文字或語音回
個人聊天

群組聊天

圖片生成

快速開始
準備
1. OpenAI賬號注冊
前往 OpenAI注冊頁面 創建賬號,參考這篇 教程 可以通過虛擬手機號來接收驗證碼。
創建完賬號則前往 API管理頁面 創建一個 API Key 并保存下來,后面需要在項目中配置這個key。
OpenAI注冊頁面:https://beta.openai.com/signup教程:https://www.pythonthree.com/register-openai-chatgpt/API管理頁面:https://beta.openai.com/account/api-keys
項目中使用的對話模型是 davinci,計費方式是約每 750 字 (包含請求和回復) 消耗 $0.02,圖片生成是每張消耗 $0.016,賬號創建有免費的 $18 額度,使用完可以更換郵箱重新注冊。
2. 運行環境
支持 Linux、MacOS、Windows 系統(可在Linux服務器上長期運行),同時需安裝 Python。
注:建議Python版本在 3.7.1~3.9.X 之間,3.10及以上版本在 MacOS 可用,其他系統上不確定能否正常運行。
克隆項目代碼:git clone https://github.com/zhayujie/chatgpt-on-wechatcd chatgpt-on-wechat/ 安裝所需核心依賴:pip3 install itchat-uos==1.5.0.dev0pip3 install --upgrade openai
注:itchat-uos使用指定版本1.5.0.dev0,openai使用最新版本,需高于0.27.0。
配置
配置文件的模板在根目錄的config-template.json中,需復制該模板創建最終生效的 config.json 文件:
cp config-template.json config.json
然后在config.json中填入配置,以下是對默認配置的說明,可根據需要進行自定義修改:
# config.json文件內容示例{ "open_ai_api_key": "YOUR API KEY", # 填入上面創建的 OpenAI API KEY "proxy": "127.0.0.1:7890", # 代理客戶端的ip和端口 "single_chat_prefix": ["bot", "@bot"], # 私聊時文本需要包含該前綴才能觸發機器人回復 "single_chat_reply_prefix": "[bot] ", # 私聊時自動回復的前綴,用于區分真人 "group_chat_prefix": ["@bot"], # 群聊時包含該前綴則會觸發機器人回復 "group_name_white_list": ["ChatGPT測試群", "ChatGPT測試群2"], # 開啟自動回復的群名稱列表 "image_create_prefix": ["畫", "看", "找"], # 開啟圖片回復的前綴 "conversation_max_tokens": 1000, # 支持上下文記憶的最多字符數 "character_desc": "你是ChatGPT, 一個由OpenAI訓練的大型語言模型, 你旨在回答并解決人們的任何問題,并且可以使用多種語言與人交流。" # 人格描述}
運行
1. 本地運行
如果是開發機 本地運行,直接在項目根目錄下執行:
python3 app.py
終端輸出二維碼后,使用微信進行掃碼,當輸出 "Start auto replying" 時表示自動回復程序已經成功運行了(注意:用于登錄的微信需要在支付處已完成實名認證)。
掃碼登錄后你的賬號就成為機器人了,可以在微信手機端通過配置的關鍵詞觸發自動回復 (任意好友發送消息給你,或是自己發消息給好友),參考#142。
2. 服務器部署
使用nohup命令在后臺運行程序:
touch nohup.out # 首次運行需要新建日志文件 nohup python3 app.py & tail -f nohup.out # 在后臺運行程序并通過日志輸出二維碼
掃碼登錄后程序即可運行于服務器后臺,此時可通過 ctrl+c 關閉日志,不會影響后臺程序的運行。
使用 ps -ef | grep app.py | grep -v grep 命令可查看運行于后臺的進程,如果想要重新啟動程序可以先 kill 掉對應的進程。
日志關閉后如果想要再次打開只需輸入 tail -f nohup.out。scripts/目錄有相應的腳本可以調用
注意: 如果掃碼后手機提示登錄驗證需要等待5s,而終端的二維碼再次刷新并提示 Log in time out, reloading QR code,此時需參考此 issue 修改一行代碼即可解決。
多賬號支持: 將項目復制多份,分別啟動程序,用不同賬號掃碼登錄即可實現同時運行。特殊指令:用戶向機器人發送 #清除記憶 即可清空該用戶的上下文記憶。