手把手搭建微信机器人,帮你雇一个24小时在线的个人 AI 助理(上)

news2024/10/6 3:02:12

上一篇,带领大家薅了一台腾讯云服务器:玩转云服务:手把手带你薅一台腾讯云服务器,公网 IP。

基于这台服务器,今天我们一起动手捏一个基于 LLM 的微信机器人。

0. 前置准备

除了自己常用的微信账号以外,还需要准备一个微信小号(强烈建议用小号,否则有封号的风险,且小号须实名认证!)。

如何实名认证:在手机端微信中,依次点击:我 -> 服务 -> 钱包 -> 底部的身份信息。

最终我们会把这个小号改造成一个基于 LLM 的微信机器人,它可以在你的微信聊天窗口中,回答你的一切问题,就像你用 GPT/Kimi 的聊天窗口一样,不过它嵌入在你的微信 APP 中,随时唤起,使用更加方便。

此外,我们还可以通过加入其他插件,赋予它更多智能,将其打造成一个个性化的 AI 助理,帮你完成更多复杂任务。

1. 准备 LLM 模型

如果你有 OpenAI 的账号,能够使用 GPT 自然是再好不过的。

如果没有,也没关系,国内也有很多 GPT 平替。

本文,将以 智谱的 GLM 为例,带大家走完整个流程,后续你想换用任意 LLM 都一样的~

智谱 GLM 传送门:https://open.bigmodel.cn/

进入后,注册一个账号,认证成功后,新用户会赠送 18 元额度,后续使用过程中注意账户余额哦,不过体验是绰绰有余了~

接下来,需要拿到 GLM 的 API Key。

如果之前注册过,直接在这里取用:

如果没有,点击这里,新生成一个:

2. 配置环境

在上一篇手把手带你薅一台云服务器,我们已经新建了一个名叫 ai 的 Python 虚拟环境。

如果你也参照上一篇配置好了 VS Code 远程登陆,那么进来后默认就是 ai 的虚拟环境,后面在这里进行配置文件的修改将会非常方便:

接下来,我们直接在这个环境中进行项目安装。

2.1 chatgpt-on-wechat 安装

本次应用,将主要基于 chatgpt-on-wechat 这个开源项目。

先通过 git 将这个项目下载下来:

git clone https://github.com/zhayujie/chatgpt-on-wechat

然后安装必要的包:

# 进入项目目录
cd chatgpt-on-wechat/
# 更换 pypi 源,加速库的安装(强烈推荐)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r requirements.txt
pip install -r requirements-optional.txt
pip install zhipuai

2.2 修改配置文件

首先在项目根目录下,将模板配置文件复制一份:

# 复制一份配置文件,方便修改
cp config-template.json config.json

如果你已经实现了 VS Code 远程登陆,在 VS Code 编辑器中修改非常方便,如下图所示:右侧栏是模板配置,左侧是我们复制的配置文件,因为我们的 LLM 采用的是 GLM,所以这里修改为zhipu_ai 的api key 和 url。

config.json 还有几个参数需要注意一下:

  • “single_chat_prefix”: [“bot”,“@bot”]:代表私聊时,你召唤机器人时要加的前缀,如果不需要任何前缀,也可以置空;
  • “single_chat_reply_prefix”: "[bot] ":代表私聊时,机器人回复你时,要加的前缀,同样可以置空
  • “group_chat_prefix”: [“@bot”]:代表群聊时,你召唤机器人时要加的前缀
  • “group_name_white_list”: [“ALL_GROUP”]:代表哪些群里可以使用机器人
  • “character_desc”: 你给机器人的人设提示词

此外,除了在 VS Code 编辑器中修改以外,宝塔面板中也支持文件修改,左侧菜单栏找到 文件,找到项目文件所在目录,双击config.json进行修改,修改后记得手动保存:

3. 开始部署

3.1 服务启动

回到项目根目录,采用如下命令:

# 启动服务,需要回到项目根目录
cd ../..
# 新建日志文件
touch nohup.out
# 后台挂起启动命令,即使终端被kill,服务也不会中断;
# tail -f nohup.out 代表实时打印日志最后几行
nohup python app.py & tail -f nohup.out

3.2 服务测试

服务启动成功后,你会在终端看到如下输出:

用你的微信小号扫码登录,本质上是在这台服务器上启动一个你的微信客户端。

一旦出现 Start auto replying ,代表启动成功了,此时你可以用你的微信大号,给小号私聊发一条信息,稍等片刻,会收到已经被机器人托管的小号给你的回复。

同时在终端,也会看到如下日志信息。

至此,你扫码的微信已经变成一个机器人了,需要注意的是:必须保证小号的手机微信在线,否则远端也会下线。

3.3 报错解决

如果启动失败,需要找到并解决 bug 后再重新启动,为此可以通过如下命令找到服务对应的进程ID,然后 kill 掉。

ps aux |grep python
kill -9 91548

写在最后

至此,我们一起走完了 “搭建一个微信机器人” 的完整流程。

也许看到这里的你,会有个疑问:拿到这个微信机器人,有什么用?

上述步骤只是带大家快速走完整个流程,并不代表微信机器人只能简单地完成对话任务~

chatgpt-on-wechat 项目中还支持多种插件,从而实现查天气、查快递、设置定时提醒等。。。

先放两张图给大家直观感受下~

敬请期待(下篇预告): chatgpt-on-wechat插件安装和使用,给微信机器人装上三头六臂。

如果本文对你有帮助,欢迎点赞收藏备用!

我是猴哥,一直在做 AI 领域的研发和探索,会陆续跟大家分享路上的思考和心得,以及干货教程。

新朋友欢迎关注 “猴哥的AI知识库” 公众号,下次更新不迷路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1904053.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的生日聚会(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…

【微服务】springboot对接Prometheus指标监控使用详解

目录 一、前言 二、微服务监控概述 2.1 微服务常用监控指标 2.2 微服务常用指标监控工具 2.3 微服务使用Prometheus监控优势 三、环境准备 3.1 部署Prometheus服务 3.2 部署Grafana 服务 3.3 提前搭建springboot工程 3.3.1 引入基础依赖 3.3.2 配置Actuator 端点 3.…

STM32实现看门狗(HAL库)

文章目录 一. 看门狗1. 独立看门狗(IWDG)1.1 原理1.2 相关配置1.3 相关函数 2. 窗口看门狗(WWDG)2.1 原理2.2 相关配置2.3 相关函数 一. 看门狗 单片机在日常工作中常常会因为用户配置代码出现BUG,而导致芯片无法正常工…

如何对GD32 MCU进行加密?

GD32 MCU有哪些加密方法呢?大家在平时项目开发的过程中,最后都可能会面临如何对出厂产品的MCU代码进行加密,避免产品流向市场被别人读取复制。 下面为大家介绍GD32 MCU所支持的几种常用的加密方法: 首先GD32 MCU本身支持防硬开盖…

无需服务器,浏览器跑700+AI模型?!【送源码】

Transformers.js 是一个创新的网络机器学习库,它将先进的 Transformer 模型直接带入浏览器,无需服务器端支持。这个库与 Hugging Face 的 Python transformers 库功能对等,提供相似的 API 接口来运行预训练模型,涵盖了自然语言处理…

人工智能系列-Python面向对象编程

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 面向对象编程和面向过程编程 在使用计算机语言进行代码编写时,常见的两种思路是面向对象编程和面向过程编程。 面向过程:根据业务逻辑从上到下写代码。…

Hi6602 恒压恒流SSR电源方案

Hi6602是一款针对离线式反激电源设计的高性能PWM控制器。Hi6602内集成有通用的原边恒流控制技术,可支持断续模式和连续模式工作,适用于恒流输出的隔离型电源应用中。Hi6602内部具有高精度65kHz开关频率振荡器,且带有抖频功能可优化EMI性能。H…

【Python迭代器探秘】:揭秘迭代器与生成器的魔法,掌握高效循环的艺术

文章目录 一、迭代器的基本概念1.1 迭代器优点1.2 迭代器的编写方法1.3 python内置迭代器函数1.4 小结1.5 迭代器对象与迭代对象1.5.1 区别1. 迭代对象2. 迭代器对象3. 小结 1.5.2 方法区分 二、生成器基本概念1. 生成器函数2. 生成器表达式 一、迭代器的基本概念 迭代器是Pyt…

【数据结构/操作系统 堆和栈】区别及应用场景、底层原理图解

堆和栈 比较有趣的是,计算机网络、操作系统中都会对堆栈有不同方面比较详细的描述,而使用的地方通常对这些底层的细节表现得没有那么明显。 但如果你能了解堆栈在计算机网络和操作系统中的表现形式,在你写代码时就会有不一样的认识&#xff…

基于AOP的数据字典实现:实现前端下拉框的可配置更新

作者:后端小肥肠 创作不易,未经允许严禁转载。 目录 1. 前言 2. 数据字典 2.1. 数据字典简介 2.2. 数据字典如何管理各模块的下拉框 3. 数据字典核心内容解读 3.1. 表结构 3.2. 核心代码 3.2.1. 根据实体类名称获取下属数据字典 3.2.2. 数据字…

【QT】显示类控件

显示类控件 显示类控件1. label - 标签2. LCD Number - 显示数字的控件3. ProgressBar - 进度条4. Calendar Widget - 日历5. Line Edit - 输入框6. Text Edit - 多行输入框7. Combo Box - 下拉框8. Spin Box - 微调框9. Date Edit & Time Edit - 日期微调框10. Dial - 旋钮…

3-4 优化器和学习率

3-4 优化器和学习率 主目录点这里 优化器是机器学习和深度学习模型训练过程中用于调整模型参数的方法。它的主要目标是通过最小化损失函数来找到模型参数的最优值,从而提升模型的性能。 在深度学习中,优化器使用反向传播算法计算损失函数相对于模型参数…

pycharm远程连接和conda环境参考博客自用整理

pycharm远程连接 pycharm的连接需要先用xftp把项目上传上去(包括venv),似乎才能连 https://blog.csdn.net/weixin_41174300/article/details/134420981 注意要上传一份一模一样的,然后在deployment里面添加mapping 注意传输文件…

【C语言】操作符--百科全书

目录 一、操作符的分类 二、 ⼆进制和进制转换 三、 原码、反码、补码 四、 移位操作符 五、位操作符:&、|、^、~ 六、单⽬操作符 七、逗号表达式 八、 下标访问[]、函数调⽤() 九、结构体 十、操作符的属性:优先级、结合性 十一、表达式…

P1392 取数

传送门&#xff1a;取数 如若你看完题解后&#xff0c;仍有问题&#xff0c;欢迎评论 首先说一下 我首先想到的思路 &#xff08; 20%通过率 &#xff09;&#xff1a;通过dfs , 将所有的情况放入priority_queue中&#xff08;greater<int>&#xff09;&#xff0c;维持…

【ARMv8/v9 GIC 系列 1.7 -- GIC PPI | SPI | SGI | LPI 中断使能配置介绍】

文章目录 GIC 各种中断使能配置PPIs(每个处理器私有中断)SPIs(共享外设中断)SGIs(软件生成的中断)LPIs(局部中断)GIC 各种中断使能配置 在ARM GICv3和GICv4架构中,不同类型的中断(如PPIs、SPIs、SGIs和LPIs)可以通过不同的方式进行启用和禁用。 下面详细介绍这些中…

java项目总结6

目录 1.双列集合 2.map的三种遍历方式&#xff1a; 1.键找值 2.键值对 3.lambda遍历map 3.HashMap 例子&#xff1a;统计字符出现次数 4.LinkedHashMap 5.TreeMap 6.可变参数 7.Collections: 1.双列集合 双列集合特点&#xff1a; 定义Map<String&#xff0c;St…

【Python】已解决:(paddleocr导包报错)ModuleNotFoundError: No module named ‘paddle’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;&#xff08;paddleocr导包报错&#xff09;ModuleNotFoundError: No module named ‘paddle’ 一、分析问题背景 近日&#xff0c;一些使用PaddleOCR库进行文字…

移动校园(3):处理全校课程数据excel文档,实现空闲教室查询与课程表查询

首先打开教学平台 然后导出为excel文档 import mathimport pandas as pd import pymssql serverName 127.0.0.1 userName sa passWord 123456 databaseuniSchool conn pymssql.connect(serverserverName,useruserName,passwordpassWord,databasedatabase) cursor conn.cur…

vue3项目 前端blocked:mixed-content问题解决方案

一、问题分析 blocked:mixed-content其实浏览器不允许在https页面里嵌入http的请求&#xff0c;现在高版本的浏览器为了用户体验&#xff0c;都不会弹窗报错&#xff0c;只会在控制台上打印一条错误信息。一般出现这个问题就是在https协议里嵌入了http请求&#xff0c;解决方法…