开源对话机器人框架 Rasa (一):安装

文章目录

    需求是实现一个特定领域的问答功能,交互模式类似跟 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 中文对话机器人

    基于 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 的优势是,运行在本机,不需要远程调用三方平台的接口,另外也不用担心这些三方服务被裁撤,及乱收费问题。

    ImportError: cannot import name ‘CLOSED’ from ‘websockets.connection’

    > conda list | grep websockets                                                                                             (rasa) websockets                15.0.1                   pypi_0    pypi
    
    > conda list | grep sanic                                                                                                  (rasa) sanic                     21.12.2                  pypi_0    pypi
    sanic-cors                2.0.1                    pypi_0    pypi
    sanic-jwt                 1.8.0                    pypi_0    pypi
    sanic-routing             0.7.2                    pypi_0    pypi
    

    降级 websockets 版本

    pip3 install websockets==10.4
    

    查看合集

    📖 对话机器人 Rasa 中文系列教程

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式