需求是实现一个特定领域的问答功能,交互模式类似跟 ChatGPT/文心一言聊天一样,或者是购物平台中的客服机器人。 基于 ChatGPT 的开源实现来训练模型肯定不现实,毕竟这么大的模型,训练成本极高,而且现实需求也不需要这么庞大的功能,只需要专业的领域知识即可。 此外,涉及到医疗领域,自动回复不能太随意,容易引起纠纷。所以最近经常看到有人在问“怎样使用 ChatGPT 构造一个客服机器人?”,我的感觉是,对场景理解有偏差。
找了一下发现一个不错的开源对话管理框架 Rasa。
Rasa Open Source is the most popular open source framework for building chat and voice-based AI assistants.
走马观花地翻看了《Rasa 实战:构建开源对话机器人》这本书,发现大部分都是配置性的工作,光看不动手效率不高。 不如边看边配置,边测试,这样更高效,且不容易厌倦。
以下是开发环境的部署流程,对于生产环境的部署,请参考 对话机器人 rasa 生产环境部署,Ubuntu 服务器基于 docker
效果
基于 Rasa websocket 的网页组件 实现。
安装依赖
确认 Python 版本大于等于 3.7
python3 --version
更新 pip
pip3 install -U pip
Ubuntu 系统上安装依赖
sudo apt update
sudo apt install python3-dev python3-pip
安装 Rasa
注意,如果是国内的开发者,首先确保已经配置了国内的源,例如,使用清华的源:
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
因为安装 rasa 的过程中,会安装无数的三方依赖,其中就有 tensorflow,单这一个依赖就 500M。人生苦短,用国内源,早用早享受。。。
pip3 install rasa
若想指定版本:
pip3 install rasa==3.4.6
查看 Rasa 版本
> rasa --version
Rasa Version : 3.4.6
Minimum Compatible Version: 3.0.0
Rasa SDK Version : 3.4.1
Python Version : 3.8.5
Operating System : Linux-4.4.0-22621-Microsoft-x86_64-with-glibc2.29
Python Path : /usr/bin/python3
新建/初始化项目
rasa init
我选择了初始化一个 model,我看自动训练了 100 轮,类似 pytorch。估计这里是用 tensorflow 实现的。
如果选择与训练好的模型对话,会自动开启一个 Rasa server
2023-04-04 11:44:42 INFO root - Starting Rasa server on http://0.0.0.0:5005
2023-04-04 11:44:43 INFO rasa.core.processor - Loading model models/20230404-114314-gilded-tower.tar.gz...
然而,我并不知道该问啥问题...
Your input -> hi
Hey! How are you?
Your input -> who are you?
I am a bot, powered by Rasa.
Your input -> what can you do?
I am a bot, powered by Rasa.
Your input -> guide me
Hey! How are you?
Your input -> 你好啊
Your input -> 你是谁
Your input -> bye
Bye
输入中文没有回应,看来默认不支持中文,需要配置。参考 配置 Rasa 支持中文
禁用上报
服务器上的服务,还是不希望被上报任何信息
> rasa telemetry disable
Disabled telemetry reporting.
项目目录结构
> tree
.
├── actions
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-38.pyc
│ │ └── actions.cpython-38.pyc
│ └── actions.py
├── config.yml
├── credentials.yml
├── data
│ ├── nlu.yml
│ ├── rules.yml
│ └── stories.yml
├── domain.yml
├── endpoints.yml
├── models
│ └── 20230404-114314-gilded-tower.tar.gz
└── tests
└── test_stories.yml
可以看到大部分都是 yml 格式的配置文件,具体每个配置文件的左右后面再一一测试。
但是里面有些文件是不需要加入 git 代码管理的,具体参考:Rasa 项目的 gitignore 配置
rasa init 报错
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
解决方法:
pip3 install pyopenssl --upgrade
Rasa 有哪些替代品
- Microsoft Bot Framework/LUIS:一个微软的对话管理平台,提供了 Bot Builder SDK 和 Bot Framework Emulator 等工具,可以让开发人员构建聊天机器人,并将其集成到多个渠道中。
- Dialogflow:一个 Google 的自然语言处理平台,可以帮助开发人员构建智能聊天机器人,并与多种平台进行集成,例如 Google Assistant、Facebook Messenger、Slack 等等。
- IBM Watson Assistant:IBM 的人工智能平台,提供了多种工具和 API,可以帮助开发人员构建智能聊天机器人,并将其部署到多个渠道中。
- Botpress:一个开源的聊天机器人框架,提供了丰富的工具和组件,可以帮助开发人员快速构建和部署聊天机器人。
- Wit.ai:一个 Facebook 的自然语言处理平台,提供了多种 API 和工具,可以帮助开发人员构建智能聊天机器人,并将其集成到多种平台中。
Rasa 支持从这些平台迁移/导入配置的工具。
Rasa 的优势是,运行在本机,不需要远程调用三方平台的接口,另外也不用担心这些三方服务被裁撤,及乱收费问题。
查看合集
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式