Я хочу сделать простого кота, который должен знать об адресах и размерах.В настоящее время я взломал один вместе с конечным автоматом python и RLA NLU для материала о намерениях, хотя природа данных означает, что большинство сущностей лучше извлечь вручную.
Например, открывающее предложение может быть«Я хочу отправить 4 ящика из почтового индекса A в почтовый индекс B по 3 на 3 на 3 м каждая».Эти адреса должны быть проверены, что может включать в себя взад и вперед (вы имели в виду этот почтовый индекс, или, может быть, это состояние? Это недопустимое совпадение, пожалуйста, выберите из этого списка и т. Д ...).
Кроме того, порядок проверки может быть странным.Например, можно иметь пригород, почтовый индекс и слот is_valid.Есть несколько возможностей: они могут ввести действительный S + P, просто S, недопустимый S один, действительный S и P, которые являются индивидуально действительными, но не совпадают, и т. Д. В некоторых случаях я хочу отложить проверку, чтобы использоватьдругая информация, например, если был указан неверный пригород, но действительный почтовый индекс, я бы использовал почтовый индекс, чтобы сообщить предложения для правильного пригорода.Однако, если был задан неверный пригород, но нет почтового индекса, нет смысла просить почтовый индекс, потому что я хотел бы сначала получить действительный пригород.Таким образом, наличие порядка слотов «пригород», «почтовый индекс», «is_valid» не совсем обрезает, насколько я могу судить.
Я полагаю, что вызов проверки для пригорода и почтового индекса может просто иметь свой собственный набор операторов переключения, которые смотрят на другие слоты, которые могли быть заполнены одновременно?Кажется, немного курицы и яйца, так как нужно будет ждать их проверки, и может в конечном итоге потребовать вызова Lambda изнутри Lambda.Например, если проверка не пройдена, бот запрашивает дополнительную информацию, но для проверки этой информации может потребоваться иной процесс / лямбда, чем исходный ввод
Возможно также, что они не содержат каких-либо подробностей об объекте, и в этом случае он должен быть запрошен позже, после того, как все адреса рассортированы.Например, если они не включают информацию о размерах, я хочу спросить «каковы размеры» и разрешить им включать либо только измерения, либо веса, а также количества - это я понимаю как стандартное заполнение слотов.
Итак, мой вопрос: насколько сложно / разумно, чтобы вызовы проверки в Lambdas действительно приводили к побочным путям в разговоре?Раньше я делал что-то вроде этого в настройке заполнения слотов, располагая слоты is_valid повсюду (особенно, если я не хочу просто выдавать ошибку 'not valid' и роботически повторять первоначальный вопрос«).Есть ли лучший способ?
Кроме того, как можно управлять намерениями «прервать»?То есть набор намерений, который будет вызывать «вы хотите перезагрузить?»вопросы, которые вернутся в исходное состояние, если пользователь ответит «нет», и, в идеале, если они скажут «да», могут вернуться к определенной точке разговора (что, я полагаю, было бы достигнуто, просто сбросив соответствующие слоты на пустые)
Кроме того, не предвосхищая идею Amazon Lex, любой из готовых кейсов, которые уменьшают количество кода котельной пластины, тоже хорош.
Извинения за слово рвота.