Wechaty + 讯飞星火GPT打造微信机器人

ChatGPT 已经火了一阵了,相信使用ChatGPT还是能够给大家的工作解决一些问题的。如果能直接创建一个微信机器人,辅助自己发消息岂不更爽。今天就将自己实践的教程分享给大家,我们使用wechaty + 讯飞星火GPT来完成这个微信机器人。

在开始之前,先了解一下wechaty,Wechaty 是一款用于构建聊天机器人的开源软件应用程序。它是一种现代会话式 RPA SDK,聊天机器人制造商可以使用它通过几行代码创建机器人,算是目前最方便开发的微信机器人SDK。

Wechaty项目发起比较早了,最快开始通过Hook 网页版微信达到机器人效果。由于18年开始,微信停止了网页版的微信,Wechaty开始拓展Puppet,通过统一开发者接口方便开发,拓展不同Puppet也就是不同代理框架实现微信通信的组合。
在这里插入图片描述

环境准备


node环境 (v16版本以上)

wechaty

**qrcode-terminal(在控制台显示二维码)**

wechaty-puppet-padlocal (ipad协议版)

1.从 github 上 clone 项目

为了方便开发,我们直接使用wechaty-puppet-padlocal 提供的Demo 进行开发。

git clone git@github.com:padlocal/wechaty-puppet-padlocal-demo.git

2.安装项目依赖

cd wechaty-puppet-padlocal-demo
npm --registry https://registry.npm.taobao.org install

这里会自动将puppet-padlocal需要的模块安装

3.VSCode 打开工程,配置Token

由于PadLocal并不免费,所以我们需要取官网(http://pad-local.com/),申请免费的使用token.
在这里插入图片描述

配置好之后,我们先运行一下,看一下基础接口功能能否跑起来
在这里插入图片描述

此时用自己想做机器人的微信号扫码,登录到ipad上,此时就绑定成了机器人。

4.消息发送例子

demo里默认实现了dingdong小Demo,对着机器人微信发送ding,则受到自动回复“dong”,后面我们接入GPT对话,也从这块入手。
在这里插入图片描述
基础小Demo dingdong

5.注册讯飞星火ChatGPT,获得Api token

当前讯飞星火GPT个人账号可以免费领取
在这里插入图片描述

6.开发讯飞GPT消息功能

配置好讯飞大模型的API Key及token

const sendMsg = async (inputVal:string, callback: (data: any) => void) => {
  // 获取请求地址
  let myUrl = await authenticate();

  let socket = new WebSocket(String(myUrl));

  // 监听websocket的各阶段事件 并做相应处理
  socket.addEventListener('open', (event) => {
      console.log('开启连接!!', event);
      // 发送消息
      let params = {
          "header": {
              "app_id": requestObj.APPID,
              "uid": "zhushou"
          },
          "parameter": {
              "chat": {
                  "domain": "general",
                  "temperature": 0.5,
                  "max_tokens": 1024,
              }
          },
          "payload": {
              "message": {
                  // 如果想获取结合上下文的回答,需要开发者每次将历史问答信息一起传给服务端,如下示例
                  // 注意:text里面的所有content内容加一起的tokens需要控制在8192以内,开发者如有较长对话需求,需要适当裁剪历史信息
                  "text": [
                      { "role": "user", "content": "你是谁" }, //# 用户的历史问题
                      { "role": "assistant", "content": "我是AI助手" },  //# AI的历史回答结果
                      // ....... 省略的历史对话
                      { "role": "user", "content": inputVal },  //# 最新的一条问题,如无需上下文,可只传最新一条问题
                  ]
              }
          }
      };
      requestObj.sparkResult = ''
      console.log("发送消息");
      socket.send(JSON.stringify(params))
  })
  socket.addEventListener('message', (event) => {
      let data = JSON.parse(String(event.data))
      console.log('收到消息!!',data);
      requestObj.sparkResult += data.payload.choices.text[0].content
      if (data.header.code !== 0) {
          console.log("出错了", data.header.code, ":", data.header.message);
          // 出错了"手动关闭连接"
          socket.close()
      }
      if (data.header.code === 0) {
          // 对话已经完成
          if (data.payload.choices.text && data.header.status === 2) {
              requestObj.sparkResult += data.payload.choices.text[0].content;
              setTimeout(() => {
                  // "对话完成,手动关闭连接"
                  socket.close()
              }, 1000)
          }
      }
    //   console.log(requestObj.sparkResult);
  })

    socket.addEventListener('close', (event) => {
        console.log('连接关闭!!', event);
        // 对话完成后socket会关闭,将聊天记录换行处理
        // console.log(requestObj.sparkResult);
        callback(requestObj.sparkResult);
    })

    socket.addEventListener('error', (event) => {
        console.log('连接发送错误!!', event);
    })

}

7.将sendMsg函数导出给PadLocal使用

改造dingdongBot函数

export async function dingDongBot(message: Message) {
    if (message.to()?.self() && message.type() == PUPPET.types.Message.Text) {
      await sendMsg(message.text(), (data:string) => {
         message.talker().say(data);
      });
    }
 }

8.重新启动PadLocal服务,登录微信即可完成对话

wechaty的整体设计,还是比较适合开发者使用的,
在这里插入图片描述

如何上面看到在服务终端可以看到GPT自动回复的内容。wechaty的整体设计,还是比方便开发者调用的,

想体验的朋友,加Araon的微信好友,即可与我创建的微信机器人完成对话。

关注公众号《子云之风》,回复“机器人”即可领取Demo源码,日常分享更多小白可以体验学习的黑科技。

<think>好的,我现在需要处理用户关于如何搭建基于AI的微信机器人的问题。首先,用户提到了几个引用,虽然这些引用可能不完全相关,但需要从中提取有用信息。引用1和2提到了Wechaty框架和2025版AI微信机器人的功能,引用3则提供了docker-compose.yml的配置示例,涉及API的设置。 用户的主要需求是详细的搭建教程,所以应该分步骤说明。首先,选择开发框架,比如Wechaty,因为它被引用中提到,而且比较流行。然后,环境准备,包括Node.js和Python,因为很多机器人框架依赖这些。接着,注册AI服务,比如讯飞星火大模型,因为引用3中提到了XUNFEI的配置参数,可能需要用到他们的API。 接下来是安装依赖和配置项目。这里需要确保用户正确安装必要的库,比如wechaty和相关的AI SDK。配置文件部分,引用3中的docker-compose.yml可以作为参考,特别是环境变量的设置,如API密钥和模型参数。然后编写核心代码,处理消息和集成AI回复功能,这部分需要示例代码,可能用JavaScript或Python,但用户示例中的Python代码可能需要调整以适应Wechaty的API。 测试和部署阶段,建议用户先在本地运行,确认功能正常后再使用Docker部署,确保长期运行。优化部分可以包括添加白名单或敏感词过滤,引用3中的GROUP_NAME_WHITE_LIST就是一个例子,可以引用说明。 注意事项方面,微信账号安全很重要,频繁操作可能导致封号,需要提醒用户。另外,AI回复的合规性也要注意,避免不当内容。 生成的相关问题需要覆盖用户可能感兴趣的后续步骤,比如框架对比、防封策略、功能扩展和API选择,这样能帮助用户进一步探索。 需要确保所有技术细节准确,比如Wechaty的安装命令是否正确,API的申请流程是否描述清楚。同时,避免使用用户不可见的格式,保持回答结构清晰,符合用户可见层的要求。最后,检查引用标记是否正确,如引用3中的配置示例是否恰当提及。</think>### 如何搭建基于AI的微信机器人(详细教程) #### 一、选择开发框架 目前主流选择包括 **Wechaty**(开源轻量级框架)和 **ChatGPT-on-WeChat**(集成大语言模型的解决方案): 1. **Wechaty** - 支持多协议(网页版/API等) - 提供JavaScript/Python SDK - 适合定制化需求[^1] 2. **ChatGPT-on-WeChat** - 内置讯飞星火GPT等AI接口 - 支持Docker一键部署 - 提供插件扩展能力[^3] --- #### 二、具体搭建步骤(以ChatGPT-on-WeChat为例) ##### 1. 环境准备 - 服务器:Linux系统(推荐Ubuntu 20.04+) - 安装依赖: ```bash sudo apt-get install docker.io docker-compose ``` ##### 2. 注册AI服务 - 讯飞星火大模型:访问[开放平台](https://www.xfyun.cn/)申请`APP_ID`、`API_KEY`、`API_SECRET` ##### 3. 配置项目 创建`docker-compose.yml`文件(关键参数说明): ```yaml environment: MODEL: 'xunfei' # 指定AI模型 XUNFEI_APP_ID: '你的APPID' XUNFEI_API_KEY: '你的API_KEY' XUNFEI_API_SECRET: '你的API_SECRET' GROUP_NAME_WHITE_LIST: '["允许响应的群名称"]' # 限制生效范围 ``` ##### 4. 启动服务 ```bash docker-compose up -d ``` ##### 5. 登录微信 扫描终端输出的二维码完成微信登陆 --- #### 三、核心功能扩展 ```python # 示例:添加自定义回复逻辑 def handle_message(msg): if "天气" in msg.content: return get_weather(msg.text) elif "新闻" in msg.content: return get_news() ``` --- #### 四、注意事项 1. **账号安全** - 使用小号测试,避免频繁操作触发风控[^2] 2. **合规性** - 需遵守《微信外部链接内容管理规范》 3. **性能优化** - 通过`CONVERSATION_MAX_TOKENS`控制上下文长度[^3] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值