Официальное руководство Rasa Руководство пользователя

NLP

Эта статья представляет собой простой перевод документации официального сайта Rasa для ежедневного просмотра.

Адрес документа официального сайта:Документация Раса

1. Руководство пользователя

Установить

Рекомендуется пройтиpipКоманда для установки Rasa

pip install rasa-x --extra-index-url https://pypi.rasa.com/simple

Эта команда установитRasaиRasa X. Если вы не хотите использоватьRasa X,использоватьpip install rasaПросто замените его. Если у вас еще не установлены numpy и scipy, мы настоятельно рекомендуем вам установить и использоватьAnaconda.

Если вы хотите использовать разрабатываемую версию Rasa, вы можете получить ее на GitHub:

git clone https://github.com/RasaHQ/rasa.git
cd rasa
pip install -r requirements.txt
pip install -e .

Предварительные требования для Windows

Убедитесь, что у вас установлен компилятор Microsoft VC++, чтобы python мог скомпилировать любые зависимости. Вы можете получить компилятор из Visual Studio. Загрузите установщик и выберите в списке Инструменты сборки VC++.

NLU Pipeline Dependencies

Rasa NLU имеет различные компоненты для распознавания намерений и сущностей, большинство из которых имеют некоторые дополнительные зависимости.

Когда вы обучаете модель NLU, Rasa проверит, установлены ли все необходимые зависимости, и сообщит вам об их отсутствии. Страница Choose Pipeline поможет вам выбрать, какой канал использовать.

Если вы хотите убедиться, что установлены зависимости для любых компонентов, которые могут вам понадобиться, и вы не возражаете против дополнительных зависимостей, вы можете установить все зависимости с помощью приведенной ниже команды.

pip install -r alt_requirements/requirements_full.txt

Начало работы: использованиеspaCyпредварительно обученный вектор

pretrained_embeddings_spacyКонвейеры объединяют несколько разных библиотек и являются популярным выбором. Для получения дополнительной информации, проверьтеДокументация spaCy. Его можно установить с помощью следующей команды:

pip install rasa[spacy]
python -m spacy download en_core_web_md
python -m spacy link en_core_web_md en

Эта команда устанавливает Rasa NLU вместе со spacy и его англоязычной моделью. Мы рекомендуем использовать последнюю модель среднего размера (_md) вместо наименьшей по умолчанию модели spacy.en_core_web_smМодель. Небольшие модели требуют меньше памяти для запуска, но иногда снижают производительность классификации по намерениям.

Первый вариант: Tensorflow

чтобы использоватьsupervised_embeddingsсантехника, которую необходимо установитьtensorflow, для достижения распознавания сущности необходимо установитьsklearn-crfsuiteбиблиотека. Выполните следующую команду:

pip install rasa

Второй вариант: МИТИЕ

использование серверной частиMITIEБольше подходит для небольших наборов данных, если у вас есть сотни примеров, время обучения может быть больше. Мы можем отказаться от поддержки MITIE в будущем. Первый забег:

pip install git+https://github.com/mit-nlp/MITIE.git
pip install rasa[mitie]

Скачать файл модели MITIEtotal_word_feature_extractor.dat.

Полный конвейер MITIE:

language: "en"

pipeline:
- name: "MitieNLP"
  model: "data/total_word_feature_extractor.dat"
- name: "MitieTokenizer"
- name: "MitieEntityExtractor"
- name: "EntitySynonymMapper"
- name: "RegexFeaturizer"
- name: "MitieFeaturizer"
- name: "SklearnIntentClassifier"

Обучение только с MITIE может быть медленным, но вы можете использовать следующую конфигурацию:

language: "en"

pipeline:
- name: "MitieNLP"
  model: "data/total_word_feature_extractor.dat"
- name: "MitieTokenizer"
- name: "MitieEntityExtractor"
- name: "EntitySynonymMapper"
- name: "RegexFeaturizer"
- name: "MitieIntentClassifier"

Учебник Расы

На этой странице описаны основы использования помощника по сборке Rasa и показана структура проекта Rasa. Вы можете протестировать его здесь, ничего не устанавливая. Вы также можете установить Rasa и сделать это из командной строки.

  1. Создать новый проект
  2. Просмотр данных обучения NLU
  3. Определить конфигурацию модели
  4. Напишите свои первые рассказы
  5. определить домен
  6. Обучите модель
  7. Поговорите со своим помощником

В этом уроке вы создадите простого и дружелюбного помощника, который спросит вас, что вы делаете, и отправит вам забавную картинку, чтобы подбодрить вас.

1. Создайте новый проект

Первый шаг — создать новый проект Rasa и запустить:

rasa init --no-prompt

rasa initКоманда создает все файлы, необходимые для проекта Rasa, и обучает простого бота на некоторых образцах данных. если опущено--no-promptфлаг, задаст несколько вопросов о том, как вы хотите настроить свой проект. Будут созданы следующие файлы:

документ значение
__init__py Пустой файл, чтобы помочь python найти действия
actions.py Код для пользовательских действий
config.yml‘*’ Конфигурация моделей NLU и Core
credentials.yml Детали подключения к другим сервисам
data/nlu.md‘*’ Данные обучения НЛУ
data/stories.md‘*’ stories
domain.yml‘*’ домен помощника
endpoints.yml Детали канала связи
model/<timestamp>.tar.gz Инициализировать модель

отметка‘*’являются важными документами.

2. Просмотр данных тренировки

Первая часть помощника Rasa — это модель NLU. NLU расшифровывается как Natural Language Understanding, что означает преобразование пользовательских сообщений в структурированные данные. Чтобы сделать это с Rasa, вам нужно предоставить обучающие примеры того, как Rasa должен понимать сообщения пользователей, а затем обучить модель, показав им эти примеры.

## intent:greet
- hey
- hello
- hi
- good morning
- good evening
- hey there

## intent:goodbye
- bye
- goodbye
- see you around
- see you later

от##Строки в начале определяют имена намерений, которые представляют собой группы сообщений с одинаковым значением. Когда ваш пользователь отправляет новое невидимое сообщение помощнику, задача Расы будет заключаться в том, чтобы предсказать правильное намерение. Подробную информацию о формате данных можно найти в разделе «Формат данных для обучения».

3. Определите конфигурацию вашей модели

Файл конфигурации определяет компоненты NLU и Core, которые будет использовать модель. В этом примере ваша модель NLU будет использовать конвейер supervisord_embeddings. Вы можете узнать о различных конвейерах NLU здесь. Давайте посмотрим на файл конфигурации вашей модели:

cat config.yml

Конфигурация выглядит следующим образом:

# Configuration for Rasa NLU.
# https://rasa.com/docs/rasa/nlu/components/
language: en
pipeline: supervised_embeddings

# Configuration for Rasa Core.
# https://rasa.com/docs/rasa/core/policies/
policies:
  - name: MemoizationPolicy
  - name: KerasPolicy
  - name: MappingPolicy

ключевые словаlanguageиpipelineУказывает, как строится модель NLU.policyОпределяет информацию о принятии решения, используемую базовой моделью.

4. Напишите свои первые истории

На этом этапе вы учите своего помощника отвечать на ваши сообщения, что называетсяУправление диалогом, обрабатываемый вашей базовой моделью. Базовая модель учится на реальных разговорных данных в виде обучающих «историй». Истории — это настоящие разговоры между пользователями и помощниками. Строки с намерениями и сущностями отражают ввод пользователя, а имя действия показывает ответ, который должен дать помощник.

Ниже приведен пример простого разговора. Пользователь здоровается, а помощник отвечает приветствием. Вот как это выглядит в рассказе:

## story1
* greet
   - utter_greet

от-Строка в начале — это действие, предпринятое помощником. В этом руководстве все наши действия представляют собой сообщения, отправляемые обратно пользователю, напримерutter_greet, но в целом действия могут делать что угодно, в том числе вызывать API и взаимодействовать с внешним миром.

Запустите следующую командную строку, чтобы увидетьdata/stories.mdПример:

## happy path
* greet
  - utter_greet
* mood_great
  - utter_happy

## sad path 1
* greet
  - utter_greet
* mood_unhappy
  - utter_cheer_up
  - utter_did_that_help
* affirm
  - utter_happy

5. Определите домен

domain определяет домен, в котором находится ваш помощник: какой пользовательский ввод он должен получать, какие действия должен предсказывать, как реагировать и какую информацию хранить. Домен нашего помощника сохранен в файле с именемdomain.ymlв файле:

intents:
  - greet
  - goodbye
  - affirm
  - deny
  - mood_great
  - mood_unhappy

actions:
- utter_greet
- utter_cheer_up
- utter_did_that_help
- utter_happy
- utter_goodbye

templates:
  utter_greet:
  - text: "Hey! How are you?"

  utter_cheer_up:
  - text: "Here is something to cheer you up:"
    image: "https://i.imgur.com/nGF1K8f.jpg"

  utter_did_that_help:
  - text: "Did that help you?"
название значение
intents things you expect users to say
actions things your assistant can do and say
templates template strings for the things your assistant can say

Как это сочетается? Задача Rasa Core — выбрать правильное действие для выполнения на каждом этапе разговора. В этом случае наше действие состоит в том, чтобы просто отправить сообщение пользователю, и эти простые действия произнесения находятся в домене, начинающемся сutter_начало действия. Помощник ответит на сообщение согласно шаблону в разделе Шаблоны. См. Пользовательские действия, чтобы создать действия, которые делают больше, чем просто отправка сообщения.

6. Обучите модель

Всякий раз, когда мы добавляем новые данные NLU или Core или обновляем домен или конфигурацию, нам нужно переобучить нейронную сеть на наших примерах историй и данных NLU. Для этого выполните следующую команду. Эта команда вызовет обучающие функции Rasa Core и NLU и сохранит обученную модель в каталоге models/. Если данные или конфигурация изменятся, команда автоматически переобучит только разные части модели.

rasa train

rasa trainКоманда будет искать данные NLU и Core и обучать комбинированную модель.

7. Поговорите со своим помощником

Поздравляем! ? Вы только что создали помощника, полностью основанного на машинном обучении. Следующий шаг — попробовать! Если вы следуете этому руководству на локальном компьютере, поговорите с помощником, запустив:

rasa shell

Вы также можете использовать Rasa X, чтобы собирать больше разговоров и улучшать помощника.

Интерфейс командной строки

шпаргалка

Интерфейс командной строки (CLI) предоставляет вам простые для запоминания команды для распространенных задач.

Заказ эффект
rasa_init Создайте новый проект с примерами обучающих данных, действий и файлов конфигурации.
rasa_train Обучите модель, используя данные и истории NLU, сохраните модель в./modelsсередина
rasa interactive Начните новый сеанс интерактивного обучения, пообщавшись в чате, чтобы создать новые обучающие данные.
rasa shell Загрузите обученную модель, поговорите с ассистентом через командную строку
rasa run Запустите службу Rasa с обученной моделью
rasa run actions Запустите сервер действий с помощью Rasa SDK.
rasa visualize истории визуализации
rasa test Протестируйте обученную модель Rasa с помощью тестовых данных и историй NLU.
rasa data split nlu Выполнить разделение данных NLU на основе указанного процента
rasa data convert nlu Преобразование данных обучения NLU между различными форматами
rasa x Запустите Rasa X локально
rasa -h показать все доступные команды

Создать новый проект

Всего одна команда создает полный проект с некоторыми примерами обучающих данных.

rasa init

Содержит следующие файлы:

.
├── __init__.py
├── actions.py
├── config.yml
├── credentials.yml
├── data
│   ├── nlu.md
│   └── stories.md
├── domain.yml
├── endpoints.yml
└── models
    └── <timestamp>.tar.gz

rasa initКоманда спросит, хотите ли вы обучить начальную модель с данными, если вы ответите «нет», каталог модели будет пуст.

Обучите модель

Заказ:

rasa train

Эта команда обучает модель Rasa, которая объединяет модели Rasa NLU и Rasa Core. Если вы просто хотите обучить модель NLU или Core, вы можете запуститьrasa train nluилиrasa train core. Однако Rasa автоматически пропустит обучение Core или NLU, если обучающие данные и конфигурация не изменились.

rasa trianСохраните обученную модель в--outпод указанную цель. Имя модели по умолчанию<timestamp>.tar.gz. Если вы хотите назвать свое имя, вы можете передать--fixed-model-nameуказать.

Для настройки процесса обучения можно использовать следующие параметры:

usage: rasa train [-h] [-v] [-vv] [--quiet] [--data DATA [DATA ...]]
                  [-c CONFIG] [-d DOMAIN] [--out OUT]
                  [--augmentation AUGMENTATION] [--debug-plots]
                  [--dump-stories] [--fixed-model-name FIXED_MODEL_NAME]
                  [--force]
                  {core,nlu} ...

positional arguments:
  {core,nlu}
    core                Trains a Rasa Core model using your stories.
    nlu                 Trains a Rasa NLU model using your NLU data.

optional arguments:
  -h, --help            show this help message and exit
  --data DATA [DATA ...]
                        Paths to the Core and NLU data files. (default:
                        ['data'])
  -c CONFIG, --config CONFIG
                        The policy and NLU pipeline configuration of your bot.
                        (default: config.yml)
  -d DOMAIN, --domain DOMAIN
                        Domain specification (yml file). (default: domain.yml)
  --out OUT             Directory where your models should be stored.
                        (default: models)
  --augmentation AUGMENTATION
                        How much data augmentation to use during training.
                        (default: 50)
  --debug-plots         If enabled, will create plots showing checkpoints and
                        their connections between story blocks in a file
                        called `story_blocks_connections.html`. (default:
                        False)
  --dump-stories        If enabled, save flattened stories to a file.
                        (default: False)
  --fixed-model-name FIXED_MODEL_NAME
                        If set, the name of the model file/directory will be
                        set to the given name. (default: None)
  --force               Force a model training even if the data has not
                        changed. (default: False)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

использоватьrasa trainПри подаче команды на обучение модели убедитесь, что существуют обучающие данные для Core и NLU. Если имеется только один тип модели обучающих данных, команда автоматически вернется кrasa train nluилиrasa train core.

интерактивное обучение

Чтобы начать сеанс интерактивного обучения с помощником, запустите:

rasa interactive

При использовании--modelПараметр задает обучающую модель, затем интерактивный процесс обучения запускается с использованием предоставленной модели. Если модель не указана,rasa interactiveбудет обучать новую модель Rasa, если никакой другой каталог не передан--dataфлаг, его данные находятся вdata /середина. После обучения исходной модели начинается интерактивный сеанс обучения. Если данные обучения и конфигурация не изменились, обучение будет пропущено.

rasa interactiveСписок всех параметров выглядит следующим образом:

usage: rasa interactive [-h] [-v] [-vv] [--quiet] [-m MODEL]
                        [--data DATA [DATA ...]] [--skip-visualization]
                        [--endpoints ENDPOINTS] [-c CONFIG] [-d DOMAIN]
                        [--out OUT] [--augmentation AUGMENTATION]
                        [--debug-plots] [--dump-stories] [--force]
                        {core} ... [model-as-positional-argument]

positional arguments:
  {core}
    core                Starts an interactive learning session model to create
                        new training data for a Rasa Core model by chatting.
                        Uses the 'RegexInterpreter', i.e. `/<intent>` input
                        format.
  model-as-positional-argument
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: None)

optional arguments:
  -h, --help            show this help message and exit
  -m MODEL, --model MODEL
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: None)
  --data DATA [DATA ...]
                        Paths to the Core and NLU data files. (default:
                        ['data'])
  --skip-visualization  Disable plotting the visualization during interactive
                        learning. (default: False)
  --endpoints ENDPOINTS
                        Configuration file for the model server and the
                        connectors as a yml file. (default: None)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Train Arguments:
  -c CONFIG, --config CONFIG
                        The policy and NLU pipeline configuration of your bot.
                        (default: config.yml)
  -d DOMAIN, --domain DOMAIN
                        Domain specification (yml file). (default: domain.yml)
  --out OUT             Directory where your models should be stored.
                        (default: models)
  --augmentation AUGMENTATION
                        How much data augmentation to use during training.
                        (default: 50)
  --debug-plots         If enabled, will create plots showing checkpoints and
                        their connections between story blocks in a file
                        called `story_blocks_connections.html`. (default:
                        False)
  --dump-stories        If enabled, save flattened stories to a file.
                        (default: False)
  --force               Force a model training even if the data has not
                        changed. (default: False)

Поговорите со своим помощником

Используйте следующую команду:

rasa shell

Модель, которая должна использоваться для взаимодействия с роботом, может быть определена следующим образом:--modelуказано. Если вы запускаете оболочку с моделью только для NLU, тоrasa shellПозволяет вам получать намерения и сущности для любого текста, который вы вводите в командной строке. Если ваша модель включает в себя обученную базовую модель, вы можете пообщаться с ботом и посмотреть, что он предскажет дальше. Если вы уже обучили комбинированную модель Rasa, но хотите увидеть намерения и сущности, которые модель извлекает из текста, вы можете использовать команду令rasa shell nlu.

Чтобы увеличить уровень ведения журнала для отладки, запустите:

rasa shell --debug

rasa shellСписок всех опций выглядит следующим образом:

usage: rasa shell [-h] [-v] [-vv] [--quiet] [-m MODEL] [--log-file LOG_FILE]
                  [--endpoints ENDPOINTS] [-p PORT] [-t AUTH_TOKEN]
                  [--cors [CORS [CORS ...]]] [--enable-api]
                  [--remote-storage REMOTE_STORAGE]
                  [--credentials CREDENTIALS] [--connector CONNECTOR]
                  [--jwt-secret JWT_SECRET] [--jwt-method JWT_METHOD]
                  {nlu} ... [model-as-positional-argument]

positional arguments:
  {nlu}
    nlu                 Interprets messages on the command line using your NLU
                        model.
  model-as-positional-argument
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: None)

optional arguments:
  -h, --help            show this help message and exit
  -m MODEL, --model MODEL
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: models)
  --log-file LOG_FILE   Store logs in specified file. (default: None)
  --endpoints ENDPOINTS
                        Configuration file for the model server and the
                        connectors as a yml file. (default: None)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Server Settings:
  -p PORT, --port PORT  Port to run the server at. (default: 5005)
  -t AUTH_TOKEN, --auth-token AUTH_TOKEN
                        Enable token based authentication. Requests need to
                        provide the token to be accepted. (default: None)
  --cors [CORS [CORS ...]]
                        Enable CORS for the passed origin. Use * to whitelist
                        all origins. (default: None)
  --enable-api          Start the web server API in addition to the input
                        channel. (default: False)
  --remote-storage REMOTE_STORAGE
                        Set the remote location where your Rasa model is
                        stored, e.g. on AWS. (default: None)

Channels:
  --credentials CREDENTIALS
                        Authentication credentials for the connector as a yml
                        file. (default: None)
  --connector CONNECTOR
                        Service to connect to. (default: None)

JWT Authentication:
  --jwt-secret JWT_SECRET
                        Public key for asymmetric JWT methods or shared
                        secretfor symmetric methods. Please also make sure to
                        use --jwt-method to select the method of the
                        signature, otherwise this argument will be ignored.
                        (default: None)
  --jwt-method JWT_METHOD
                        Method used for the signature of the JWT
                        authentication payload. (default: HS256)

запустить сервер

Чтобы запустить сервер с моделью Rasa, запустите:

rasa run

Следующие параметры можно использовать для настройки сервера Rasa.

usage: rasa run [-h] [-v] [-vv] [--quiet] [-m MODEL] [--log-file LOG_FILE]
                [--endpoints ENDPOINTS] [-p PORT] [-t AUTH_TOKEN]
                [--cors [CORS [CORS ...]]] [--enable-api]
                [--remote-storage REMOTE_STORAGE] [--credentials CREDENTIALS]
                [--connector CONNECTOR] [--jwt-secret JWT_SECRET]
                [--jwt-method JWT_METHOD]
                {actions} ... [model-as-positional-argument]

positional arguments:
  {actions}
    actions             Runs the action server.
  model-as-positional-argument
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: None)

optional arguments:
  -h, --help            show this help message and exit
  -m MODEL, --model MODEL
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: models)
  --log-file LOG_FILE   Store logs in specified file. (default: None)
  --endpoints ENDPOINTS
                        Configuration file for the model server and the
                        connectors as a yml file. (default: None)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Server Settings:
  -p PORT, --port PORT  Port to run the server at. (default: 5005)
  -t AUTH_TOKEN, --auth-token AUTH_TOKEN
                        Enable token based authentication. Requests need to
                        provide the token to be accepted. (default: None)
  --cors [CORS [CORS ...]]
                        Enable CORS for the passed origin. Use * to whitelist
                        all origins. (default: None)
  --enable-api          Start the web server API in addition to the input
                        channel. (default: False)
  --remote-storage REMOTE_STORAGE
                        Set the remote location where your Rasa model is
                        stored, e.g. on AWS. (default: None)

Channels:
  --credentials CREDENTIALS
                        Authentication credentials for the connector as a yml
                        file. (default: None)
  --connector CONNECTOR
                        Service to connect to. (default: None)

JWT Authentication:
  --jwt-secret JWT_SECRET
                        Public key for asymmetric JWT methods or shared
                        secretfor symmetric methods. Please also make sure to
                        use --jwt-method to select the method of the
                        signature, otherwise this argument will be ignored.
                        (default: None)
  --jwt-method JWT_METHOD
                        Method used for the signature of the JWT
                        authentication payload. (default: HS256)

Запустить сервер действий

Запустите с помощью следующей команды:

rasa run actions

Для настройки параметров сервера можно использовать следующие параметры:

usage: rasa run actions [-h] [-v] [-vv] [--quiet] [-p PORT]
                        [--cors [CORS [CORS ...]]] [--actions ACTIONS]

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  port to run the server at (default: 5055)
  --cors [CORS [CORS ...]]
                        enable CORS for the passed origin. Use * to whitelist
                        all origins (default: None)
  --actions ACTIONS     name of action package to be loaded (default: None)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Визуализируйте свои истории

rasa visualize

Обычно обучаемые истории располагаются по адресуdataКаталог виден. Как ваши истории хранятся в другом месте, используя--storiesУкажите их местонахождение.

Параметры следующие:

usage: rasa visualize [-h] [-v] [-vv] [--quiet] [-d DOMAIN] [-s STORIES]
                      [-c CONFIG] [--out OUT] [--max-history MAX_HISTORY]
                      [-u NLU]

optional arguments:
  -h, --help            show this help message and exit
  -d DOMAIN, --domain DOMAIN
                        Domain specification (yml file). (default: domain.yml)
  -s STORIES, --stories STORIES
                        File or folder containing your training stories.
                        (default: data)
  -c CONFIG, --config CONFIG
                        The policy and NLU pipeline configuration of your bot.
                        (default: config.yml)
  --out OUT             Filename of the output path, e.g. 'graph.html'.
                        (default: graph.html)
  --max-history MAX_HISTORY
                        Max history to consider when merging paths in the
                        output graph. (default: 2)
  -u NLU, --nlu NLU     File or folder containing your NLU data, used to
                        insert example messages into the graph. (default:
                        None)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

создастgraph.htmlФайл находится по текущему пути.

Проверка модели на тестовых данных

бегать:

rasa test

использовать--modelУточните модель. Параметры следующие:

usage: rasa test [-h] [-v] [-vv] [--quiet] [-m MODEL] [-s STORIES]
                 [--max-stories MAX_STORIES] [--e2e] [--endpoints ENDPOINTS]
                 [--fail-on-prediction-errors] [--url URL]
                 [--evaluate-model-directory] [-u NLU] [--out OUT]
                 [--report [REPORT]] [--successes [SUCCESSES]]
                 [--errors ERRORS] [--histogram HISTOGRAM] [--confmat CONFMAT]
                 [-c CONFIG [CONFIG ...]] [--cross-validation] [-f FOLDS]
                 [-r RUNS] [-p PERCENTAGES [PERCENTAGES ...]]
                 {core,nlu} ...

positional arguments:
  {core,nlu}
    core                Tests Rasa Core models using your test stories.
    nlu                 Tests Rasa NLU models using your test NLU data.

optional arguments:
  -h, --help            show this help message and exit
  -m MODEL, --model MODEL
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: models)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Core Test Arguments:
  -s STORIES, --stories STORIES
                        File or folder containing your test stories. (default:
                        data)
  --max-stories MAX_STORIES
                        Maximum number of stories to test on. (default: None)
  --e2e, --end-to-end   Run an end-to-end evaluation for combined action and
                        intent prediction. Requires a story file in end-to-end
                        format. (default: False)
  --endpoints ENDPOINTS
                        Configuration file for the connectors as a yml file.
                        (default: None)
  --fail-on-prediction-errors
                        If a prediction error is encountered, an exception is
                        thrown. This can be used to validate stories during
                        tests, e.g. on travis. (default: False)
  --url URL             If supplied, downloads a story file from a URL and
                        trains on it. Fetches the data by sending a GET
                        request to the supplied URL. (default: None)
  --evaluate-model-directory
                        Should be set to evaluate models trained via 'rasa
                        train core --config <config-1> <config-2>'. All models
                        in the provided directory are evaluated and compared
                        against each other. (default: False)

NLU Test Arguments:
  -u NLU, --nlu NLU     File or folder containing your NLU data. (default:
                        data)
  --out OUT             Output path for any files created during the
                        evaluation. (default: results)
  --report [REPORT]     Output path to save the intent/entity metrics report.
                        (default: None)
  --successes [SUCCESSES]
                        Output path to save successful predictions. (default:
                        None)
  --errors ERRORS       Output path to save model errors. (default:
                        errors.json)
  --histogram HISTOGRAM
                        Output path for the confidence histogram. (default:
                        hist.png)
  --confmat CONFMAT     Output path for the confusion matrix plot. (default:
                        confmat.png)
  -c CONFIG [CONFIG ...], --config CONFIG [CONFIG ...]
                        Model configuration file. If a single file is passed
                        and cross validation mode is chosen, cross-validation
                        is performed, if multiple configs or a folder of
                        configs are passed, models will be trained and
                        compared directly. (default: None)

Данные тренировки Split Train TestЧтобы выполнить разделение данных NLU, запустите:

rasa data split nlu

Вы можете указать тренировочные данные, выходной каталог и т. д. Параметры следующие:

usage: rasa data split nlu [-h] [-v] [-vv] [--quiet] [-u NLU]
                           [--training-fraction TRAINING_FRACTION] [--out OUT]

optional arguments:
  -h, --help            show this help message and exit
  -u NLU, --nlu NLU     File or folder containing your NLU data. (default:
                        data)
  --training-fraction TRAINING_FRACTION
                        Percentage of the data which should be in the training
                        data. (default: 0.8)
  --out OUT             Directory where the split files should be stored.
                        (default: train_test_split)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Эта команда попытается сохранить одинаковую пропорцию намерений при обучении и тестировании.

Преобразование данных между Markdown и JSON

Чтобы преобразовать данные NLU из формата данных LUIS, формата данных WIT, формата данных Dialogflow, JSON или Markdown в JSON или Markdown, запустите:

rasa data convert nlu

Вы можете указать входной файл, выходной файл, выходной формат и т. д. Параметры следующие:

usage: rasa data convert nlu [-h] [-v] [-vv] [--quiet] --data DATA --out OUT
                             [-l LANGUAGE] -f {json,md}

optional arguments:
  -h, --help            show this help message and exit
  --data DATA           Path to the file or directory containing Rasa NLU
                        data. (default: None)
  --out OUT             File where to save training data in Rasa format.
                        (default: None)
  -l LANGUAGE, --language LANGUAGE
                        Language of data. (default: en)
  -f {json,md}, --format {json,md}
                        Output format the training data should be converted
                        into. (default: None)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Начать Раса X

Rasa X — это инструмент, который помогает создавать/улучшать и развертывать помощников ИИ на базе платформы Rasa. ты сможешьздесьУзнайте больше об этом.

Вы можете запустить Rasa X локально, выполнив:

rasa x

Чтобы иметь возможность запустить Rasa X, вам нужно установить Rasa X, вам нужно зайти в проект Rasa.

по умолчанию,Rasa Xв порту5002запускать на. Использовать параметры--rasa-x-portЕго можно изменить на любой другой порт.

Для rasa x доступны следующие параметры:

usage: rasa x [-h] [-v] [-vv] [--quiet] [-m MODEL] [--data DATA] [--no-prompt]
              [--production] [--rasa-x-port RASA_X_PORT] [--log-file LOG_FILE]
              [--endpoints ENDPOINTS] [-p PORT] [-t AUTH_TOKEN]
              [--cors [CORS [CORS ...]]] [--enable-api]
              [--remote-storage REMOTE_STORAGE] [--credentials CREDENTIALS]
              [--connector CONNECTOR] [--jwt-secret JWT_SECRET]
              [--jwt-method JWT_METHOD]

optional arguments:
  -h, --help            show this help message and exit
  -m MODEL, --model MODEL
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: models)
  --data DATA           Path to the file or directory containing stories and
                        Rasa NLU data. (default: data)
  --no-prompt           Automatic yes or default options to prompts and
                        oppressed warnings. (default: False)
  --production          Run Rasa X in a production environment. (default:
                        False)
  --rasa-x-port RASA_X_PORT
                        Port to run the Rasa X server at. (default: 5002)
  --log-file LOG_FILE   Store logs in specified file. (default: None)
  --endpoints ENDPOINTS
                        Configuration file for the model server and the
                        connectors as a yml file. (default: None)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Server Settings:
  -p PORT, --port PORT  Port to run the server at. (default: 5005)
  -t AUTH_TOKEN, --auth-token AUTH_TOKEN
                        Enable token based authentication. Requests need to
                        provide the token to be accepted. (default: None)
  --cors [CORS [CORS ...]]
                        Enable CORS for the passed origin. Use * to whitelist
                        all origins. (default: None)
  --enable-api          Start the web server API in addition to the input
                        channel. (default: False)
  --remote-storage REMOTE_STORAGE
                        Set the remote location where your Rasa model is
                        stored, e.g. on AWS. (default: None)

Channels:
  --credentials CREDENTIALS
                        Authentication credentials for the connector as a yml
                        file. (default: None)
  --connector CONNECTOR
                        Service to connect to. (default: None)

JWT Authentication:
  --jwt-secret JWT_SECRET
                        Public key for asymmetric JWT methods or shared
                        secretfor symmetric methods. Please also make sure to
                        use --jwt-method to select the method of the
                        signature, otherwise this argument will be ignored.
                        (default: None)
  --jwt-method JWT_METHOD
                        Method used for the signature of the JWT
                        authentication payload. (default: HS256)

Рамка

обработка сообщений

На этой диаграмме показаны основные этапы реакции помощника, созданного с помощью Rasa, на сообщение:

Действуйте следующим образом:

  1. Сообщение принимается и передается интерпретатору, который превращает его в словарь, содержащий исходный текст, намерение и любые найденные объекты. Эта часть обрабатывается NLU.
  2. Trackerэто объект, который отслеживает состояние диалога. Он получает информацию по мере поступления новых сообщений.
  3. Прием полисаTrackerтекущее состояние о.
  4. Политика выбирает, какие действия предпринять дальше.
  5. Выбранное действие выполняетсяTrackerзаписывать.
  6. Ответ отправляется пользователю.

Сообщение может быть текстом, введенным человеком, или структурированным вводом, таким как нажатие кнопки.

Сообщения и голосовые каналы

Если вы тестируете на локальном компьютере (не на сервере), вам нужно использоватьngrok. Это даст вашей машине доменное имяFacebook, Slack等Знайте, куда отправляются сообщения для достижения вашего локального компьютера.

Чтобы ваш помощник был доступен на платформе обмена сообщениями, вам необходимоcredentials.ymlУчетные данные указаны в файле. бегатьrasa initсоздает образец файла, поэтому проще всего отредактировать файл и добавить туда свои учетные данные . Вот пример учетных данных Facebook:

facebook:
  verify: "rasa-bot"
  secret: "3e34709d01ea89032asdebfe5a74518"
  page-access-token: "EAAbHPa7H9rEBAAuFk4Q3gPKbDedQnx4djJJ1JmQ7CAqO4iJKrQcNT0wtD"

Модель оценки

Оцените модели NLU

Используйте следующую команду, чтобы разделить данные обучения и тестирования NLU:

rasa data split nlu

Используйте модель NLU для прогнозирования тестового примера:

rasa test nlu -u test_set.md --model models/nlu-xxx.tar.gz

Если вы не хотите создавать отдельный набор тестов, вы все равно можете использовать перекрестную проверку, чтобы оценить, насколько хорошо оптимизирована ваша модель. Для этого добавьте флаг--cross-validation:

rasa test nlu -u data/nlu.md --config config.yml --cross-validation

Полный список опций для этого скрипта выглядит следующим образом:

usage: rasa test nlu [-h] [-v] [-vv] [--quiet] [-m MODEL] [-u NLU] [--out OUT]
                     [--report [REPORT]] [--successes [SUCCESSES]]
                     [--errors ERRORS] [--histogram HISTOGRAM]
                     [--confmat CONFMAT] [-c CONFIG [CONFIG ...]]
                     [--cross-validation] [-f FOLDS] [-r RUNS]
                     [-p PERCENTAGES [PERCENTAGES ...]]

optional arguments:
  -h, --help            show this help message and exit
  -m MODEL, --model MODEL
                        Path to a trained Rasa model. If a directory is
                        specified, it will use the latest model in this
                        directory. (default: models)
  -u NLU, --nlu NLU     File or folder containing your NLU data. (default:
                        data)
  --out OUT             Output path for any files created during the
                        evaluation. (default: results)
  --report [REPORT]     Output path to save the intent/entity metrics report.
                        (default: None)
  --successes [SUCCESSES]
                        Output path to save successful predictions. (default:
                        None)
  --errors ERRORS       Output path to save model errors. (default:
                        errors.json)
  --histogram HISTOGRAM
                        Output path for the confidence histogram. (default:
                        hist.png)
  --confmat CONFMAT     Output path for the confusion matrix plot. (default:
                        confmat.png)
  -c CONFIG [CONFIG ...], --config CONFIG [CONFIG ...]
                        Model configuration file. If a single file is passed
                        and cross validation mode is chosen, cross-validation
                        is performed, if multiple configs or a folder of
                        configs are passed, models will be trained and
                        compared directly. (default: None)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Cross Validation:
  --cross-validation    Switch on cross validation mode. Any provided model
                        will be ignored. (default: False)
  -f FOLDS, --folds FOLDS
                        Number of cross validation folds (cross validation
                        only). (default: 10)

Comparison Mode:
  -r RUNS, --runs RUNS  Number of comparison runs to make. (default: 3)
  -p PERCENTAGES [PERCENTAGES ...], --percentages PERCENTAGES [PERCENTAGES ...]
                        Percentages of training data to exclude during
                        comparison. (default: [0, 25, 50, 75])

Сравнение конвейеров NLUПередавая несколько конфигураций конвейера (или папок, содержащих их) в CLI, Rasa будет выполнять сравнительные проверки между конвейерами.

rasa test nlu --config pretrained_embeddings_spacy.yml supervised_embeddings.yml
  --nlu data/nlu.md --runs 3 --percentages 0 25 50 70 90

Команда в приведенном выше примере создаст обучающий/тестовый набор из данных, а затем обучит каждый конвейер несколько раз, исключив из обучающего набора 0, 25, 50, 70 и 90 % данных о намерениях. Затем модель оценивается на тестовом наборе, и записываются баллы f1 для каждого процента исключения. Процесс запускается три раза (т. е. всего с 3 наборами тестов), а затем строится график с использованием среднего значения и стандартного отклонения f1-показателей. График f1-score — вместе со всеми наборами обучающих/тестовых данных, обученными моделями, классификацией и отчетами об ошибках будут сохранены в файл с именемnlu_comparison_resultsв папке.

Классификация намерений

Сценарий оценки создаст отчеты, матрицы неточностей и гистограммы достоверности для вашей модели.

В отчете записываются показатели точности, отзыва и f1 для каждого намерения и сущности, а также предоставляется общее среднее значение. ты можешь использовать это--reportпараметр для сохранения этих отчетов в виде файлов JSON.

Матрица путаницы показывает, какие намерения были ошибочно приняты за другие намерения; любые ошибочно предсказанные образцы регистрируются и сохраняются в файле с именемerrors.jsonфайл для упрощения отладки.

Гистограмма, сгенерированная скриптом, позволяет визуализировать распределение достоверности всех прогнозов, при этом количество правильных и неправильных прогнозов отображается синими и красными полосами соответственно. Повышение качества обучающих данных перемещает синие столбцы гистограммы вправо, а красные столбцы гистограммы - влево от графика.

Матрица путаницы создается только при оценке модели на тестовом наборе. В режиме перекрестной проверки матрица путаницы не создается.

признание сущности

CRFEntityExtractor— это единственный экстрактор сущностей, который вы обучили с вашими собственными данными, и, следовательно, единственный экстрактор сущностей, который будет оцениваться. если вы используетеspaCyилиducklingПредварительно обученные экстракторы сущностей Rasa NLU не будут включать их в оценку.

Раса НЛУ сообщитCRFEntityExtractorПоказатели отзыва, точности и f1 для каждого типа объекта, определенного обучением.

оценка объекта

Для оценки извлечения сущностей мы применяем простой подход на основе меток. мы не рассматриваемBILOUтеги и учитывать только тег типа объекта для каждого тега. Для объекта местоположения, такого как «рядом с Александерплац», мы ожидаем метку LOC LOC вместо основанной на BILOU B-LOC L-LOC. Наш метод более снисходителен к оценке, потому что он вознаграждает за частичное извлечение и не наказывает за разделение объекта.

Оцените базовую модель

rasa test core --stories test_stories.md --out results

Выводить неудачные истории вresults/failed_stories.mdсередина. Мы рассматриваем любую историю как неудачную, если хотя бы одно действие предсказано неверно.

Кроме того, это сохраняет матрицу путаницы в файл с именемresults / story_confmat.pdfв файле. Для каждой операции вашего домена матрица путаницы показывает, как часто операция была предсказана правильно и как часто была предсказана неправильная операция.

Список всех опций скрипта выглядит следующим образом:

usage: rasa test core [-h] [-v] [-vv] [--quiet] [-m MODEL [MODEL ...]]
                      [-s STORIES] [--max-stories MAX_STORIES] [--out OUT]
                      [--e2e] [--endpoints ENDPOINTS]
                      [--fail-on-prediction-errors] [--url URL]
                      [--evaluate-model-directory]

optional arguments:
  -h, --help            show this help message and exit
  -m MODEL [MODEL ...], --model MODEL [MODEL ...]
                        Path to a pre-trained model. If it is a 'tar.gz' file
                        that model file will be used. If it is a directory,
                        the latest model in that directory will be used
                        (exception: '--evaluate-model-directory' flag is set).
                        If multiple 'tar.gz' files are provided, all those
                        models will be compared. (default: [None])
  -s STORIES, --stories STORIES
                        File or folder containing your test stories. (default:
                        data)
  --max-stories MAX_STORIES
                        Maximum number of stories to test on. (default: None)
  --out OUT             Output path for any files created during the
                        evaluation. (default: results)
  --e2e, --end-to-end   Run an end-to-end evaluation for combined action and
                        intent prediction. Requires a story file in end-to-end
                        format. (default: False)
  --endpoints ENDPOINTS
                        Configuration file for the connectors as a yml file.
                        (default: None)
  --fail-on-prediction-errors
                        If a prediction error is encountered, an exception is
                        thrown. This can be used to validate stories during
                        tests, e.g. on travis. (default: False)
  --url URL             If supplied, downloads a story file from a URL and
                        trains on it. Fetches the data by sending a GET
                        request to the supplied URL. (default: None)
  --evaluate-model-directory
                        Should be set to evaluate models trained via 'rasa
                        train core --config <config-1> <config-2>'. All models
                        in the provided directory are evaluated and compared
                        against each other. (default: False)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Сравнить политику политики

Выберите конкретную конфигурацию политики или выберите гиперпараметры для конкретной политики, и вам необходимо измерить, насколько хорошо Rasa Core будет обобщать разговоры, которых он никогда раньше не видел. Особенно в начале проекта у вас не так много реальных разговоров, которые можно использовать для обучения бота, поэтому вы не хотите просто выбрасывать некоторые из них для использования в качестве тестового набора.

В Rasa Core есть сценарии, помогающие выбирать и настраивать конфигурацию политик. Когда вы будете удовлетворены, вы можете обучить окончательную конфигурацию на полном наборе данных. Для этого модель должна быть сначала обучена для различных политик. Создайте два (или более) профиля, включая политики для сравнения (каждый из которых содержит только одну политику), затем обучите модель, используя режим сравнения обучающего сценария:

rasa train core -c config_1.yml config_2.yml \
  -d domain.yml -s stories_folder --out comparison_models --runs 3 \
  --percentages 0 5 25 50 70 95

Ниже каждой предоставленной конфигурации политики Rasa Core будет обучаться несколько раз, за ​​исключением 0, 5, 25, 50, 70 и 95% обучающих историй из обучающих данных. Это делается для нескольких прогонов, чтобы обеспечить стабильные результаты.

После завершения обучения оцените:

rasa test core -m comparison_models --stories stories_folder
--out comparison_results --evaluate-model-directory

Это оценит каждую модель в обучающем наборе и нарисует несколько графиков, чтобы показать, какая стратегия работает лучше всего. Оценивая весь набор историй, вы можете измерить прогностический эффект Rasa Core на прогнозирование историй.

Если вы не знаете, какие стратегии сравнивать, рекомендуем попробоватьEmbeddingPolicy``和KerasPolicyчтобы увидеть, какая стратегия подходит именно вам.

Этот процесс обучения может занять много времени, поэтому мы рекомендуем оставить его работающим в фоновом режиме без перерыва.

комплексная оценка

Rasa позволяет вам оценивать разговоры от начала до конца, запускать тестовые разговоры и убедиться, что и NLU, и Core делают правильные прогнозы. Для этого вам понадобятся несколько историй в сквозном формате, который включает в себя вывод NLU и необработанный текст. Вот пример:

## end-to-end story 1
* greet: hello
   - utter_ask_howcanhelp
* inform: show me [chinese](cuisine) restaurants
   - utter_ask_location
* inform: in [Paris](location)
   - utter_ask_price

Если вы сохраните сквозную историю какe2e_stories.mdфайл, вы можете оценить свою модель, запустив:

rasa test --stories e2e_stories.md --e2e

Убедитесь, что файлы модели в модели объединеныCoreиnluМодель. если он не содержитNLUМодель,Coreбудет использовать значение по умолчаниюRegexInterpreter.

Проверьте файлы домена и данных на наличие ошибок

Чтобы проверить наличие ошибок в файлах домена, данных NLU или данных истории, запустите сценарий проверки. Вы можете запустить его с помощью:

rasa data validate

Приведенный выше скрипт выполняет все проверки файла. Вот список опций для скрипта:

usage: rasa data validate [-h] [-v] [-vv] [--quiet] [-d DOMAIN] [--data DATA]

optional arguments:
  -h, --help            show this help message and exit
  -d DOMAIN, --domain DOMAIN
                        Domain specification (yml file). (default: domain.yml)
  --data DATA           Path to the file or directory containing Rasa data.
                        (default: data)

Python Logging Options:
  -v, --verbose         Be verbose. Sets logging level to INFO. (default:
                        None)
  -vv, --debug          Print lots of debugging statements. Sets logging level
                        to DEBUG. (default: None)
  --quiet               Be quiet! Sets logging level to WARNING. (default:
                        None)

Вы также можете импортировать поValidatorкласс для запуска этих проверок, который имеет следующие методы:

  • from_files(): создать экземпляр из файла по строковому пути.
  • verify_intents(): убедитесь, что список намерений в файле домена содержит данные NLU.
  • verify_intents_in_stories(): Проверяйте намерения в историях, проверяйте их правильность.
  • verify_utterances(): Проверяет файл домена на согласованность между шаблоном высказывания и высказываниями, перечисленными в разделе Действия.
  • verify_utterances_in_stories(): проверяет высказывания в историях, проверяя их правильность.
  • verify_all(): Выполните все указанные выше проверки.

Чтобы использовать эти функции, необходимо создать объект Validator и инициализировать регистратор. См. код ниже:

import logging
from rasa import utils
from rasa.core.validator import Validator

logger = logging.getLogger(__name__)

utils.configure_colored_logging('DEBUG')

validator = Validator.from_files(domain_file='domain.yml',
                                 nlu_data='data/nlu_data.md',
                                 stories='data/stories.md')

validator.verify_all()

Running the Server

запустить HTTP-сервер

Простой HTTP-сервер можно запустить, используя обученную модель Rasa для обработки запросов:

rasa run -m models --enable-api --log-file out.log

Все конечные точки, предоставляемые этим API, задокументированы в HTTP API.

  • -m: путь к папке с моделями Rasa
  • --enable-api: enable this additional API
  • --log-file: путь к файлу журнала

Rasa может загрузить вашу модель тремя различными способами:

  • Получить модель с сервера
  • Получить модели из удаленного хранилища (см. Облачное хранилище)
  • из локальной системы хранения через-mЗагрузите указанную модель

Rasa пытается загрузить модели в указанном выше порядке, т. е. если сервер моделей и удаленное хранилище не настроены, он попытается загрузить модели только из локальной системы хранения.

напоминать: Убедитесь, что ваш сервер защищен, ограничив доступ к серверу (например, с помощью брандмауэра) или включив методы аутентификации: Вопросы безопасности.

Примечание:

  • При использовании настраиваемого действия убедитесь, что сервер действий запущен (см. Запуск сервера действий). Если ваше действие выполняется на другом компьютере или вы не используетеRasa SDK, обязательно обновитеendpoints.ymlдокумент.
  • Если вы запускаете сервер с моделью только NLU, вы не можете вызывать все доступные конечные точки. Обратите внимание, что некоторые конечные точки будут возвращать код состояния 409, поскольку для обработки запроса требуется обученная базовая модель.

Получить модель с сервера

HTTP-сервер можно настроить для получения моделей с других URL-адресов:

rasa run --enable-api --log-file out.log --endpoints my_endpoints.yml

Сервер модели настроен в конечной точке (my_endpoints.yml), где вы можете указать URL-адрес сервера, на котором Rasa периодически запрашивает сжатые модели Rasa:

models:
  url: http://my-server.com/models/default@latest
  wait_time_between_pulls: 10   # [optional](default: 100)

Примечание Если вы хотите получить модель с сервера только один раз, используйтеwait_time_between_pullsУстановить какNone.

Примечание Ваш сервер моделей должен обслуживать сжатую модель Rasa и размещать{“ETag”:<model_hash_string>}как один из его заголовков. Rasa будет загружать новые модели только в том случае, если хэш этой модели изменится.

Пример запроса, который Rasa может отправить серверу вашей модели, выглядит следующим образом:

curl --header "If-None-Match: d41d8cd98f00b204e9800998ecf8427e" http://my-server.com/models/default@latest

Получить модель из удаленного хранилища

Сервер Rasa можно настроить для извлечения моделей из удаленного хранилища:

rasa run -m 20190506-100418.tar.gz --enable-api --log-file out.log --remote-storage aws

Модель будет загружена и сохранена во временном каталоге в локальной системе хранения.

Вопросы безопасности

Мы рекомендуем не открывать сервер Rasa внешнему миру, а подключаться к нему из бэкенда через выделенное соединение (например, между контейнерами докеров). Однако есть два встроенных метода аутентификации:

  • Аутентификация на основе токенов: Используется при запуске сервера--auth-token thisismysecretПередайте токен:
    rasa run \
    -m models \
    --enable-api \
    --log-file out.log \
    --auth-token thisismysecret
    
    Запрос должен передать токен, который в нашем случаеthisismysecret, как параметр:
     curl -XGET localhost:5005/conversations/default/tracker?token=thisismysecret
    
  • Аутентификация на основе JWT: использовать--jwt-secret thisismysecretВключите аутентификацию на основе JWT. Запросы к серверу должны использовать этот ключ иHS256 алгоритмически подписанныхAuthorizationДействительный токен JWT включен в заголовок. Пользователь должен иметьusernameиroleАтрибуты. если рольadmin, вы можете получить доступ ко всем конечным точкам. еслиroleдаuser, тогда толькоsender_idДоступ доступен только в том случае, если он соответствует имени пользователя пользователя.sender_idКонечная точка параметра.
    rasa run \
    -m models \
    --enable-api \
    --log-file out.log \
    --jwt-secret thisismysecret
    
    В запросе должны быть установлены правильные заголовки JWT:
    "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ"
                 "zdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIi"
                 "wiaWF0IjoxNTE2MjM5MDIyfQ.qdrr2_a7Sd80gmCWjnDomO"
                 "Gl8eZFVfKXA6jhncgRn-I"
    

Конфигурация конечной точки

Чтобы подключить Rasa к другим конечным точкам, вы можетеYAMLКонфигурация конечной точки указана в файле. затем используйте флаг--endpoints <path to endpoint configuration.yml>Беги, Раса. Например:

rasa run \
     --m <Rasa model> \
     --endpoints <path to endpoint configuration>.yml

можно использовать$ {name of environment variable}Укажите переменные среды в файле конфигурации. Затем эти заполнители заменяются значением переменной среды.