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

文章底部可查看演示效果和体验方式

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

功能:

  • 个人聊天中,支持使用关键字触发回复,也可以直接触发
  • 群组聊天中,支持在允许的群聊天中使用,艾特回复
  • 群组聊天中,支持自己艾特回复自己
  • 支持配置新人进群固定欢迎语,不配置则使用随机风格欢迎
  • 支持语音识别,文字回复
  • 支持语音识别,语音回复(需要配置 wechaty)
  • 自定义关键词,触发可画图
  • 用户昵称黑名单
  • 更多功能可看下面的 docker-compose.yml 配置文件

服务器部署 docker 部署

  1. 如果没有 key 需要前往 https://api.spoony.pro 登录创建key也就是令牌(点击查看创建教程
  2. 使用 SSH 连接服务器
  3. 下载docker-compose.yml文件

    wget https://open-1317903499.cos.ap-guangzhou.myqcloud.com/docker-compose.yml
  4. 配置文件说明
    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
  5. 启动容器:在docker-compose.yml所在目录下执行以下命令启动容器
    sudo docker compose up -d
  6. 扫码登录即可完成(遇到问题可以联系QQ:785311186 免费指导)
  7. 如果修改了配置文件 需要关闭服务,重新启动才可以,分别执行以下命令
    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
 

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

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

图片[1]-部署 微信 AI 机器人 chatgpt-on-wechat

演示

© 版权声明
评论 共1条

请登录后发表评论

    暂无评论内容