演示&体验:
VX: Cap-011117
介绍:
本项目是基于大模型的智能对话机器人,支持企业微信、微信公众号、飞书、钉钉接入,可选择GPT3.5/GPT4.0/Claude/文心一言/讯飞星火/通义千问/Gemini/LinkAI/ZhipuAI,能处理文本、语音和图片,通过插件访问操作系统和互联网等外部资源,支持基于自有知识库定制企业AI应用
功能:
- 个人聊天中,支持使用关键字触发回复,也可以直接触发
- 群组聊天中,支持在允许的群聊天中使用,艾特回复
- 群组聊天中,支持自己艾特回复自己
- 支持配置新人进群固定欢迎语,不配置则使用随机风格欢迎
- 支持语音识别,文字回复
- 支持语音识别,语音回复(需要配置 wechaty)
- 自定义关键词,触发可画图
- 用户昵称黑名单
- 更多功能可看下面的 docker-compose.yml 配置文件
服务器部署 docker 部署
- 如果没有 key 需要前往 api.spoony.pro 登录创建key也就是令牌(点击查看创建教程)
- 使用 SSH 连接服务器
- 创建docker-compose.yml文件
- 配置文件说明
version: '2.0'
services:
chatgpt-on-wechat:
image: zhayujie/chatgpt-on-wechat
container_name: chatgpt-on-wechat
security_opt:
- seccomp:unconfined
environment:
OPEN_AI_API_KEY: 'sk-xxxxxxxxxxxxxxxxxxxxxxxxx' # 填入在 Chat Key 上面创建的 令牌
MODEL: 'gpt-3.5-turbo' # 这个模型就可以了
open_ai_api_base: 'https://api.spoony.pro/v1' # 固定地址
PROXY: '' # 不用填
SINGLE_CHAT_PREFIX: '["bot", "@bot"]' # 私聊时 触发机器人的关键字 为空则不用触发即可自动回复
SINGLE_CHAT_REPLY_PREFIX: '"[bot] "' # 机器人 回复的前缀 可用于区分真人,可为空
single_chat_reply_suffix: "" # 私聊时自动回复的后缀,\n 可以换行
GROUP_CHAT_PREFIX: '["@bot"]' # 群聊时包含该前缀则会触发机器人回复 艾特也会触发
group_chat_reply_prefix: "" # 群聊时自动回复的前缀
group_chat_reply_suffix: "" # 群聊时自动回复的后缀,\n 可以换行
group_chat_keyword: '[]' # 群聊时包含该关键词则会触发机器人回复
group_at_off: 'False' # 是否关闭群聊时@bot的触发
GROUP_NAME_WHITE_LIST: '["OpenAI"]' # 开启自动回复的群名称列表
group_name_keyword_white_list: '[]' # 开启自动回复的群名称关键词列表
group_chat_in_one_session: '["ChatGPT测试群"]' # 支持会话上下文共享的群名称
nick_name_black_list: '[]' # 用户昵称黑名单
group_welcome_msg: "欢迎进入XXXXXXXXXXX" # 配置新人进群固定欢迎语,不配置则使用随机风格欢迎
trigger_by_self: 'False' # 是否允许机器人触发
IMAGE_CREATE_PREFIX: '["画", "看", "找"]' # 开启图片回复的前缀
text_to_image: "dall-e-2" # 图片生成模型,可选 dall-e-2, dall-e-3
image_proxy: 'True' # 是否需要图片代理,国内访问LinkAI时需要
concurrency_in_session: '1' # 同一会话最多有多少条消息在处理中,大于1可能乱序
image_create_size: "256x256" # 图片大小,可选有 256x256, 512x512, 1024x1024 (dall-e-3默认为1024x1024)
group_chat_exit_group: 'False'
# chatgpt会话参数
EXPIRES_IN_SECONDS: 3600 # 无操作会话的过期时间
CONVERSATION_MAX_TOKENS: 1000 # 支持上下文记忆的最多字符数
# 人格描述
character_desc: "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。"
# chatgpt限流配置
rate_limit_chatgpt: 20 # chatgpt的调用频率限制
rate_limit_dalle: 50 # openai dalle的调用频率限制
# chatgpt api参数 参考https://platform.openai.com/docs/api-reference/chat/create
temperature: 0.9
top_p: 1
frequency_penalty: 0
presence_penalty: 0
timeout: 120 # chatgpt重试超时时间,在这个时间内,将会自动重试
# wework的通用配置
wework_smart: 'True' # 配置wework是否使用已登录的企业微信,False为多开
# 语音设置
SPEECH_RECOGNITION: 'False' # 是否开启语音识别
group_speech_recognition: 'False' # 是否开启群组语音识别
voice_reply_voice: 'False' # 是否使用语音回复语音,需要设置对应语音合成引擎的api key
always_reply_voice: 'False' # 是否一直使用语音回复
voice_to_text: "openai" # 语音识别引擎,支持openai,baidu,google,azure
text_to_voice: "openai" # 语音合成引擎,支持openai,baidu,google,pytts(offline),azure,elevenlabs,edge(online)
text_to_voice_model: "tts-1"
tts_voice_id: "alloy"
# baidu 语音api配置, 使用百度语音识别和语音合成时需要
baidu_app_id: ""
baidu_api_key: ""
baidu_secret_key: ""
# 1536普通话(支持简单的英文识别) 1737英语 1637粤语 1837四川话 1936普通话远场
baidu_dev_pid: "1536"
# azure 语音api配置, 使用azure语音识别和语音合成时需要
azure_voice_api_key: ""
azure_voice_region: "japaneast"
# elevenlabs 语音api配置
xi_api_key: "" #获取ap的方法可以参考https://docs.elevenlabs.io/api-reference/quick-start/authentication
xi_voice_id: "" #ElevenLabs提供了9种英式、美式等英语发音id,分别是“Adam/Antoni/Arnold/Bella/Domi/Elli/Josh/Rachel/Sam”
# 服务时间限制,目前支持itchat
chat_time_module: 'False' # 是否开启服务时间限制
chat_start_time: "00:00" # 服务开始时间
chat_stop_time: "24:00" # 服务结束时间
# 翻译api
translate: "baidu" # 翻译api,支持baidu
# baidu翻译api的配置
baidu_translate_app_id: "" # 百度翻译api的appid
baidu_translate_app_key: "" # 百度翻译api的秘钥
# itchat的配置
hot_reload: 'False' # 是否开启热重载
# wechaty的配置
wechaty_puppet_service_token: "" # wechaty的token
# wechatmp的配置
wechatmp_token: "" # 微信公众平台的Token
wechatmp_port: 8080 # 微信公众平台的端口,需要端口转发到80或443
wechatmp_app_id: "" # 微信公众平台的appID
wechatmp_app_secret: "" # 微信公众平台的appsecret
wechatmp_aes_key: "" # 微信公众平台的EncodingAESKey,加密模式需要
# wechatcom的通用配置
wechatcom_corp_id: "" # 企业微信公司的corpID
# wechatcomapp的配置
wechatcomapp_token: "" # 企业微信app的token
wechatcomapp_port: 9898 # 企业微信app的服务端口,不需要端口转发
wechatcomapp_secret: "" # 企业微信app的secret
wechatcomapp_agent_id: "" # 企业微信app的agent_id
wechatcomapp_aes_key: "" # 企业微信app的aes_key
# 飞书配置
feishu_port: 80 # 飞书bot监听端口
feishu_app_id: "" # 飞书机器人应用APP Id
feishu_app_secret: "" # 飞书机器人APP secret
feishu_token: "" # 飞书 verification token
feishu_bot_name: "" # 飞书机器人的名字
# 钉钉配置
dingtalk_client_id: "" # 钉钉机器人Client ID
dingtalk_client_secret: "" # 钉钉机器人Client Secret
# chatgpt指令自定义触发词
clear_memory_commands: '["#清除记忆"]' # 重置会话指令,必须以#开头
# channel配置
channel_type: "wx" # 通道类型,支持:{wx,wxy,terminal,wechatmp,wechatmp_service,wechatcom_app}
subscribe_msg: "" # 订阅消息, 支持: wechatmp, wechatmp_service, wechatcom_app
debug: 'False' # 是否开启debug模式,开启后会打印更多日志
appdata_dir: "" # 数据目录
# 插件配置
plugin_trigger_prefix: "$" # 规范插件提供聊天相关指令的前缀,建议不要和管理员指令前缀"#"冲突
# 是否使用全局插件配置
USE_GLOBAL_PLUGIN_CONFIG: 'True'
max_media_send_count: 3 # 单次最大发送媒体资源的个数
media_send_interval: 1 # 发送图片的事件间隔,单位秒
# 智谱AI 平台配置
zhipu_ai_api_key: ""
zhipu_ai_api_base: "https://open.bigmodel.cn/api/paas/v4"
# LinkAI平台配置
use_linkai: 'False'
linkai_api_key: ""
linkai_app_code: ""
linkai_api_base: "https://api.link-ai.chat" # linkAI服务地址,若国内无法访问或延迟较高可改为 https://api.link-ai.tech
- 启动容器:在
docker-compose.yml所在目录下执行以下命令启动容器
sudo docker compose up -d
- 扫码登录即可完成
- 如果修改了配置文件 需要关闭服务,重新启动才可以,分别执行以下命令
sudo docker ps # 查看容器是否运行
sudo docker compose down # 停止当前容器服务
sudo docker compose up -d # 启动服务
sudo docker logs -f chatgpt-on-wechat # 获取二维码 扫码登录
windows 部署
(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
(4) 运行:
如果是开发机本地运行,直接在项目根目录下执行:
python3 app.py # windows环境下该命令通常为
python app.py
终端输出二维码后,使用微信进行扫码,当输出“开始自动回复”时表示自动回复程序已经成功运行了(注意:用于登录的微信需要在支付处已完成实名认证)。之后你的账号就成为机器人了,可以在手机端通过配置的关键词触发自动回复(任意好友发送消息给你,或者自己发消息给好友)
如果某项依赖安装失败可注释掉对应的行再继续