聊天机器人(二):chatgpt-on-wechat与星火大模型API搭建微信聊天机器人
本文最后更新于 204 天前,其中的信息可能已经有所发展或是发生改变。

搭建个人聊天机器人:结合chatgpt-on-wechat与星火大模型API

在追求技术创新的时代,人工智能已经成为我们生活中不可或缺的一部分。之前,我们尝试通过QQ平台利用GtToken搭建了聊天机器人,尽管功能丰富,但GtToken易过期的问题仍然是一个困扰。如今,我探索到了一个新的项目——zhayujie/chatgpt-on-wechat,它不仅能通过微信公众号接入强大的星火大模型API,还允许我们免费试用,稳定性也更胜一筹。

1. 准备工作

1.1 环境配置

  • 服务器选择:选择一个性能稳定的云服务器,如阿里云或腾讯云等。
  • 系统安装:安装Linux操作系统,推荐使用Ubuntu或CentOS。
  • 软件依赖:确保服务器上安装了Docker和Docker Compose。

1.2 项目地址

chatgpt-on-wechat项目:zhayujie/chatgpt-on-wechat: 基于大模型搭建的聊天机器人,同时支持 微信公众号、企业微信应用、飞书、钉钉 等接入,可选择GPT3.5/GPT-4o/GPT4.0/ Claude/文心一言/讯飞星火/通义千问/ Gemini/GLM-4/Claude/Kimi/LinkAI,能处理文本、语音和图片,访问操作系统和互联网,支持基于自有知识库进行定制企业智能客服。 (github.com)

星火大模型:讯飞开放平台-以语音交互为核心的人工智能开放平台 (xfyun.cn)

企业微信:https://mp.weixin.qq.com/

1.3获取必要的API密钥

星火大模型API:申请并获取星火大模型的API接入权限。

项目默认使用 OpenAI接口 进行对话,项目默认支持OpenAI接口,然而由于其费用和代理配置上的不便,我们转向使用星火大模型API。项目同时也支持文心、讯飞、GPT-3、GPT-4 等模型,所以这里选择使用星火大模型的API。

(1)首次使用的用户会看到免费试用的选项。由于我已经使用过API,所以显示的是在线调试界面。

image-20240602192812444

完成个人认证后,你可以免费领取200万Tokens,足够长期使用。接下来需要创建一个应用并将套餐分配给该应用以便使用。

image-20240602193158868

完成应用信息填写后,点击提交可创建应用,然后返回平台首页。

image-20240602193306168

点击创建的应用查看APPID、APISecret和APIKey,这些信息将用于配置API。

image-20240602193549063

微信公众号:注册并认证微信公众号

需要前往 微信公众平台 注册一个公众号,项目支持的公众号类型有两种,可根据你的需求进行选择:

类型 要求 特点
个人号 个人可申请 在收到消息时会回复用户一条消息,回复生成后需要用户主动发消息获取
企业号 企业可申请,同时需要通过微信认证开通客服接口 回复生成后可主动推送给用户

根据个人或企业的需求,我们可以选择合适的公众号类型进行注册。对于个人来说,订阅号是个不错的选择,尽管其交互能力有限;若是企业,则可以选择服务号并通过认证来获得更丰富的功能。

2. 部署zhayujie/chatgpt-on-wechat

2.1 chatgpt-on-wechat项目

项目作者提供了四种安装方式:

运行方式 需要的资源 优势 劣势
Docker部署 服务器 + docker环境 不用关心python环境和依赖 插件配置稍麻烦
本地运行 个人机器 + 本地代理 + python环境 方便本地代码调试 不适合长时间稳定运行
服务器部署 服务器 + python环境 方便配置和源码修改、稳定运行 需要简单的linux基础
Railway部署 一个超过半年的github账号 一键部署 免费额度有限,插件等高级功能使用不便

我这里选择使用服务器 + docker进行部署,配置相对简单方便。

2.2 配置Docker Compose文件

采用Docker部署的方式,我们编辑docker-compose.yml文件,填入必要的API密钥和微信公众号信息。通过简单的几个命令,即可轻松启动容器并完成配置。编辑docker-compose.yml文件,修改或添加所需的配置,如 OPEN_AI_API_KEYGROUP_NAME_WHITE_LIST 等必填配置,其他配置参考 配置说明。这里我设置了微信公众号信息和星火大模型API密钥。

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: 'YOUR API KEY'
      MODEL: 'xunfei'
      XUNFEI_APP_ID: 'xxxx'#前面获取的APPID,APISecret和APIKey
      XUNFEI_API_KEY: 'xxxxx'
      XUNFEI_API_SECRET: 'xxxxxx'
      PROXY: ''
      SINGLE_CHAT_PREFIX: '[""]'
      SINGLE_CHAT_REPLY_PREFIX: " "
      GROUP_CHAT_PREFIX: '["@bot"]'
      GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
      IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
      CONVERSATION_MAX_TOKENS: 1000
      SPEECH_RECOGNITION: 'False'
      CHARACTER_DESC: '你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
      EXPIRES_IN_SECONDS: 3600
      USE_GLOBAL_PLUGIN_CONFIG: 'True'
      USE_LINKAI: 'False'
      LINKAI_API_KEY: ''
      LINKAI_APP_CODE: ''
     # wechatmp的配置
      channel_type: "wechatmp" #选择使用微信公众号
      wechatmp_token: 'xxxxx' # 微信公众平台的Token
      wechatmp_port: 443  # 微信公众平台的端口需要端口转发到80或443
      wechatmp_app_id: 'xxxxxx'  # 微信公众平台的appID
      wechatmp_app_secret: 'xxxxxxx'  # 微信公众平台的appsecret
      wechatmp_aes_key: 'xxxxxxx'  # 微信公众平台的EncodingAESKey,加密模式需要 
    ports:
      - "18443:443"
    volumes:
      - ./config.json:/app/plugins/config.json

我这里选择将容器的443端口映射到服务器18443端口,后续使用nginx将域名反代到服务器的18443,实现外网通过域名访问容器443端口。同时,将配置文件config.json映射到本地,方便后续对配置进行更改,我这里也给出我的配置文件作为参考:

{
  "channel_type": "wechatmp",

  "wechatmp_token": xxxxx" # 微信公众平台的Token
  "wechatmp_port": 443  # 微信公众平台的端口需要端口转发到80或443
  "wechatmp_app_id": "xxxxxx"  # 微信公众平台的appID
  "wechatmp_app_secret": "xxxxxx"  # 微信公众平台的appsecret
  "wechatmp_aes_key": "xxxxxxxx"  # 微信公众平台的EncodingAESKey,加密模式需要    
  "model": "xunfei",
  "xunfei_app_id":"xxxxxxxx", 
  "xunfei_api_key":"xxxxxxx", 
  "xunfei_api_secret":"xxxxxxx",
  "open_ai_api_key": "YOUR API KEY",
  "claude_api_key": "YOUR API KEY",
  "text_to_image": "dall-e-2",
  "voice_to_text": "openai",
  "text_to_voice": "openai",
  "proxy": "",
  "hot_reload": false,
  "single_chat_prefix": [
    ""
  ],
  "single_chat_reply_prefix": "",
  "group_chat_prefix": [
    "@bot"
  ],
  "group_name_white_list": [
    "ChatGPT测试群",
    "ChatGPT测试群2"
  ],
  "image_create_prefix": [
    "画"
  ],
  "speech_recognition": true,
  "group_speech_recognition": false,
  "voice_reply_voice": false,
  "conversation_max_tokens": 2500,
  "expires_in_seconds": 3600,
  "character_desc": "你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。",
  "temperature": 0.7,
  "subscribe_msg": "感谢您的关注!\n这里是AI智能助手,可以自由对话。\n支持语音对话。\n支持图片输入。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持tool、角色扮演和文字冒险等丰富的插件。\n输入{trigger_prefix}#help 查看详细指令。",
  "use_linkai": false,
  "linkai_api_key": "",
  "linkai_app_code": ""
}

2.3 启动容器

docker-compose up -d

为了让外部网络能够访问我们的聊天机器人,我采用了Nginx反向代理,并将一个域名指向了服务器的18443端口,这样用户便可通过HTTPS协议安全地与机器人交互。因为后续接入微信公众号平台的URL必须是HTTP/HTTPS协议,所以无法使用除80/443以外的端口。我这里选择使用nginx进行反代,首先将一个域名例如wechat.test.com解析到云服务器,然后使用nginx将wechat.test.com转发到服务器的18443端口,同时配置SSL证书,实现https协议访问云服务器的18443端口。我这里直接使用宝塔面板进行配置。

image-20240602195558538

2.4 接入微信公众号平台

docker compose.yml中的配置需要和 微信公众号后台 中的保持一致,进入页面后,在左侧菜单选择 "设置与开发 - 基本配置 - 服务器配置",按下图进行配置:

image-20240602195813765

配置的流程如下:

  1. 在公众平台启用开发者密码 (对应配置 wechatmp_app_secret),并将服务器ip填入白名单中;

  2. 按上图填写 config.json 中与公众号相关的配置,要与公众号后台的配置一致;

  3. 在启动程序后会监听443端口;

  4. 在公众号后台启用服务器配置并提交,如果保存成功则表示已经成功配置。注意 "服务器地址(URL)" 这一项需要配置为 http或https://{HOST}/wx 的格式,其中 {HOST} 可以是服务器的ip或域名。

  5. 在完成配置后,可以到docker的后台日志查看是否成功接入,当日志中显示如下内容,则表示聊天机器人已成功接入公众号。

    image-20240602200221433

3. 使用和测试

可以看到,由于受订阅号限制,回复内容较短的情况下 (15s内),可以立即完成回复,但耗时较长的回复则会先回复一句 "正在思考中",后续需要用户输入任意文字主动获取答案,而服务号则可以通过客服接口解决这一问题。

image-20240602200508352

其他问题

  1. 语音识别:可利用微信自带的语音识别功能,提供语音输入能力。需要在公众号管理页面的 "设置与开发 -> 接口权限" 页面开启 "接收语音识别结果"
  2. 语音回复:利用项目中的语音生成能力,项目作者推荐使用 azure 语音接口

5. 结语

通过上述步骤,你不仅能够成功搭建一个基于zhayujie/chatgpt-on-wechat的微信聊天机器人,还能通过实际操作加深对Docker、微信公众平台和AI API的理解。希望本指南能帮助你顺利搭建起属于自己的聊天机器人。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇