教你用AI Studio+wechaty+阿里云白嫖一个智能微信机器人
教你用AI Studio+wechaty+阿里云白嫖一个智能微信机器人
前言
- 这绝对是全网最细教程,没有之一
- 右上角有Fork功能,还有点赞功能,你懂的
项目展示
1. 搞定云服务器部分
我这里是用的阿里云的云服务器,你也可以用其他的比如腾讯云的、华为云的等等。
1.1 注册一个阿里云账号并完成实名认证
阿里云官网: https://account.aliyun.com/
1.2 点击底部的免费试用
1.3 点击右下角了解试用
1.4 选择一款产品
1.5 选择操作系统为Ubuntu, 点击立即购买
1.6 接下来打开控制台
1.7 找到左边的云服务器ECS打开
1.8 进入我们刚才创建的实例
1.9 点击安全组
1.10 点击配置规则
1.11 点击手动添加, 目的栏填入8080/8080, 源栏填入0.0.0.0/0, 点击保存
1.12 回到刚才的页面, 点击远程连接
1.13 点击立即登录
1.14 要输入密码, 我们之前没有设置密码, 所以我们返回刚才的页面去设置密码
1.15 点击重置实例密码
1.16 设置新密码完成后, 再次进入远程连接
1.17 我们就进入到终端里面了
1.18 在终端里输入以下指令
免费token申请地址: http://pad-local.com
(温馨提示: 免费的token有效期为7天,如需使用有效期更长的token,请访问wechaty官网: https://wechaty.js.org/)
$ apt update
$ apt install docker.io
$ docker pull wechaty/wechaty:latest
$ export WECHATY_LOG=“verbose”
$ export WECHATY_PUPPET=“wechaty-puppet-wechat”
$ export WECHATY_PUPPET_SERVER_PORT=“8080”
$ export WECHATY_TOKEN=“puppet_padlocal_xxxxxx” # 这里输入你自己的token
$ docker run -ti --name wechaty_puppet_service_token_gateway --rm -e WECHATY_LOG -e WECHATY_PUPPET -e WECHATY_TOKEN -e WECHATY_PUPPET_SERVER_PORT -p “ W E C H A T Y P U P P E T S E R V E R P O R T : WECHATY_PUPPET_SERVER_PORT: WECHATYPUPPETSERVERPORT:WECHATY_PUPPET_SERVER_PORT” wechaty/wechaty:latest
1.19 检查是否运行成功
- 输入网址: https://api.chatie.io/v0/hosties/xxxxxx (后面的xxxxxx就是你的token)
例如我输入的地址就是这个: https://api.chatie.io/v0/hosties/puppet_padlocal_ef0c112ddf9b49fdaa8242b87b83b030 - 如果返回了服务器的ip地址以及端口号,比如{"ip":"121.43.228.90","port":8080},就说明运行成功了
如果返回的是{"ip":"0.0.0.0","port":0},就说明没有运行成功
1.20 运行后会输出一大堆东西,这时候我们找到一个Online QR Code: 的地址点击进去
1.21 就会出现下面这个二维码,用微信扫码即可(温馨提示: 用哪个微信号扫二维码哪个微信号就是机器人)
1.22 点击登录,继续登录
1.23 会看到最上面有一个桌面微信已登录就说明成功啦
2. 在AI Studio上跑一个简单的ding-dong机器人
2.1 创建一个脚本项目(温馨提示: 在notebook的终端里跑不起来)
2.1.1 点击下一步
2.1.2 填好项目名称,项目标签,项目描述,点击创建
2.1.3 进入项目
2.2 在run.sh
文件中写入以下内容
pip install --upgrade pip
pip install wechaty
# 设置环境变量
export WECHATY_PUPPET=wechaty-puppet-service
export WECHATY_PUPPET_SERVICE_TOKEN=your_token_at_here
# 运行python文件
python run.py
2.3 在run.py
文件中写入以下内容
import os
import asyncio
from wechaty import (
Contact,
FileBox,
Message,
Wechaty,
ScanStatus,
)
async def on_message(msg: Message):
if msg.text() == ‘ding’:
await msg.say(‘这是自动回复: dong dong dong’)
<span class="hljs-keyword">if</span> msg.text() == <span class="hljs-string">'hi'</span> <span class="hljs-keyword">or</span> msg.text() == <span class="hljs-string">'你好'</span>:
<span class="hljs-keyword">await</span> msg.say(<span class="hljs-string">'这是自动回复: 机器人目前的功能是\n- 收到"ding", 自动回复"dong dong dong"\n- 收到"图片", 自动回复一张图片'</span>)
<span class="hljs-keyword">if</span> msg.text() == <span class="hljs-string">'图片'</span>:
url = <span class="hljs-string">'https://images.unsplash.com/photo-1470770903676-69b98201ea1c?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1500&q=80'</span>
<span class="hljs-comment"># 构建一个FileBox</span>
file_box_1 = FileBox.from_url(url=url, name=<span class="hljs-string">'xx.jpg'</span>)
<span class="hljs-keyword">await</span> msg.say(file_box_1)
async def on_scan(
qrcode: str,
status: ScanStatus,
_data,
):
print('Status: ’ + str(status))
print(‘View QR Code Online: https://wechaty.js.org/qrcode/’ + qrcode)
async def on_login(user: Contact):
print(user)
async def main():
# 确保我们在环境变量中设置了WECHATY_PUPPET_SERVICE_TOKEN
if ‘WECHATY_PUPPET_SERVICE_TOKEN’ not in os.environ:
print(’’’
Error: WECHATY_PUPPET_SERVICE_TOKEN is not found in the environment variables
You need a TOKEN to run the Python Wechaty. Please goto our README for details
https://github.com/wechaty/python-wechaty-getting-started/#wechaty_puppet_service_token
‘’’)
bot = Wechaty()
bot.on(<span class="hljs-string">'scan'</span>, on_scan)
bot.on(<span class="hljs-string">'login'</span>, on_login)
bot.on(<span class="hljs-string">'message'</span>, on_message)
<span class="hljs-keyword">await</span> bot.start()
print(<span class="hljs-string">'[Python Wechaty] Ding Dong Bot started.'</span>)
asyncio.run(main())
2.4 运行任务
2.4.1 启动命令填sh run.sh
, 点击提交
2.4.2 选择任务运行环境(双机四卡它不香吗)
2.4.3 任务要排队,等一小会儿看到在执行中了就可以点击查看日志了
2.4.4 如果看到下面的这种情况就说明机器人已经跑起来啦,赶紧去给你的机器人发信息试一试吧
3. 接入paddlehub模型使机器人更智能
paddlehub官网地址: https://www.paddlepaddle.org.cn/hub
模型库地址: https://www.paddlepaddle.org.cn/hublist
3.1 在paddlehub找一个你需要的模型,这里我以图像生成模型作为演示
模型地址: https://www.paddlepaddle.org.cn/hubdetail?name=animegan_v2_shinkai_33&en_category=GANs
3.2 修改run.sh
文件
pip install --upgrade pip
pip install wechaty
# 下载模型
hub install animegan_v2_shinkai_33
# 设置环境变量
export WECHATY_PUPPET=wechaty-puppet-service
export WECHATY_PUPPET_SERVICE_TOKEN=your_token_at_here
# 设置使用GPU进行模型预测
export CUDA_VISIBLE_DEVICES=0
# 创建两个保存图片的文件夹
mkdir -p image
mkdir -p image-new
# 运行python文件
python run.py
3.3 修改run.py
文件
import os
import cv2
import asyncio
import numpy as np
import paddlehub as hub
from wechaty import (
Contact,
FileBox,
Message,
Wechaty,
ScanStatus,
)
# 定义model
model = hub.Module(name=‘animegan_v2_shinkai_33’, use_gpu=True)
def img_transform(img_path, img_name):
“”"
将图片转换为新海诚《你的名字》、《天气之子》风格的图片
img_path: 图片的路径
img_name: 图片的文件名
“”"
# 图片转换后存放的路径
img_new_path = ‘./image-new/’ + img_name
<span class="hljs-comment"># 模型预测</span>
result = model.style_transfer(images=[cv2.imread(img_path)])
<span class="hljs-comment"># 将图片保存到指定路径</span>
cv2.imwrite(img_new_path, result[<span class="hljs-number">0</span>])
<span class="hljs-comment"># 返回新图片的路径</span>
<span class="hljs-keyword">return</span> img_new_path
async def on_message(msg: Message):
if msg.text() == ‘ding’:
await msg.say(‘这是自动回复: dong dong dong’)
<span class="hljs-keyword">if</span> msg.text() == <span class="hljs-string">'hi'</span> <span class="hljs-keyword">or</span> msg.text() == <span class="hljs-string">'你好'</span>:
<span class="hljs-keyword">await</span> msg.say(<span class="hljs-string">'这是自动回复: 机器人目前的功能是\n- 收到"ding", 自动回复"dong dong dong"\n- 收到"图片", 自动回复一张图片\n- 收到一张图片, 将这张图片转换为动漫风格并返回'</span>)
<span class="hljs-keyword">if</span> msg.text() == <span class="hljs-string">'图片'</span>:
url = <span class="hljs-string">'https://images.unsplash.com/photo-1470770903676-69b98201ea1c?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1500&q=80'</span>
<span class="hljs-comment"># 构建一个FileBox</span>
file_box_1 = FileBox.from_url(url=url, name=<span class="hljs-string">'xx.jpg'</span>)
<span class="hljs-keyword">await</span> msg.say(file_box_1)
<span class="hljs-comment"># 如果收到的message是一张图片</span>
<span class="hljs-keyword">if</span> msg.<span class="hljs-built_in">type</span>() == Message.Type.MESSAGE_TYPE_IMAGE:
<span class="hljs-comment"># 将Message转换为FileBox</span>
file_box_2 = <span class="hljs-keyword">await</span> msg.to_file_box()
<span class="hljs-comment"># 获取图片名</span>
img_name = file_box_2.name
<span class="hljs-comment"># 图片保存的路径</span>
img_path = <span class="hljs-string">'./image/'</span> + img_name
<span class="hljs-comment"># 将图片保存为本地文件</span>
<span class="hljs-keyword">await</span> file_box_2.to_file(file_path=img_path)
<span class="hljs-comment"># 调用图片风格转换的函数</span>
img_new_path = img_transform(img_path, img_name)
<span class="hljs-comment"># 从新的路径获取图片</span>
file_box_3 = FileBox.from_file(img_new_path)
<span class="hljs-keyword">await</span> msg.say(file_box_3)
async def on_scan(
qrcode: str,
status: ScanStatus,
_data,
):
print('Status: ’ + str(status))
print(‘View QR Code Online: https://wechaty.js.org/qrcode/’ + qrcode)
async def on_login(user: Contact):
print(user)
async def main():
# 确保我们在环境变量中设置了WECHATY_PUPPET_SERVICE_TOKEN
if ‘WECHATY_PUPPET_SERVICE_TOKEN’ not in os.environ:
print(’’’
Error: WECHATY_PUPPET_SERVICE_TOKEN is not found in the environment variables
You need a TOKEN to run the Python Wechaty. Please goto our README for details
https://github.com/wechaty/python-wechaty-getting-started/#wechaty_puppet_service_token
‘’’)
bot = Wechaty()
bot.on(<span class="hljs-string">'scan'</span>, on_scan)
bot.on(<span class="hljs-string">'login'</span>, on_login)
bot.on(<span class="hljs-string">'message'</span>, on_message)
<span class="hljs-keyword">await</span> bot.start()
print(<span class="hljs-string">'[Python Wechaty] Ding Dong Bot started.'</span>)
asyncio.run(main())
3.4 像之前一样提交任务就可以啦
后记
机器人目前还不太完善的地方
- 只要收到一张图片就会自动去转换
- 可能会在图片转换的时候卡住,然后就处理不了其他信息了
- 只有这一个功能,更多功能等你自己去发掘啦,如果你发现了什么好玩的,一定一定回来告诉我呀
更多功能
-
请访问我的GitHub仓库: https://github.com/Lovely-Pig/paddlehub-wechaty
-
如果GitHub打不开的话,我在AI Studio上也准备了一个相同的仓库: https://aistudio.baidu.com/aistudio/projectdetail/1886330
-
觉得不错的话给我一个Star哦🎉🎉🎉
参考资料
-
AI Studio官网: https://aistudio.baidu.com/aistudio/index
-
PaddleHub官网:https://www.paddlepaddle.org.cn/hub
-
python-wechaty: https://github.com/wechaty/python-wechaty
-
python-wechaty-getting-started: https://github.com/wechaty/python-wechaty-getting-started
最后的最后,请给我一个赞吧,谢谢啦!!!
相关文章
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二十)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)
- 微软Xbox One无线手柄控制机器人
- 云拨测助力节卡机器人 全面优化海外网站性能
- macos安装android studio(Android Studio 2021.1.1)
- AIGC:ChatGPT(一个里程碑式的对话聊天机器人)的简介(意义/功能/核心技术等)、使用方法(七类任务)、案例应用(提问基础性/事实性/逻辑性/创造性/开放性的问题以及编程相关)之详细攻略
- 用 Python 构建实时股票警报消息系统机器人
- 【NLP】第 8 章:使用基于注意力的神经网络构建聊天机器人
- 【AI写作】 机器人流程自动化 介绍 - Robotic Process Automation (RPA) Introduction
- 使用Android Studio build tensorflow/examples/android——直接用android studio即可
- 机器人C++库(7)Robotics Library 之场景模块 rl::sg