ChatGPT近期以强大的对话和信息整合能力风靡全网,可以写代码、改论文、讲故事,几乎无所不能,这让人不禁有个大胆的想法,能否用他的对话模型把我们的微信打造成一个智能机器人,可以在与好友对话中给出意想不到的回应,而且再也不用担心女朋友影响我们 打游戏 工作了。

本项目是基于ChatGPT的微信聊天机器人,通过 OpenAI 接口生成对话内容,使用 itchat 实现微信消息的接收和自动回复。

简介

已实现特性

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

Github地址: https://github.com/zhayujie/chatgpt-on-wechat

更新日志

2022.12.19: 引入 itchat-uos 替换 itchat,解决由于不能登录网页微信而无法使用的问题,且解决Python3.9的兼容问题

2022.12.18: 支持根据描述生成图片并发送,openai版本需大于0.25.0

2022.12.17: 原来的方案是从 ChatGPT页面 获取session_token,使用 revChatGPT 直接访问web接口,但随着ChatGPT接入Cloudflare人机验证,这一方案难以在服务器顺利运行。 所以目前使用的方案是调用 OpenAI 官方提供的 API,回复质量上基本接近于ChatGPT的内容,劣势是暂不支持有上下文记忆的对话,优势是稳定性和响应速度较好。

效果

个人聊天

群组聊天

图片生成

快速开始

准备

1. OpenAI账号注册

前往 OpenAI注册页面 创建账号,参考这篇 教程 可以通过虚拟手机号来接收验证码。创建完账号则前往 API管理页面 创建一个 API Key 并保存下来,后面需要在项目中配置这个key。

项目中使用的对话模型是 davinci,计费方式是每1k字 (包含请求和回复) 消耗 $0.02,图片生成是每张消耗 $0.016,账号创建有免费的 $18 额度,使用完可以更换邮箱重新注册。

2.运行环境

支持 Linux、MacOS、Windows 系统(可在Linux服务器上长期运行),同时要求安装有 Python(版本需在 3.7.1~3.9.X 之间,Linux环境建议使用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中,需复制该模板创建最终生效的 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", "@bot"],                      # 私聊时文本需要包含该前缀才能触发机器人回复"single_chat_reply_prefix": "[bot] ",                       # 私聊时自动回复的前缀,用于区分真人"group_chat_prefix": ["@bot"],                              # 群聊时包含该前缀则会触发机器人回复"group_name_white_list": ["ChatGPT测试群", "ChatGPT测试群2"], # 开启自动回复的群名称列表"image_create_prefix": ["画", "看", "找"]                    # 开启图片回复的前缀
}

配置说明:

  • 个人聊天中,需要以 “bot” 或 “@bot” 为开头的内容触发机器人,对应配置中的 single_chat_prefix;机器人回复的内容会以 “[bot]” 作为前缀, 以区分真人,对应的配置为 single_chat_reply_prefix
  • 群组聊天中,群名称需配置在 group_name_white_list 中才能开启群聊自动回复,默认只要被@就会触发机器人自动回复,另外群聊天中只要检测到以 “@bot” 开头的内容,同样会自动回复,这对应配置 group_chat_prefix
  • 对于图像生成,在满足个人或群组触发条件外,还需要额外的关键词,对应配置 image_create_prefix
  • 关于OpenAI对话及图片接口的参数配置(内容自由度、回复字数限制、图片大小等),可以参考 对话接口 和 图像接口 文档直接在 代码 bot\openai\open_ai_bot.py 中进行调整。

运行

1.如果是开发机本地调试,直接在项目根目录下执行:

python3 app.py

终端输出二维码后,使用微信进行扫码,当输出 “Start auto replying” 时表示自动回复程序已经成功运行了(注意:用于登录的微信需要在支付处已完成实名认证)。

2.如果是服务器部署,则使用nohup命令在后台运行:

touch nohup.out                                   # 首次运行需要新建日志文件
nohup python3 app.py & tail -f nohup.out          # 后台运行程序并输出日志

同样在扫码后程序即可成功运行于服务器后台。

链接: https://zhayujie.com/chatgpt-on-wechat.html

基于ChatGPT实现微信聊天机器人相关推荐

  1. 搭建属于自己的基于ChatGPT的微信聊天机器人(方法)

    文章目录 1. GitHub开源项目 2. 前期准备 (1) 获取openAI API key 3. 准备部署环境 (1) 配置代理 (2) 配置python环境 4. 部署 (1) 修改配置文件 ( ...

  2. 部署一个基于ChatGPT的微信聊天机器人以及产生的思考

    文章目录 前言 功能 反响 思考 这篇文章主要展示了基于ChatGPT的微信聊天机器人的效果,以及在部署过程中我产生的一些思考.部署一个这样的机器人的具体方法我过两天会单独写一篇文章. 前言 最近几个 ...

  3. 【Python】uiautomation+openai构建基于chatGPT的微信聊天机器人

    目录 前言 一.uiautomation是什么? 二.openai怎么使用? 三.使用步骤 1.前期准备 2.引入库 3.主程序 4.演示效果 总结 前言 人工ai对话技术最近火热,相信很多人会想到做 ...

  4. 10分钟搭建ChatGPT API微信聊天机器人

    引言:今天看到ChatGPT开放了API,就顺便找了一个开源项目,把微信聊天机器人搭起来了.1. 注册ChatGPT 这个网上都有很多的教程,我这里就不赘述了 2. 获取ChatGPT API Key ...

  5. ChatGPT新玩法来了,微信聊天机器人

    前言 上一篇文章中说了ChatGPT是什么,然后怎么注册使用. 传送门:花了1块钱体验一把最近很火的ChatGPT 但是实际操作下来还是有不少小伙伴跟我一样遇到各种坑. 没有科学上网工具 OpenAI ...

  6. 基于图灵api实现微信聊天机器人

    基于图灵api实现微信聊天机器人 尝试了一下最近很火的聊天机器人,记录下实现过程. 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给 ...

  7. 基于python以及AIUI WebSocket,WeChatPYAPI实现的微信聊天机器人

    基于python以及AIUI WebSocket,WeChatPYAPI实现的微信聊天机器人 做此文的目的首先是学习Markdown的用法哈哈哈哈,其实也是记录自己学习的一个过程. 以后我也会将自己在 ...

  8. Python30行代码实现微信聊天机器人(基于WXPY+百度理解与交互技术UNIT)

    引言: 前几天看到新闻说一个程序员开发了微信聊天机器人陪女朋友聊天,感觉有兴趣,之前听说过WXPY,由于本人Python真的很菜,一直没有动手,受新闻启发开发了一个简单的基于Python微信机器人.有 ...

  9. 基于node.js实现分销类微信聊天机器人

    基于node.js实现分销类微信聊天机器人 文章目录 基于node.js实现分销类微信聊天机器人 前言 一.涉及技术栈 二.实现代码 1.登录模块 2.聊天消息接收事件 总结 git地址 前言 最近遇 ...

最新文章

  1. 乌鲁木齐网络赛J题(最小费用最大流模板)
  2. 编写安装配置DHCP服务脚本
  3. lvm自动扩容到固定分区脚本
  4. WebGL Shader 环境搭建
  5. java导出pdf集合_java实现导出pdf-Go语言中文社区
  6. 【网址收藏】spark on k8s operator github地址
  7. DCMTK:测试dcmiod的代码序列宏实现
  8. Android Studio OkHttp的使用
  9. [JavaScript]JS由来
  10. CF1119H-Triple【FWT】
  11. NWERC 2018——B.Brexit Negotiations
  12. Nginx学习笔记3:Shell脚本检测Nginx服务状态
  13. AtCoder Beginner Contest 136 解题报告
  14. ArcMAP 启动要素构造工具条
  15. HADOOP学习_grep和wordcount的例子
  16. CAD坐标标注中如何标注普通坐标?
  17. 【Mimics】基于心脏ct影像重建3d模型 孔洞修复平滑处理 及 合并导出
  18. sumatrapdf反向搜索功能设置
  19. 单片机课设-中断程序(仿真图,代码全)
  20. oracle常见的经典查询语句(一)

热门文章

  1. 建立自己的图像数据集
  2. 【Vue.JS】纯 Vue.js 制作甘特图
  3. C语言修改dos窗口的大小
  4. IDEA 不同系统中 新建 快捷键 Ctrl+Insert
  5. Visual Odometry Revisited: What Should Be Learnt?(2020.2)
  6. 3D打印开源软件Cura分析(1) 【转】
  7. 微服务之RPC(远程过程调用)的四种方式
  8. 计算机应用基础课程作业2016,2016浙大远程教育计算机应用基础作业
  9. OpenCV之灰度空间变换
  10. 云服务器安装MYSQL