在微信中与 AI 助理进行多模态交互, 处理文本、图片、文件和网页链接等各类消息。
本项目使用 WeChatFerry 库控制 Windows PC 桌面微信客户端, 调用 OpenAI Assistant API进行智能多模态消息处理。
特点:
- 在微信中与 AI 对话, 自动完成绘图、生成语音、处理文件、搜索网页等多模态任务。
- 利用 WeChatFerry 库接入 Windows 桌面版微信程序, 对微信号的兼容性高(无需实名认证), 风险低。
- 使用 OpenAI Assistant API 自动管理群聊对话上下文。
- AI 自行判断调用代码解释器和外部插件等工具,实现图片、语音、链接、文件等各类对象的处理。
现有插件:
- bing_search: 必应搜索
- browse_link: 浏览网页链接
- image_to_text: 图像文字描述
- text_to_image: 文字描述绘图
- text_to_speech: 文本转语音
后续计划开发:
- 上传文件, 使 AI 能引用文件内容 (知识库)
- 语音识别、视频分析
- AI 调用其他 API
- "画一张猫和水豚一起滑雪的照片"
- "(引用图片) 根据图片内容作一首诗,并读给我听"
- "(引用公众号文章或网页链接) 总结一下文章的要点"
部署需要的条件:
- OpenAI API Key
- Windows 电脑或服务器
- (中国国内) 用于访问OpenAI的代理服务器
- 安装好 Python 环境 (推荐 Python 3.11) 和 Git
部署步骤:
- 安装微信
3.9.2.23
版本下载地址 - 克隆项目代码到本地
git clone https://github.com/latorc/Wechat-AI-Assistant.git
- (可选) 创建 Python 虚拟环境并激活
python -m venv .venv
call .venv\Scripts\activate.bat
- 安装依赖的库; 这里使用清华的来源, 方便中国国内用户快速下载
cd Wechat-AI-Assistant
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
- 编辑配置文件: 重命名配置文件 config_template.yaml 为 config.yaml, 并编辑配置项。
主要配置项说明如下:
配置项 | 说明 | 举例 |
---|---|---|
api_key | 你的 OpenAI API Key | sk-abcdefg12345678.... |
base_url | OpenAI API 的网址, 使用默认 API 无需改动 | https://api.openai.com/v1 |
proxy | 代理服务器地址, 格式为"http:https://地址:端口号" | http:https://10.0.0.10:8002 |
chat_model | 默认使用的聊天模型 | gpt-4-1106-preview, gpt-3.5-turbo |
admins | 管理员微信号列表, 只有管理员可以使用管理员命令 | [wx1234, wx2345] |
其他配置选项请参见 config.yaml 中的注释。
- 运行 main.py
python main.py
程序会自动唤起微信客户端, 之后扫码登录微信桌面客户端, 即可开始使用。
添加微信AI助理的微信好友, 或将其加入群聊中并@它, 与它进行对话。 直接与其对话将调用 ChatGPT 进行回答。 微信AI助理会根据用户的文本, 自主选择调用工具完成任务。现阶段工具包括绘图(OpenAI dall-e-3), 代码解释器, 合成语音(OpenAI API), 访问网页链接等。
- "画一张猫滑雪的写真照片"
- "创作一段关于滑雪的说唱并唱给我听"
可以引用微信消息, 让AI助理处理。 例如:
- 引用图片消息 "将图片转化成灰度"
- 引用公众号文章 "帮我总结一下文章要点"
定义了管理员后 (config.yaml 文件中的 admins 项目), 管理员可以使用管理员命令。默认的命令如下:
命令 | 说明 |
---|---|
$帮助 | 显示帮助信息 |
$刷新配置 | 重新载入程序配置 |
$清除 | 清除当前对话记忆 |
$加载<预设名> | 为当前对话加载预设 |
$重置预设 | 为当前对话重置预设到默认预设 |
$预设列表 | 显示可用的预设 |
$id | 显示当前对话的id |
这些命令可以在 config.yaml 中修改
- 对话预设是对当前对话(群聊或单聊)生效的系统提示词和消息包装方式。
- 对AI助理使用默认命令"$加载 <预设名>"可以为当前对话加载预设。"$预设列表"可以显示当前可用的预设及其描述。
- <预设名>为定义在 presets 目录下的同名 yaml 配置文件。
- default.yaml 是为所有对话使用的默认预设。
- 要创建自己的预设定义, 请参考 presets 目录下的 default.yaml, 即默认的预设。复制该文件,改名成你的预设名称,并修改其中信息。
- desc: 预设的简单描述
- sys_prompt: 预设的系统提示词
- msg_format: 包装用户消息的格式字符串, 可用替换变量 {message}=原消息, {wxcode}=发送者微信号, {nickname}=发送者微信昵称。如不设置则直接发送源消息。
- 可以使用手机模拟器 (如逍遥模拟器) 登录微信, 并登录 Windows 微信客户端, 即可保持微信持续在线。
- 程序调用了 OpenAI 的 Assistant API. 运行时,程序将创建并修改一个名为 "wechat_assistant" 的 assistant 用于对话。你可以在 OpenAI Playground 测试这个助理。
- 程序会上传照片和文件到 OpenAI 进行处理。你可以在 OpenAI管理后台查看和删除你的文件。OpenAI 不对文件本身进行收费,但是对文件的总占用空间有限制。
- 本项目基于WeChatFerry。感谢lich0821大佬的WeChatFerry项目: https://github.com/lich0821/WeChatFerry
- 推荐: 一键部署自己的ChatGPT网站, ChatGPT-Next-Web 项目: https://github.com/Yidadaa/ChatGPT-Next-Web