ChatGPT接入微信
微信接入方式
使用GitHub上提供的本地部署或者服务器部署
创建OpenAi账号
openai.com
官网注册需要国外手机号注册
环境
持Linux、MacOS、Windows系统(可在Linux服务器上长期运行),同时需要安装Python。
本次搭建在Kali下测试
基于Debian的系统
1.克隆GitHub代码并且进入目录
git clone https://github.com/zhayujie/chatgpt-on-wechat
cd chatgpt-on-wechat/
2.安装所需要核心依赖
pip3 install itchat-uos==1.5.0.dev0
pip3 install --upgrade openai
配置类
配置文件的模板在根目录的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
"single_chat_prefix": ["@bot"], # 私聊时文本需要包含该前缀才能触发机器人回复
"single_chat_reply_prefix": "[bot] ", # 私聊时自动回复的前缀,用于区分真人
"group_chat_prefix": ["@bot"], # 群聊时包含该前缀则会触发机器人回复
"group_name_white_list": ["需要响应的群名称"], # 开启自动回复的群名称列表
"image_create_prefix": ["画", "看", "找"], # 开启图片回复的前缀
"conversation_max_tokens": 1000, # 支持上下文记忆的最多字符数
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。"
# 人格描述
}
配置说明:
-
个人聊天
个人聊天中,需要以“bot”或“@bot”为开头的内容触摸发器人,对应配置项single_chat_prefix(如果不需要以之前触摸发可以填写"single_chat_prefix": [“”])
机器人回复的内容会以“[bot]”作为前显,以区分真人,对应的配置项为single_chat_reply_prefix(如果不需要前显可以填写"single_chat_reply_prefix": “”) -
群聊天
群聊天中,群名称需要配置在group_name_white_list 中才能开启群聊自动回复。如果想对所有群聊有效,可以直接填写"group_name_white_list": [“ALL_GROUP”]
默认只需要被人@就会触发机器人自动回复;另外群聊天中只需要检测到以“@bot” 开头的内容,同样会自动回复(方便自己,察觉)group_chat_prefix
可选配置:group_name_keyword_white_list配置项支持模糊匹配群名称,配置项则支持模匹配群消息内容,使用方法与上面描述的两个配置项相) group_chat_keywordcontributed by elay 。 -
其他配置
对于图像生成,在满足个人或群体接触发件外,还需要额外的关键词前来接触发,对应配置image_create_prefix
Openai对话对话图片的的参数配置(自由度,回复 ,,,,等等) bot/openai/open_ai_bot.py
conversation_max_tokens:表示能足够记忆的上下文最大单词数(一问一答为一组对话,如果累积的对话单词数超出限制,就会优先移去最早的一组对话)
character_desc配置中保存着你对机器人说的一段话,他会记住这段话并作他的设定,你可以为他定制任何人格 (关于会谈上文的更多内容参考问题)举例
运行
- 本地运行
如果是开机本地运行,直接在项目根目录下执行
python3 app.py
- 服务部署
使用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。
注意:如果扫码后手机提示登录验证需要等5s,而最终的二维码重新刷新并提示Log in time out, reloading QR code,此时需要参考此issue修改一次即可。
多账号支持:将项目复制多份,分别启动程序,使用不同账号扫描码登录即可实时同步运行
特殊指令:用户向机器发送#清除记忆即可清空该使用用户的上下文字记忆