ChatGPT
近 期 以强大 的 对话和信 息 整合 能力 风靡全 网,可 以写代 码、改 论文、讲故事 ,几乎无所不能 ,这让人 不 禁 有 个大胆 的 想 法 ,能否 用 他 的 对话模型 把 我 们的微 信 打 造成 一个智能机器人,可 以在与 好 友 对话中 给出意想 不 到 的 回 应,而且再 也不用 担心女 朋友 影 响我们打 游 戏工作 了 。
-
多端 部署 :有 多 种部署 方式 可 选择且功能 完 备,目前 已 支持 个人微 信 ,微 信 公 众号和 企 业微信 应用等 部署 方式 -
基 础对话:私 聊及群 聊的消息 智能 回 复,支持 多 轮会话上下 文 记忆,支持 GPT-3.5, GPT-4, claude,文 心 一言 , 讯飞星 火 - 语音识别:
可 识别语音消息 ,通 过文字 或 语音回 复,支持 azure, baidu, google, openai等 多 种语音 模型 - 图片
生成 :支持 图片生成 和 图生图(如照片 修 复),可 选择 Dell-E, stable diffusion, replicate, midjourney模型 - 丰富插件:
支持 个性化 插件扩展,已 实现多角 色 切 换、文字 冒 险、敏感 词过滤、聊天记录总结、文 档总结和对话等 插件 - Tool
工具 :与 操作 系 统和互联网交互 ,支持 最新 信 息 搜索 、数学 计算、天 气和资讯查询、网页总结,基 于 chatgpt-tool-hub 实现 -
知 识库:通 过上传知识库文 件 自 定 义专属 机 器 人 ,可 作 为数字 分身 、领域知 识库、智能 客 服 使用 ,基 于 LinkAI 实现
欢
迎接 入 更 多 应用,参考 Terminal代 码实现接收 和 发送消息 逻辑即 可 接 入 。同 时欢迎 增加 新 的 插件,参考 插件说明文 档。
chatgpt-on-wechat-demo-1019.mp4
Demo made by Visionn
2023.09.26: 插件
增加 文 件 /文章 链接 一键总结和对话的功能,使用 参考 :插件说明
2023.08.08:
接 入 百 度 文 心 一言 模型 ,通 过 插件支持 Midjourney 绘图
2023.06.12:
接 入 LinkAI平台 ,可 在 线创建 领域知 识库,并接入 微 信 、公 众号及企业微信 中 ,打 造 专属客 服 机 器 人 。使用 参考 接 入 文 档。
2023.04.26:
支持 企 业微信 应用号 部署 ,兼 容 插件,并支持 语音图片交互 ,私人 助 理 理想 选择,使用 文 档。(contributed by @lanvent in #944)
2023.04.05:
支持 微 信 公 众号部署 ,兼 容 插件,并支持 语音图片交互 ,使用 文 档。(contributed by @JS00000 in #686)
2023.04.05:
增加 能 让ChatGPT使用 工具 的 tool
插件,使用 文 档。工具 相 关issue可 反 馈至chatgpt-tool-hub。(contributed by @goldfishh in #663)
2023.03.25:
支持 插件化 开发,目前 已 实现多角 色 切 换、文字 冒 险游戏、管理 员指令 、Stable Diffusion等 插件,使用 参考 #578。(contributed by @lanvent in #565)
2023.03.09:
基 于whisper API
(后 续已接 入 更 多 的 语音API
服 务) 实现对微信 语音消息 的 解析 和 回 复,添加 配置 项"speech_recognition":true
即 可 启用,使用 参考 #415。(contributed by wanggang1987 in #385)
2023.02.09: 扫码
登 录存在 账号限 制 风险,请谨慎 使用 ,参考 #58
项目
默 认对话模型 是 openai的 gpt-3.5-turbo,计费方式 是 约每 1000tokens (约750个英文 单词或 500汉字,包含 请求和 回 复)消耗 $0.002,图片生成 是 Dell E模型 ,每 张消耗 $0.016。
项目
Python
。
建 议Python版本 在 3.7.1~3.9.X之 间,推荐3.8版本 ,3.10及以上 版本 在 MacOS可用 ,其他系 统上不 确定能否 正常 运行。
注意 :Docker或 Railway部署 无需安 装 python环境和 下 载源码,可 直接 快 进到下 一 节。
(1)
git clone https://github.com/zhayujie/chatgpt-on-wechat
cd chatgpt-on-wechat/
(2)
能 够使用 itchat
创建机 器 人 ,并具有 文字 交流 功 能 所 需的最小 依 赖集合 。
pip3 install -r requirements.txt
(3)
pip3 install -r requirements-optional.txt
如果
某 项依赖安装 失 败请注 释掉对应的 行 再 继续。
其中tiktoken
python
google
baidu
语音识别需安ffmpeg
,
openai
语音识别ffmpeg
。
azure
语音
pip3 install azure-cognitiveservices-speech
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
"model": "gpt-3.5-turbo", # 模型 名称 , 支持 gpt-3.5-turbo, gpt-3.5-turbo-16k, gpt-4, wenxin, xunfei
"proxy": "", # 代理 客 户端的 ip和 端 口 ,国内 环境开启代理 的 需要 填 写 该项,如 "127.0.0.1:7890"
"single_chat_prefix": ["bot", "@bot"], # 私 聊时文 本 需要 包含 该前缀才能 触 发机器 人 回 复
"single_chat_reply_prefix": "[bot] ", # 私 聊时自 动回复的前 缀,用 于区分 真人
"group_chat_prefix": ["@bot"], # 群 聊时包含 该前缀则会 触 发机器 人 回 复
"group_name_white_list": ["ChatGPT测试群 ", "ChatGPT测试群 2"], # 开启自 动回复的群 名称 列 表
"group_chat_in_one_session": ["ChatGPT测试群 "], # 支持 会 话上下 文 共 享 的 群 名称
"image_create_prefix": ["画 ", "看 ", "找"], # 开启图片回 复的前 缀
"conversation_max_tokens": 1000, # 支持 上下 文 记忆的 最多 字 符 数
"speech_recognition": false, # 是 否 开启语音识别
"group_speech_recognition": false, # 是 否 开启群 组语音 识别
"use_azure_chatgpt": false, # 是 否 使用 Azure ChatGPT service代替 openai ChatGPT service. 当 设置为true时需要 设置 open_ai_api_base,如 https://xxx.openai.azure.com/
"azure_deployment_id": "", # 采 用 Azure ChatGPT时,模型 部署 名称
"azure_api_version": "", # 采 用 Azure ChatGPT时,API版本
"character_desc": "你是ChatGPT, 一 个由OpenAI训练的 大型 语言模型 , 你旨在 回答 并解决人们的任 何 问题,并且可 以使用 多 种语言 与 人 交流 。", # 人格 描述
# 订阅消息 ,公 众号和 企 业微信 channel中 请填写 ,当 被 订阅时会自 动回复,可 使用 特殊 占 位 符 。目前 支持 的 占 位 符 有 {trigger_prefix},在 程 序 中 它会自 动替换成bot的 触 发词。
"subscribe_msg": "感 谢您的 关注!\n这里是 ChatGPT,可 以自由 对话。\n支持 语音对话。\n支持 图片输出,画 字 开头的 消息 将 按要求 创作图片。\n支持 角 色 扮 演 和 文字 冒 险等丰富插件。\n输入{trigger_prefix}#help 查看详细指令 。",
"use_linkai": false, # 是 否 使用 LinkAI接 口 ,默 认关闭,开启后 可 国内 访问,使用 知 识库和 MJ
"linkai_api_key": "", # LinkAI Api Key
"linkai_app_code": "" # LinkAI 应用code
}
1.个人聊天
- 个人聊天
中 ,需要 以 "bot"或 "@bot" 为开头的内容 触 发机器 人 ,对应配置 项single_chat_prefix
(如果不 需要 以前 缀触发可以填写 "single_chat_prefix": [""]
) 机 器 人 回 复的内容 会 以 "[bot] "作 为前缀, 以区分 真人 ,对应的 配置 项为single_chat_reply_prefix
(如果不 需要 前 缀可以填写 "single_chat_reply_prefix": ""
)
2.
群 组聊天 中 ,群 名称 需配置 在 group_name_white_list
中 才能 开启群 聊自动回复。如果想 对所有 群 聊生效 ,可 以直接 填 写 "group_name_white_list": ["ALL_GROUP"]
默 认只要 被 人 @ 就会触 发机器 人 自 动回复;另外群 聊天中 只 要 检测到以 "@bot" 开头的 内容 ,同 样会自 动回复(方便 自己 触 发),这对应配置 项group_chat_prefix
可 选配置 :group_name_keyword_white_list
配置 项支持 模糊 匹 配 群 名称 ,group_chat_keyword
配置 项则支持 模糊 匹 配 群 消息 内容 ,用法 与 上述 两个配置 项相同 。(Contributed by evolay)group_chat_in_one_session
:使 群 聊共享 一个会话上下文,配置 ["ALL_GROUP"]
则作用 于所有 群 聊
3.语音识别
添加 "speech_recognition": true
将 开启语音识别,默 认使用 openai的 whisper模型 识别为文字 ,同 时以文字 回 复,该参数 仅支持 私 聊 (注意 由 于语音 消息 无法匹 配 前 缀,一旦开启将对所有语音自动回复,支持 语音触 发画图);添加 "group_speech_recognition": true
将 开启群 组语音 识别,默 认使用 openai的 whisper模型 识别为文字 ,同 时以文字 回 复,参 数 仅支持 群 聊 (会 匹 配 group_chat_prefix和 group_chat_keyword,支持 语音触 发画图);添加 "voice_reply_voice": true
将 开启语音回 复语音 (同 时作用 于私聊和群 聊),但 是 需要 配置 对应语音合成 平台 的 key,由 于itchat协议的 限 制 ,只 能 发送语音mp3文 件 ,若 使用 wechaty则回复的是 微 信 语音。
4.其他
model
:模型 名称 ,目前 支持 gpt-3.5-turbo
,text-davinci-003
,gpt-4
,gpt-4-32k
,wenxin
,claude
,xunfei
(其中gpt-4 api暂未完全 开放,申 请通过后可 使用 )temperature
,frequency_penalty
,presence_penalty
: Chat API接 口 参 数 ,详情参考 OpenAI官 方 文 档。proxy
:由 于目前 openai
接 口 国内 无法访问,需配置 代理 客 户端的 地 址 ,详情参考 #351- 对于图像
生成 ,在 满足个人或 群 组触发条件 外 ,还需要 额外的 关键词前缀来触 发,对应配置 image_create_prefix
- 关于OpenAI对话及图
片 接 口 的 参 数 配置 (内容 自由 度 、回 复字数 限 制 、图片大小 等 ),可 以参考 对话接 口 和 图像接 口 文 档,在 config.py
中 检查哪些参 数 在 本 项目中 是 可 配置 的 。 conversation_max_tokens
:表示 能 够记忆的上下 文 最大 字数 (一问一答为一组对话,如果累 积的对话字数 超 出 限 制 ,就会优先移 除 最早 的 一 组对话)rate_limit_chatgpt
,rate_limit_dalle
:每 分 钟最高 问答速 率 、画 图速率 ,超 速 后 排 队按序 处理。clear_memory_commands
: 对话内 指令 ,主 动清空前 文 记忆,字 符 串 数 组可自 定 义指令 别名。hot_reload
:程 序 退出 后 ,暂存微 信 扫码状 态,默 认关闭。character_desc
配置 中 保存 着 你对机 器 人 说的一 段 话,他 会 记住这段话并作 为他的 设定,你可以为他 定 制 任 何人 格 (关于会 话上下 文 的 更 多 内容 参考 该 issue)subscribe_msg
:订阅消息 ,公 众号和 企 业微信 channel中 请填写 ,当 被 订阅时会自 动回复,可 使用 特殊 占 位 符 。目前 支持 的 占 位 符 有 {trigger_prefix},在 程 序 中 它会自 动替换成bot的 触 发词。
5.LinkAI
use_linkai
:是 否 使用 LinkAI接 口 ,开启后 可 国内 访问,使用 知 识库和 Midjourney
绘画,参考 文 档linkai_api_key
: LinkAI Api Key,可 在 控 制 台 创建linkai_app_code
: LinkAI 应用code,选填
config.py
如果
python3 app.py # windows环境下 该命令 通常 为 python app.py
终端输出
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
多 账号支持 :将 项目复制多 份,分 别启动程序 ,用 不同 账号扫码登 录即可 实现同 时运行 。
特殊 指令 :用 户向机 器 人 发送 #reset即 可 清 空 该用户的上下 文 记忆。
使用 docker部署 无需下 载源码和安 装 依 赖,只 需要 获取 docker-compose.yml配置 文 件 并启动容器 即 可 。
前提 是 需要 安 装 好 docker
及docker-compose
,安 装 成功 的 表 现是执行docker -v
和 docker-compose version
(或 docker compose version)可 以查看 到 版本 号 ,可 前 往 docker官 网 进行下 载。
wget https://open-1317903499.cos.ap-guangzhou.myqcloud.com/docker-compose.yml
docker-compose.yml
OPEN_AI_API_KEY
GROUP_NAME_WHITE_LIST
docker-compose.yml
sudo docker compose up -d
运行 sudo docker ps
- 如果
docker-compose
是 1.X版本 则需要 执行sudo docker-compose up -d
来 启动容器 - 该
命令 会 自 动去 docker hub拉 取 latest版本 的 镜像,latest 镜像会 在 每次 项目 release新 的 版本 时生成
sudo docker logs -f chatgpt-on-wechat
如果config.json
,docker-compose.yml
docker-compose.yml
chatgpt-on-wechat
volumes
volumes:
- ./config.json:/app/plugins/config.json
Railway
每月 提供 5刀 和 最多 500小 时的免 费额度 。 (07.11更新 :目前 大 部分 账号已 无法免 费部署 )
- 进入 Railway
点 击Deploy Now
按钮。- 设置环境变量
来 重 载程序 运行的 参 数 ,例 如open_ai_api_key
,character_desc
。
FAQs: https://github.com/zhayujie/chatgpt-on-wechat/wiki/FAQs
欢迎