chatme.ai
Search…
Создание Агента на платформе
ДЛЯ РАЗРАБОТЧИКОВ
Требования для успешного обучения Агента
В этой статье описаны требования, которые необходимо соблюсти при создании Сценария Агента, чтобы он успешно обучился.

Валидация Сценария Агента

Валидация сценария — это проверка при обучении Агента на то, что все требования системы к Агенту удовлетворены.
Обучить Агента можно двумя способами:
  1. 1.
    Нажать кнопку Train, расположенную в правом верхнем углу БотБилдера во вкладке AgentDesigner.
  2. 2.
    Нажать кнопку на карточке Агента.
По нажатию кнопки Train происходит:
  1. 1.
    Непосредственно Валидация сценария. Процесс валидации может занять некоторое время, до 10 минут на больших агентах (3000+ слотов)
  2. 2.
    При успешном прохождении валидации создается обученная модель Агента на основе валидного сценария.
В это время кнопка Train будет неактивна. Если Сценарий не соответствует требованиям, то валидация завершится неудачно и в правом нижнем углу появится текст ошибки.
Важно: Если данный сценарий ранее уже обучался, а после внесения изменений валидация сценария завершилась неудачно, то работать будет старая обученная модель агента

Требования к агенту для успешной валидации

Для того, чтобы валидация была пройдена успешно, сценарий должен удовлетворять правилам:
  • В Сценарии не должно быть веток без блокирующих слотов;
  • В Сценарии все ветки должны быть закрыты;
  • В обучающей выборке каждого интента должно быть минимум две строки;
  • Каждая строка обучающей выборки интента должна содержать не меньше одной буквы;
  • Название пользовательских контекстных переменных должно соответствовать правилам;
  • Содержимое подслота result слота Regular Expression должно соответствовать правилам синтаксиса;
  • Выражение в подслоте condition слота Transition Rule должно соответствовать правилам синтаксиса.

Возможные ошибки построения сценария

1. Отсутствие блокирующих слотов в ветках сценария

Блокирующий слот — слот, по которому Агент встает в ожидание входящего сообщения из Канал Агента, это может быть сообщение Собеседника или нажатие кнопки.
В каждой ветке сценария должен присутствовать хотя бы один блокирующий слот, т.к. при наличии ветки сценария без блокирующего слота Агент может войти в постоянную цикличную работу (бесконечное количество раз будет проходить по всем слотам из этой ветки сценария). Список блокирующих слотов:
  • Wait For Reaction
  • Button Menu
  • Change Chat Mode
  • Incoming request
Важно: блокирующий слот не обязан находиться в конце ветки сценария, он может присутствовать в любом месте ветки сценария.
Если в ветке сценария не будет ни одного блокирующего слота из списка, то при обучении агента появится следующая ошибка:
Уведомление об ошибке будет содержать текст: Blocking slot types (BUTTON_MENU, CHANGE_CHAT_MODE, INCOMING_REQUEST, WAIT_FOR_REACTION) was not found in paths: *Slot ID* -> *Slot ID*”, где *Slot ID* -> *Slot ID* — это путь от корневого слота до слота, которым заканчивается невалидная ветка сценария.

2. Не закрытые ветки сценария

На концах веток Сценария могут находиться только следующие слоты:
  • Wait for reaction
  • Jump
  • Change chat mode
  • Text (при наличии блокирующих слотов в этой ветке)
  • Attachment (при наличии блокирующих слотов в этой ветке)
  • Memory (при наличии блокирующих слотов в этой ветке)
  • ER (при наличии блокирующих слотов в этой ветке)
  • Slot filling (при наличии блокирующих слотов в этой ветке)
На конце ветки не могут находиться:
  • Слоты, которые стартуют сценарий (Start, Incoming request, Timer), т.к. эти слоты играют роль начала сценария, следовательно, после них должны происходить какие-либо действия Агента;
  • Слоты, являющиеся комплексными (NLU + intent + fallback, Button menu + button + fallback, Transition rule + condition, Regular expression + result), т.к. эти слоты предназначены для разветвления сценария по определенным условиям, и после разветвления обязательно должны происходить какие-либо действия Агента.
Если в Сценарии есть ветки, на конце которых находятся любые слоты и подслоты не из списка, то при обучении Агента появится следующая ошибка:
Уведомление об ошибке будет содержать текст: “Slot with invalid children found: *Slot ID*...“, где *Slot ID* — это номер слота в Сценарии.

3. Недостаточное количество фраз в обучающей выборке

Обучающую выборку для успешного распознавания следует наполнять по правилам, описанным в статье Рекомендации по наполнению выборки Агента. В обучающей выборке Интента должно быть минимум две строки.
Если в выборке будет всего одна строка, то при обучении Агента появится следующая ошибка:
Уведомление об ошибке будет содержать текст: “NLU slots or Intents has errors: The number of train examples of intent "intent" is not enough, it should be at least 2.”, где в кавычках уточняется имя проблемного Интента.

4. Недостаточное количество букв во фразе обучающей выборки

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

5. Некорректное указание названия контекстной переменной

Имя пользовательских контекстных переменных в слоте Memory в поле KEY и в слоте Slot Filling в поле KEY должно соответствовать требованиям к названию пользовательских контекстных переменных:
  • название должно начинаться с буквы
  • Может содержать только символы латинского алфавита и символ подчеркивания
  • Пользовательские контекстные переменные не могут содержать спецсимволы: { , @, , , ', ", `, :, ;, &, *, %, $, # или пробел
При подобном содержании строки поля KEY:
в процессе Валидация сценария вы получите следующую ошибку:
Уведомление об ошибке будет содержать текст:“Strategy is not valid. Errors: StrategyDTO(id=26757, agent_id=23102, is_active=False, dialog_timeout=datetime.timedelta(0, 900), modified_at=datetime.datetime(2021, 4, 14, 10, 51, 40, 99483), keep_chat_state_between_dialogs=False) ["Invalid strategy schema. Error: {'node_list': {4: {'transition_rule_list': {0: {'error': TransitionRuleCompilerError('Failed to compile transition rule!', 'ner_context.name in context && !(context.name in context) -> 3')}, 1: {'error': TransitionRuleCompilerError('Failed to compile transition rule!', '!(ner_context.name in context) && !(context.name in context) -> 4')}}}}}"]”, где name — невалидная переменная.

6. Синтаксис в подслоте result слота Regular Expression

Символы ‘ и \ в подслоте result слота Regular Expression должны быть экранированы: им должен предшествовать символ \, в противном случае Агент не обучится.
При отстуствии экранирования символа \ в подслоте result появится следующая ошибка:
Уведомление об ошибке будет содержать текст: “Strategy is not valid. Errors: StrategyDTO(id=26944, agent_id=23289, is_active=False, dialog_timeout=datetime.timedelta(0, 900), modified_at=datetime.datetime(2021, 4, 15, 9, 49, 45, 763752), keep_chat_state_between_dialogs=False) ['Invalid strategy schema. Error: {\'node_list\': {9: {\'transition_rule_list\': {0: {\'error\': TransitionRuleCompilerError(\'Failed to compile transition rule!\', "parse_result in context && context.parse_result == \'\\\\\' -> 4")}}}}}']”

7. Синтаксис в подслоте condition слота Transition Rule

Обратите внимание на требования к синтаксису условий в Condition для успешного прохождения валидации сценария: Проверка условий в слотах Transition Rule и Timer При несоблюдении синтаксиса подслота condition произойдет ошибка валидации сценария:
Уведомление об ошибке будет содержать текст: “Strategy is not valid. Errors: StrategyDTO(id=26757, agent_id=23102, is_active=False, dialog_timeout=datetime.timedelta(0, 900), modified_at=datetime.datetime(2021, 4, 16, 6, 55, 30, 635313), keep_chat_state_between_dialogs=False) ["Invalid strategy schema. Error: {'node_list': {8: {'transition_rule_list': {0: {'error': TransitionRuleCompilerError('Failed to compile transition rule!', '{ } -> 7')}}}}}"]”, где { } — невалидное значение в condition.

8. Попытка перезаписи системных контекстных переменных, запрещенных для перезаписи

Узнать, какие системные контекстные переменные доступны или недоступны для перезаписи, вы можете в статье Системные контекстные переменные
При попытке их перезаписи в Слотах Incoming Request, Slot Filling, Memory, External Request при обучении Агента будет выводиться следующая ошибка валидации сценарий:
В тексте ошибки есть список переменных, запрещенных для записи.
Copy link
On this page
Валидация Сценария Агента
Требования к агенту для успешной валидации
Возможные ошибки построения сценария