本文正在参加「Python 主题月」,详情查看 活动链接
大家好!我是 Python
小小白,七夕又双叒叕快到了,这里带你超快上手 AI ChatBot
教程,
真正手把手教你做个用 AI
续写情话的聊天机器人,
(由Paddlehub
+ Python Wechaty
合体打造)
搭建过程会遇到好多好多 深坑 呀! 不过都替大家蹚过了!
踩坑详情见下篇
话不多说 先上效果: 开整
一、环境支持
这里 win7
环境下运行
1. python 版本: v>=3.8
2. pip 版本: v21.1.1
3. docker 服务
二、具体步骤
1. 申请免费 token
1.1 Padlocal_token
-
打开 【wechaty 官网】
1.2 wechaty_token
就是一个 UUID
避免和别人重复 申请地址: wechaty_token
2. 搭建 PadLocal Token Gateway 服务环境
vim
创建脚本
vi wechaty_test.sh
命令 i -- 输入下面的脚本内容 --
复制代码
-
输入如下脚本
开头添加一行: #!/bin/bash
- WECHATY_PUPPET_PADLOCAL_TOKEN 即为上面申请的
Padlocal_token
- SERVER_PORT 对外访问端口:
9999
- WECHATY_TOKEN 为上面申请的
wechaty_token
- WECHATY_PUPPET_PADLOCAL_TOKEN 即为上面申请的
#!/bin/bash
export WECHATY_LOG="verbose"
export WECHATY_PUPPET="wechaty-puppet-padlocal"
export WECHATY_PUPPET_PADLOCAL_TOKEN="puppet_padlocal_XXXXXX"
export WECHATY_PUPPET_SERVER_PORT="9999"
export WECHATY_TOKEN="1fe5f846-3cfb-401d-b20c-XXXXX"
docker run -ti \
--name wechaty_puppet_service_token_gateway \
--rm \
-e WECHATY_LOG \
-e WECHATY_PUPPET \
-e WECHATY_PUPPET_PADLOCAL_TOKEN \
-e WECHATY_PUPPET_SERVER_PORT \
-e WECHATY_TOKEN \
-p "$WECHATY_PUPPET_SERVER_PORT:$WECHATY_PUPPET_SERVER_PORT" \
wechaty/wechaty:0.56
复制代码
然后给刚才创建的脚本 wechaty_test.sh
设置一下 sh 命令权限, 输入如下命令 & 回车即可
# 这里 +x 是字母 x
chmod +x ./wechaty_test.sh
复制代码
3. 启动 Docker
在 docker
安装目录下: E:\codetools\Docker Toolbox\start.sh
, 启动 docker
服务, 成功如下图:
未启动 docker
服务的情况下, 启动我们的 wechaty_test.sh
服务会失败, 如下图:
4. 运行 wechaty_test.sh
, 连接 wechaty
服务
sh ./wechaty_test.sh
复制代码
如下心跳图, 就说明我们已经与 wechaty
远程服务器连上了,
如果已经运行过机器人项目并登陆了微信, 这是微信收到消息后在这里我们就可以看到了!
send-test-message
sh 命令行 可以看到这条消息:
接下来就要克隆一下 python-wechaty-getting-started
的项目代码
三、python 机器人项目
1. 克隆项目 python-wechaty-getting-started
下载完克隆项目, 用 PyCharm
打开后进行简单配置
git clone https://github.com/wj-Mcat/python-wechaty-getting-started
cd python-wechaty-getting-started
复制代码
2. 配置 examples/ding-dong-bot.py
SERVICE_TOKEN
对应 前文申请的wechaty_token
SERVICE_ENDPOINT
对应 启动的docker
服务
# examples/ding-dong-bot.py
## 引入 os 包 设置环境变量
import os
os.environ['WECHATY_PUPPET'] = "wechaty-puppet-service"
os.environ['WECHATY_PUPPET_SERVICE_TOKEN'] = "bb137430-27ae-xxxx-xxx-xxxxxxxx"
os.environ['WECHATY_PUPPET_SERVICE_ENDPOINT'] = "192.xxx.xx.100:9999"
复制代码
3. 启动
# 启动项目
python examples/ding-dong-bot.py
复制代码
成功后 出现二维码就可以用微信 扫码登录了. 登录不上可以多登录几次..
然后和小伙伴测试一下吧: 发送 测试消息 ding
会自动回复 dong
+ an img
到此,恭喜你入坑。
以上就是前期项目铺垫啦!
下面才是可以续写情话机器人的关键逻辑!
四、给机器人加持 AI 续写情话
1. 安装 paddlepaddle
用 python
的包管理器 pip
安装 paddlepaddle
pip install paddlepaddle
复制代码
2. 安装 paddlehub
这里使用 百度飞浆 深度学习平台的应用场景中的工具组件 Paddlehub
本文使用 应用场景PaddleHub
>> 智能文本生成
>> 情话生成模型
安装 paddlehub
到 user
目录
pip install paddlehub --user
复制代码
这时 PyCharm
会重新引入相关依赖
3. 编写机器人逻辑
就使用文档中的示例进行修改, 超简单, 真是太棒了,
# 引入依赖
import paddlehub as hub
# 加载模型
module = hub.Module(name="ernie_gen_lover_words")
复制代码
在 on_message
函数中修改具体逻辑, 已详细说明
async def on_message(msg: Message):
"""
Message Handler for the Bot
"""
# 如果自己发的消息就返回不回复了
if msg.is_self():
return
## 以示例文本训练生成 test_texts = ['情人节', '故乡', '小编带大家了解一下程序员情人节']
# generate message
# 这里参数 texts=[msg.text()] 是以收到的消息作为训练文本进行生成一个二维数组
# beam_width 返回语句的数量 这里设置为 1条
results = module.generate(texts=[msg.text()], use_gpu=True, beam_width=1)
# 没有生成对应内容也直接返回
if results is None:
return
# 发送消息: 二维数组的第一项
await msg.say(results[0][0])
复制代码
到此, 哈哈哈 完成啦
4. 运行
开始运行吧: 运行失败可以多运行几次! 这个过程会下载 Paddle
模型 文件包, 请耐心等待
python examples/ding-dong-bot.py
复制代码
效果: 快来和你的小伙伴试试吧,
paddlehub
的更多 【应用场景】 也可以自行尝试!
怎么样, 是不是有点酷!!!
踩坑
如有不足, 疑问, 欢迎不吝赐教, 批评指出!
如果对你有些许帮助, 还请动动发财的小手一键三连! 点个小赞, 评论收藏! 谢~谢啦~~
踩过的各种深坑已替大家蹚过了, 将在后续更文中一一详细列出,敬请期待,
近期评论