選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
Saboteur7 7090722565
Merge branch 'master' into master
5ヶ月前
.github fix: railway fork does not need action 11ヶ月前
bot Merge branch 'master' into master 5ヶ月前
bridge Merge branch 'master' into master 5ヶ月前
channel fix terminal channel 5ヶ月前
common Merge branch 'master' into master 5ヶ月前
docker dockerfile fallback debian11,fix azure cognitiveservices speech error 1年前
docs docs: update readme 6ヶ月前
lib/itchat Create LICENSE 11ヶ月前
plugins fix 5ヶ月前
scripts formatting code 1年前
translate fix: env vars type error (#1127) 1年前
voice docs: xunfei voice comment 5ヶ月前
.flake8 style(linting): increase max-line-length to 176 1年前
.gitignore feat: channel client 10ヶ月前
.pre-commit-config.yaml fix: missing lib in banwords 1年前
Dockerfile docker: add Dockerfile 1年前
LICENSE docs: update readme.md 1年前
README.md update readme 5ヶ月前
app.py feat: optimize consumer thread pool 9ヶ月前
config-template.json feat: support mj client config 6ヶ月前
config.py Merge branch 'master' into master 5ヶ月前
nixpacks.toml make railway happy 1年前
pyproject.toml style(linting): increase max-line-length to 176 1年前
requirements-optional.txt Merge pull request #1851 from wayshall/qwen-dashscope 7ヶ月前
requirements.txt fix: update client sdk version 6ヶ月前

README.md

简介

chatgpt-on-wechat(简称CoW)项目是基于大模型的智能对话机器人,支持微信公众号、企业微信应用、飞书、钉钉接入,可选择GPT3.5/GPT4.0/Claude/Gemini/LinkAI/ChatGLM/KIMI/文心一言/讯飞星火/通义千问/LinkAI,能处理文本、语音和图片,通过插件访问操作系统和互联网等外部资源,支持基于自有知识库定制企业AI应用。

最新版本支持的功能如下:

  • 多端部署: 有多种部署方式可选择且功能完备,目前已支持微信公众号、企业微信应用、飞书、钉钉等部署方式
  • 基础对话: 私聊及群聊的消息智能回复,支持多轮会话上下文记忆,支持 GPT-3.5, GPT-4, GPT-4o, Claude-3, Gemini, 文心一言, 讯飞星火, 通义千问,ChatGLM-4,Kimi(月之暗面)
  • 语音能力: 可识别语音消息,通过文字或语音回复,支持 azure, baidu, google, openai(whisper/tts) 等多种语音模型
  • 图像能力: 支持图片生成、图片识别、图生图(如照片修复),可选择 Dall-E-3, stable diffusion, replicate, midjourney, CogView-3, vision模型
  • 丰富插件: 支持个性化插件扩展,已实现多角色切换、文字冒险、敏感词过滤、聊天记录总结、文档总结和对话、联网搜索等插件
  • 知识库: 通过上传知识库文件自定义专属机器人,可作为数字分身、智能客服、私域助手使用,基于 LinkAI 实现

声明

  1. 本项目遵循 MIT开源协议,仅用于技术研究和学习,使用本项目时需遵守所在地法律法规、相关政策以及企业章程,禁止用于任何违法或侵犯他人权益的行为
  2. 境内使用该项目时,请使用国内厂商的大模型服务,并进行必要的内容安全审核及过滤
  3. 本项目主要接入协同办公平台,推荐使用公众号、企微自建应用、钉钉、飞书等接入通道,其他通道为历史产物已不维护
  4. 任何个人、团队和企业,无论以何种方式使用该项目、对何对象提供服务,所产生的一切后果,本项目均不承担任何责任

社区

添加小助手微信加入开源项目交流群:


企业服务

LinkAI 是面向企业和开发者的一站式AI应用平台,聚合多模态大模型、知识库、Agent 插件、工作流等能力,支持一键接入主流平台并进行管理,支持SaaS、私有化部署多种模式。

LinkAI 目前 已在私域运营、智能客服、企业效率助手等场景积累了丰富的 AI 解决方案, 在电商、文教、健康、新消费、科技制造等各行业沉淀了大模型落地应用的最佳实践,致力于帮助更多企业和开发者拥抱 AI 生产力。

企业服务和产品咨询 可联系产品顾问:


🏷 更新日志

2024.06.04: 1.6.6版本1.6.5版本,gpt-4o模型、钉钉流式卡片、讯飞语音识别/合成

2024.04.26: 1.6.0版本,新增 Kimi 接入、gpt-4-turbo版本升级、文件总结和语音识别问题修复

2024.03.26: 1.5.8版本1.5.7版本,新增 GLM-4、Claude-3 模型,edge-tts 语音支持

2024.01.26: 1.5.6版本1.5.5版本,钉钉接入,tool插件升级,4-turbo模型更新

2023.11.11: 1.5.3版本1.5.4版本,新增通义千问模型、Google Gemini

2023.11.10: 1.5.2版本,新增飞书通道、图像识别对话、黑名单配置

2023.11.10: 1.5.0版本,新增 gpt-4-turbo, dall-e-3, tts 模型接入,完善图像理解&生成、语音识别&生成的多模态能力

2023.10.16: 支持通过意图识别使用LinkAI联网搜索、数学计算、网页访问等插件,参考插件文档

2023.09.26: 插件增加 文件/文章链接 一键总结和对话的功能,使用参考:插件说明

2023.08.08: 接入百度文心一言模型,通过 插件 支持 Midjourney 绘图

2023.06.12: 接入 LinkAI 平台,可在线创建领域知识库,打造专属客服机器人。使用参考 接入文档

更早更新日志查看: 归档日志


🚀 快速开始

快速开始详细文档:项目搭建文档

一、准备

1. 账号注册

项目默认使用OpenAI接口,需前往 OpenAI注册页面 创建账号,创建完账号则前往 API管理页面 创建一个 API Key 并保存下来,后面需要在项目中配置这个key。接口需要海外网络访问及绑定信用卡支付。

默认对话模型是 openai 的 gpt-3.5-turbo,计费方式是约每 1000tokens (约750个英文单词 或 500汉字,包含请求和回复) 消耗 $0.002,图片生成是Dell E模型,每张消耗 $0.016。

项目同时也支持使用 LinkAI 接口,无需代理,可使用 文心、讯飞、GPT-3、GPT-4 等模型,支持 定制化知识库、联网搜索、MJ绘图、文档总结和对话等能力。修改配置即可一键切换,参考 接入文档

2.运行环境

支持 Linux、MacOS、Windows 系统(可在Linux服务器上长期运行),同时需安装 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/

注: 如遇到网络问题可选择国内镜像 https://gitee.com/zhayujie/chatgpt-on-wechat

(2) 安装核心依赖 (必选):

能够使用itchat创建机器人,并具有文字交流功能所需的最小依赖集合。

pip3 install -r requirements.txt

(3) 拓展依赖 (可选,建议安装):

pip3 install -r requirements-optional.txt

如果某项依赖安装失败可注释掉对应的行再继续

二、配置

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

  cp config-template.json config.json

然后在config.json中填入配置,以下是对默认配置的说明,可根据需要进行自定义修改(注意实际使用时请去掉注释,保证JSON格式的完整):

# config.json文件内容示例
{
  "model": "gpt-3.5-turbo",                                   # 模型名称, 支持 gpt-3.5-turbo, gpt-4, gpt-4-turbo, wenxin, xunfei, glm-4, claude-3-haiku, moonshot
  "open_ai_api_key": "YOUR API KEY",                          # 如果使用openAI模型则填入上面创建的 OpenAI API KEY
  "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,                          # 是否开启群组语音识别
  "voice_reply_voice": false,                                 # 是否使用语音回复语音
  "character_desc": "你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。",  # 人格描述
  # 订阅消息,公众号和企业微信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 将开启语音回复语音(同时作用于私聊和群聊)

4.其他配置

  • model: 模型名称,目前支持 gpt-3.5-turbo, gpt-4o, gpt-4-turbo, gpt-4, wenxin , claude , gemini, glm-4, xunfei, moonshot等,全部模型名称参考common/const.py文件
  • temperature,frequency_penalty,presence_penalty: Chat API接口参数,详情参考OpenAI官方文档。
  • proxy:由于目前 openai 接口国内无法访问,需配置代理客户端的地址,详情参考 #351
  • 对于图像生成,在满足个人或群组触发条件外,还需要额外的关键词前缀来触发,对应配置 image_create_prefix
  • 关于OpenAI对话及图片接口的参数配置(内容自由度、回复字数限制、图片大小等),可以参考 对话接口图像接口 文档,在config.py中检查哪些参数在本项目中是可配置的。
  • conversation_max_tokens:表示能够记忆的上下文最大字数(一问一答为一组对话,如果累积的对话字数超出限制,就会优先移除最早的一组对话)
  • rate_limit_chatgptrate_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中列出。

三、运行

1.本地运行

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

python3 app.py                                    # windows环境下该命令通常为 python app.py

终端输出二维码后,进行扫码登录,当输出 “Start auto replying” 时表示自动回复程序已经成功运行了(注意:用于登录的账号需要在支付处已完成实名认证)。扫码登录后你的账号就成为机器人了,可以在手机端通过配置的关键词触发自动回复 (任意好友发送消息给你,或是自己发消息给好友),参考#142

2.服务器部署

使用nohup命令在后台运行程序:

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 即可清空该用户的上下文记忆。

3.Docker部署

使用docker部署无需下载源码和安装依赖,只需要获取 docker-compose.yml 配置文件并启动容器即可。

前提是需要安装好 dockerdocker-compose,安装成功的表现是执行 docker -vdocker-compose version (或 docker compose version) 可以查看到版本号,可前往 docker官网 进行下载。

(1) 下载 docker-compose.yml 文件

wget https://open-1317903499.cos.ap-guangzhou.myqcloud.com/docker-compose.yml

下载完成后打开 docker-compose.yml 修改所需配置,如 OPEN_AI_API_KEYGROUP_NAME_WHITE_LIST 等。

(2) 启动容器

docker-compose.yml 所在目录下执行以下命令启动容器:

sudo docker compose up -d

运行 sudo docker ps 能查看到 NAMES 为 chatgpt-on-wechat 的容器即表示运行成功。

注意:

  • 如果 docker-compose 是 1.X 版本 则需要执行 sudo docker-compose up -d 来启动容器
  • 该命令会自动去 docker hub 拉取 latest 版本的镜像,latest 镜像会在每次项目 release 新的版本时生成

最后运行以下命令可查看容器运行日志,扫描日志中的二维码即可完成登录:

sudo docker logs -f chatgpt-on-wechat

(3) 插件使用

如果需要在docker容器中修改插件配置,可通过挂载的方式完成,将 插件配置文件 重命名为 config.json,放置于 docker-compose.yml 相同目录下,并在 docker-compose.yml 中的 chatgpt-on-wechat 部分下添加 volumes 映射:

volumes:
  - ./config.json:/app/plugins/config.json

4. Railway部署

Railway 每月提供5刀和最多500小时的免费额度。 (07.11更新: 目前大部分账号已无法免费部署)

  1. 进入 Railway
  2. 点击 Deploy Now 按钮。
  3. 设置环境变量来重载程序运行的参数,例如open_ai_api_key, character_desc

一键部署:

Deploy on Railway


🔎 常见问题

FAQs: https://github.com/zhayujie/chatgpt-on-wechat/wiki/FAQs

或直接在线咨询 项目小助手 (语料持续完善中,回复仅供参考)

🛠️ 开发

欢迎接入更多应用,参考 Terminal代码 实现接收和发送消息逻辑即可接入。 同时欢迎增加新的插件,参考 插件说明文档

✉ 联系

欢迎提交PR、Issues,以及Star支持一下。程序运行遇到问题可以查看 常见问题列表 ,其次前往 Issues 中搜索。个人开发者可加入开源交流群参与更多讨论,企业用户可联系产品顾问咨询。

🌟 贡献者

cow contributors