【AI大模型】:结合wxauto实现智能微信聊天机器人

【AI大模型】:结合wxauto实现智能微信聊天机器人

文章目录

在这里插入图片描述

🧐一、wxauto简介

wxauto 是一个基于 UIAutomation 的开源 Python 微信自动化库。Python 初学者也可以简单上手自动化微信操作。目前已实现很多日常的微信操作的自动化,如自动发送消息、自动添加好友、自动回复、自动获取聊天记录、图片、文件等功能,后续还会根据反馈更新更多功能。

wxauto的github链接https://github.com/cluic/wxauto【点击跳转】

🎯二、wxauto的主要功能

  • 消息发送:支持发送文字、图片、文件、@群好友、引用消息等功能
  • 聊天记录:可获取好友的聊天记录内容
  • 监听消息:实时获取指定监听好友(群)的新消息
  • 其他定制功能:根据需求定制自动化流程,满足各种特殊需求。

📦三、wxauto的安装与使用

1. wxauto的安装

安装 wxauto 非常简单,和其他第三方库一样在命令行输入以下命令即可:

pip install wxauto
pip install wxauto -i https://pypi.tuna.tsinghua.edu.cn/simple
换源安装

注意:目前wxauto只支持 Windows 10|11|Server2016+ 系统,苹果等电脑的系统并不支持,Python环境要求 Python:3.7+(不支持3.7.6和3.8.1)注意!!!Python版本不支持3.7.6和3.8.1微信版本默认分支为微信3.9.11.17版本,使用前请先检查自己电脑微信是否为该版本,版本不同可能由于UI问题导致某些功能无法正常调用。

注意:如果你的微信版本可以用的话,也不需要过多纠结这个。

2. wxauto的简单使用

注意:在运行代码前一定要确保PC微信客户端已经登陆。
【示例1】:基于wxauto发送消息
使用场景:可以重复发送一样的内容达到消息轰炸

from wxauto import* wx = WeChat() content ='hello world' who ='文件传输助手'for i inrange(15): wx.SendMsg(msg=content, who=who)
在这里插入图片描述

附带@好友的消息

from wxauto import* wx = WeChat() content ='hello world' who ='文件传输助手' name ='文件传输助手' wx.SendMsg(msg=content, who=who, at=name)# 要 @ 的人
在这里插入图片描述

发送图片/视频/文件消息SendFiles
参数说明:

参数名类型默认值说明
filepathstr 或 list/指定文件路径,单个文件str,多个文件list
whostrNone要发送给谁,默认则发送给当前打开的页面
from wxauto import* wx = WeChat() content ='hello world' who ='文件传输助手'file=[r'D:\软件\图片\荒.png',r'D:\C语言学习资料\高质量的C-C++编程.pdf'] wx.SendFiles(filepath=file, who=who)
在这里插入图片描述

聊天窗口消息获取

默认为当前聊天窗口

from wxauto import* wx = WeChat()# 获取当前聊天窗口消息 msgs = wx.GetAllMessage()# 输出消息内容for msg in msgs:if msg.type=='sys':print(f'【系统消息】{msg.content}')elif msg.type=='friend': sender = msg.sender_remark # 获取备注名print(f'{sender.rjust(20)}:{msg.content}')elif msg.type=='self':print(f'{msg.sender.ljust(20)}:{msg.content}')elif msg.type=='time':print(f'\n【时间消息】{msg.time}')elif msg.type=='recall':print(f'【撤回消息】{msg.content}')
在这里插入图片描述


另外LoadMoreMessage方法用于加载更多历史消息,配合GetAllMessage方法使用,实现获取更多历史消息。
注意:LoadMoreMessage方法加载更多历史消息时,需要保证当前聊天窗口有历史消息,否则没有效果,即触发一次“查看更多消息”。

from wxauto import WeChat wx = WeChat()# 加载更多历史消息 wx.LoadMoreMessage()# 获取当前聊天窗口消息 msgs = wx.GetAllMessage()# 消息处理逻辑代码。。。

微信添加好友
AddNewFriend方法用于发起好友申请。
注意:微信有一定的限制,如果频繁添加好友,可能会被限制添加好友的权限,请谨慎使用,切勿滥用!!!

from wxauto import* wx = WeChat() keywords ='s15576806087'# 对方的微信号、手机号、QQ号 addmsg ='你好,我是xxxx'# 添加好友的消息 remark ='备注名字'# 备注名,没有则不用设置 tags =['朋友','同事']# 标签列表# 发起好友申请 wx.AddNewFriend(keywords, addmsg=addmsg, remark=remark, tags=tags)
在这里插入图片描述

获取好友信息

from wxauto import WeChat wx = WeChat() friend_infos = wx.GetAllFriends()# 获取好友信息print(friend_infos)
3. wxauto的消息对象

这个很重要,下面结合大模型时会用到以下的消息对象。
好友消息

在这里插入图片描述


支持属性

属性名类型说明
typestr消息类型,固定为friend
contentstr消息内容
senderstr发送者
sender_remarkstr发送者备注名
infolist原始消息信息,包含了消息的所有信息
controluiautomation.Control该消息的uiautomation控件
idstr消息id
msgs = wx.GetAllMessage()for msg in msgs:if msg.type=='friend':# 消息类型 sender = msg.sender_remark # 获取备注名print(f'{sender}:{msg.content}')
在这里插入图片描述

自己的消息

在这里插入图片描述


支持属性

属性名类型说明
typestr消息类型,固定为self
contentstr消息内容
senderstr发送者
sender_remarkstr发送者备注名
infolist原始消息信息,包含了消息的所有信息
controluiautomation.Control该消息的uiautomation控件
idstr消息id
msgs = wx.GetAllMessage()for msg in msgs:if msg.type=='self':# 消息类型print(f'{msg.sender}:{msg.content}')
在这里插入图片描述

💻四、wxauto结合大模型实现简单的聊天机器人

这里选用的是百度的千帆大模型,首先登陆进去之后点击模型广场,随便选一个免费的就行。

在这里插入图片描述


选择好模型之后,点进去,点击那个开通付费【免费的,不要钱,放心点击】,提交订单就开通成功啦。

在这里插入图片描述
在这里插入图片描述


返回到主页,点击应用接入,记住这里的API KeySecret Key,点击创建应用。

在这里插入图片描述


填写好应用名称和应用描述(随便填一下就好了),点击确定。

在这里插入图片描述


返回主页,点击模型广场,点击你之前选择的模型,点击API文档。

在这里插入图片描述


往下翻找到对应的请求示例的Python代码,复制那段代码。

在这里插入图片描述


复制好代码后,将你对应的API KeySecret Key给添加上去。

在这里插入图片描述


运行一下代码可以看到,result就是大模型根据我们的问题给出的结果,现在我们只需要将content改成微信中好友发送过来的消息作为问题给大模型,然后将大模型给出的结果中的result提取出来作为内容发送给好友,这样,一个简单的微信聊天机器人就完成了。

在这里插入图片描述

🎧五、完整代码

import requests import json from wxauto import WeChat defget_access_token():""" 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key """ url ="https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]" payload = json.dumps("") headers ={'Content-Type':'application/json','Accept':'application/json'} response = requests.request("POST", url, headers=headers, data=payload)return response.json().get("access_token")defmain(wx1, msg1): url ="https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k?access_token="+ get_access_token() payload = json.dumps({"messages":[{"role":"user","content": msg1 }]}) headers ={'Content-Type':'application/json'} response = requests.request("POST", url, headers=headers, data=payload) json_result = json.loads(response.text)print(json_result)# print(response.text) wx.SendMsg(msg=json_result['result']+"--此内容为AI生成", who="你要发送的人")if __name__ =='__main__': wx = WeChat()whileTrue: msgs = wx.GetAllMessage()if msgs:if msgs[-1].type=="friend": main(wx, msgs[-1].content)
在这里插入图片描述

Read more

前端SSE(Server-Sent Events)实现详解:从原理到前端AI对话应用

一、什么是SSE? SSE(Server-Sent Events)是一种服务器向客户端推送数据的技术,它允许服务器主动向客户端发送数据,而不需要客户端频繁轮询。SSE特别适合实时通信场景,比如AI聊天的流式输出、实时通知、股票行情更新等。 SSE的核心特点: * 单向通信 :服务器向客户端单向推送数据 * 基于HTTP :使用标准的HTTP协议,不需要特殊的服务器支持 * 自动重连 :连接断开时会自动尝试重连 * 文本格式 :使用简单的文本格式传输数据 * 轻量级 :实现简单,开销小 二、SSE的工作原理 1. 连接建立 客户端通过向服务器发送一个HTTP请求来建立SSE连接。服务器返回一个特殊的响应,设置 Content-Type: text/event-stream 头,告诉客户端这是一个SSE流。 2. 数据传输 服务器以流的形式持续发送数据,每个数据块都是一个SSE格式的消息。SSE消息格式如下: data: 消息内容\n\n 其中: * data: 是固定前缀 * 消息内容可以是任意文本,

练习开发Skill——网页内容抓取Skill(website-content-fetch)

练习开发Skill——网页内容抓取Skill(website-content-fetch)

现在使用AI帮我们找一些资料帮我们分析问题的场景多的数不胜数,但是在AI找资料的过程中,我们对AI抓取的内容是不知道,也不可以明确指定范围的,主要是靠模型本身能力去收集,当然也可以增加提示词,加以控制。 当然目前解决方案也有很多: * 增加更详细的提示词,描述更细致,控制更精细,过程更明确 * 同时也有Tavily Search、SearXNG等搜索智能体,可以更好指定搜索参数,如何处理搜索结果等 * 引用Skills、MCP等丰富大模型能力 了解到这些的时候,想着练习写一个Skills,实现网页内容抓取(其实很多东西都已经实现了,本文就是学习和分享),也了解一下Skills的开发 Skills的项目结构 skill-name/ ├── SKILL.md (唯一必需) │ ├── YAML 格式 (name, description 必须) │ └── Markdown instructions (介绍使用Markdown) └── Bundled Resources (可选的其他内容,和SKILL.md同级) ├── scripts/ - 存放可执行脚本(例如 Py

【沧海拾昧】绿联NAS配置WebDAV公网访问并使用RaiDrive挂载到本地

【沧海拾昧】绿联NAS配置WebDAV公网访问并使用RaiDrive挂载到本地

#C0601 沧海茫茫千钟粟,且拾吾昧一微尘 ——《沧海拾昧集》@CuPhoenix 【阅前敬告】沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系【如有问题必是本集记录有谬,切勿深究】 目录 * 前言 * 一、配置步骤 * 1、确认网络设备支持 IPv6 * 2、购买域名 * 3、配置访问凭证 * 2、NAS 配置 WebDAV 服务 * 3、NAS 配置 DDNS 支持 * 4、配置反向代理 * 5、在 RaiDrive 中挂载 * 6、设置防火墙 * 二、最终结果 前言 将 NAS 的磁盘空间通过 RaiDrive 等软件挂载到本地使用是一种十分便捷的方法,但是 RaiDrive 中只有针对群晖(

不懂Python也能用!Hunyuan-MT-7B-WEBUI图形化界面详解

不懂Python也能用!Hunyuan-MT-7B-WEBUI图形化界面详解 在今天的多语言信息洪流中,一个不会编程的编辑要将一篇汉语文章翻译成藏文,或是一位基层文化工作者需要把政策文件转为维吾尔语——他们真的必须依赖技术团队吗?过去,答案几乎是肯定的。高性能翻译模型往往“藏身”于命令行和代码仓库之中,对非技术人员而言如同天书。 但这一局面正在被打破。腾讯推出的 Hunyuan-MT-7B-WEBUI 正是这样一种尝试:它把一个拥有70亿参数、在国际评测中屡获第一的翻译大模型,封装进一个点点鼠标就能操作的网页界面里。你不需要会Python,不需要理解CUDA内存分配,甚至不需要打开终端——只要你会用浏览器,就能驾驭最先进的AI翻译能力。 这不只是“加了个前端”那么简单。它是AI从实验室走向真实场景的关键跃迁:当技术不再以“你能写多少代码”来设限,它的社会价值才真正开始释放。 Hunyuan-MT-7B 的核心身份,是一个专为机器翻译任务优化的大规模语言模型。不同于通用大模型(如LLaMA、ChatGLM),它从训练数据到架构设计都聚焦于“精准传意”。采用标准的编码器-解码器结构