使用 ChatGPT 搭建微信聊天机器人

Posted by Yezhiwei on February 7, 2023

体验震撼

ChatGPT 近期以强大的对话和信息整合能力风靡全网,可以写代码、写诗、改论文、讲故事、教你谈恋爱等等,几乎无所不能。当然它也有不能干的,比如让它告诉你怎么赚 100 万。。。

自从注册了帐号,用上 ChatGPT 发现已经离不开它了哈,有问题第一时间都会想到去 ChatGPT 提问试试。它的回答总感觉就是有一个专业团队为你专门整理答案一样,非常准确又没有广告。

ChatGPT 是在大量的人类对话数据集上训练的,并使用这种训练来生成对自然语言提示的适当和连贯性的响应。ChatGPT 可用于为聊天机器人、虚拟助理和其他会话系统生成文本,并能够生成广泛的响应,包括对问题的简单回答、对需要更复杂推理或解释的提示的响应,以及幽默或吸引人的响应。

于是,先尝试把 ChatGPT 部署成微信聊天机器人,让大伙儿体验下聊天效果哈

准备一个 OpenAI 账号

参考上文,里面有具体的操作步骤。

API keys 申请

OpenAI 是提供了接入的 API keys 的,只有在申请了这个 API keys 才能完成后续的接入动作。

https://openai.com/api/ 登录己注册的帐号,登录成功后,点击右上角的头像,如下图:

image-20230207223608310

点击「+Create new secret key」,生成一下 Key,再下面步骤里会使用到这个 Key 调用 ChatGPT API。

运行环境准备

推荐使用 conda 创建虚拟环境,可在 https://www.anaconda.com/ 下载对应系统的应用,然后按向导一路「下一步」完成安装。

建议 Python 版本在 3.7.1~3.9.X 之间,可以直接在 anaconda 可视化界面下创建环境,如下图:

image-20230207224632562

部署代码

已实现特性:

  • 文本对话: 接收私聊及群组中的微信消息,使用ChatGPT生成回复内容,完成自动回复
  • 规则定制化: 支持私聊中按指定规则触发自动回复,支持对群组设置自动回复白名单
  • 多账号: 支持多微信账号同时运行
  • 图片生成: 支持根据描述生成图片,并自动发送至个人聊天或群聊
  • 上下文记忆: 支持多轮对话记忆,且为每个好友维护独立的上下会话

关注公众号,回复「wechat」关键字,获取 Github 地址:

提前规划好部署路径,按下面三个步骤完成项目部署:

  1. 克隆项目代码
  2. 安装所需核心依赖
  3. 修改配置文件

配置文件的模板在根目录的config-template.json中,需复制该模板创建最终生效的 config.json 文件:

cp config-template.json config.json

# 可根据需要进行自定义修改:
{ 
  "open_ai_api_key": "YOUR API KEY"                           # 填入上面创建的 OpenAI API KEY
  "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训练的大型语言模型, 你乐于回答人们的各种问题。"  # 人格描述
}

运行服务

我测试使用的本地电脑,使用 本地运行 模式,直接在项目根目录下执行:

python3 app.py

终端输出二维码,执行效果如下图:

image-20230207225523305

使用微信进行扫码,当输出 "Start auto replying" 时表示自动回复程序已经成功运行了。扫码登录后,就可以在微信手机端通过配置的关键词触发自动回复了。

image-20230207225835200

运行效果

微信群聊

image-20230207230916146

image-20230207230807460

image-20230207230831463

后端日志

image-20230207230100916

超强人工智能 AI ChatGPT 在等你体验~~

推荐阅读