Эффективные варианты самообслуживания становятся все более важными для контакт-центров, но их правильная реализация представляет собой уникальные проблемы.
Amazon Lex предоставляет вашему контакт-центру Amazon Connect такие функции чат-бота, как автоматическое распознавание речи (ASR) и понимание естественного языка (NLU) по голосовым и текстовым каналам. Бот принимает речь или вводимый текст на естественном языке, распознает намерение, стоящее за вводом, и выполняет намерение пользователя, вызывая соответствующий ответ.
У абонентов могут быть разные акценты, произношение и грамматика. В сочетании с фоновым шумом это может затруднить точное понимание высказываний при распознавании речи. Например, фраза «Я хочу отслеживать свой заказ» может быть ошибочно принята за «Я хочу перевезти свой держатель». Неудачные намерения, подобные этим, расстраивают клиентов, которым приходится повторяться, неправильно маршрутизироваться или передаваться живым агентам, что обходится бизнесу дороже.
Amazon Bedrock упрощает доступ разработчиков к базовой модели (FM), позволяя им без труда создавать и масштабировать генеративные приложения на основе искусственного интеллекта для современных контакт-центров. FM, предоставляемые Amazon Bedrock, такие как Amazon Titan и Anthropic Claude, предварительно обучаются на наборах данных интернет-масштаба, что дает им сильные возможности NLU, такие как классификация предложений, вопросы и ответы, а также улучшенное семантическое понимание, несмотря на ошибки распознавания речи.
В этой статье мы рассмотрим решение, которое использует FM, предоставляемые Amazon Bedrock, для улучшения распознавания намерений Amazon Lex, интегрированного с Amazon Connect, что в конечном итоге обеспечивает улучшенный опыт самообслуживания для ваших клиентов.
Обзор решения
Решение использует Amazon Connect, Amazon Lex, AWS Lambda и Amazon Bedrock на следующих этапах:
- Поток контактов Amazon Connect интегрируется с ботом Amazon Lex через
GetCustomerInput
блокировать. - Когда бот не может распознать намерение вызывающего абонента и по умолчанию использует резервное намерение, срабатывает функция Lambda.
- Функция Lambda берет расшифровку высказывания клиента и передает ее в базовую модель в Amazon Bedrock.
- Используя свои расширенные возможности естественного языка, модель определяет намерение вызывающего абонента.
- Затем функция Lambda предписывает боту направить вызов к правильному намерению для выполнения.
Используя базовые модели Amazon Bedrock, решение позволяет боту Amazon Lex понимать намерения, несмотря на ошибки распознавания речи. Это обеспечивает плавную маршрутизацию и выполнение, предотвращая эскалацию сообщений агентам и неприятные повторения для вызывающих абонентов.
На следующей диаграмме показаны архитектура решения и рабочий процесс.
В следующих разделах мы рассмотрим ключевые компоненты решения более подробно.
Лямбда-функции и LangChain Framework
Когда бот Amazon Lex вызывает функцию Lambda, он отправляет сообщение о событии, содержащее информацию о боте и расшифровку высказывания вызывающего абонента. Используя это сообщение о событии, функция Lambda динамически извлекает настроенные намерения бота, описание намерения и высказывания намерения и создает подсказку, используя Лангчейнкоторый представляет собой платформу машинного обучения (ML) с открытым исходным кодом, которая позволяет разработчикам интегрировать большие языковые модели (LLM), источники данных и приложения.
Затем с помощью подсказки вызывается базовая модель Amazon Bedrock и принимается ответ с прогнозируемым намерением и уровнем достоверности. Если уровень достоверности превышает установленный порог, например 80 %, функция возвращает выявленное намерение в Amazon Lex с действием, делегат. Если уровень достоверности ниже порогового значения, по умолчанию возвращается значение по умолчанию. FallbackIntent
и действие по его закрытию.
Контекстное обучение, быстрое проектирование и вызов модели
Мы используем контекстное обучение, чтобы иметь возможность использовать базовую модель для выполнения этой задачи. Контекстное обучение — это возможность для LLM изучить задачу, используя только то, что указано в подсказке, без предварительного обучения или точной настройки для конкретной задачи.
В командной строке мы сначала предоставляем инструкцию с подробным описанием того, что необходимо сделать. Затем функция Lambda динамически извлекает и вводит в приглашение настроенные намерения бота Amazon Lex, описания намерений и высказывания намерений. Наконец, мы даем ему инструкции о том, как вывести свои мысли и конечный результат.
Следующий шаблон приглашения был протестирован на моделях генерации текста Anthropic Claude Instant v1.2 и Anthropic Claude v2. Мы используем теги XML, чтобы улучшить производительность модели. Мы также даем модели возможность подумать перед определением окончательного намерения, чтобы лучше обосновать выбор правильного намерения. {intent_block}
содержит идентификаторы намерений, описания намерений и высказывания намерений. {input}
блок содержит расшифровку высказывания вызывающего абонента. В конце добавляются три обратных кавычки («`), чтобы помочь модели более последовательно выводить блок кода. А <STOP>
последовательность добавляется, чтобы остановить ее дальнейшее создание.
После вызова модели мы получаем следующий ответ от базовой модели:
Фильтрация доступных намерений на основе атрибутов сеанса потока контактов
При использовании решения как части потока контактов Amazon Connect вы можете еще больше повысить способность LLM определять правильное намерение, указав атрибут сеанса. available_intents
в «Получить мнение клиента» блок со списком намерений, разделенных запятыми, как показано на следующем снимке экрана. При этом функция Lambda будет включать эти указанные намерения только как часть запроса LLM, что уменьшит количество намерений, которые LLM должен обдумать. Если available_intents
Атрибут сеанса не указан, все намерения бота Amazon Lex будут использоваться по умолчанию.
Ответ лямбда-функции на Amazon Lex
После того как LLM определил намерение, функция Lambda отвечает в определенном формате, требуемом Amazon Lex для обработки ответа.
Если совпадение намерений обнаружено выше порога достоверности, оно возвращает тип диалогового действия. Delegate
чтобы дать указание Amazon Lex использовать выбранное намерение и впоследствии вернуть завершенное намерение обратно в Amazon Connect. Вывод ответа следующий:
Если уровень достоверности ниже порогового значения или намерение не было распознано, тип действия диалога Закрывать возвращается, чтобы дать Amazon Lex указание закрыть FallbackIntent
и верните управление обратно в Amazon Connect. Вывод ответа следующий:
Полный исходный код этого примера доступен в GitHub.
Предварительные условия
Прежде чем приступить к работе, убедитесь, что у вас есть следующие предварительные условия:
Внедрить решение
Чтобы реализовать решение, выполните следующие шаги:
- Клонировать репозиторий
- Выполните следующую команду, чтобы инициализировать среду и создать репозиторий Amazon Elastic Container Registry (Amazon ECR) для образа нашей функции Lambda. Укажите регион AWS и имя репозитория ECR, который вы хотите создать.
- Обновите
ParameterValue
поля вscripts/parameters.json
файл:ParameterKey ("AmazonECRImageUri")
– Введите URL-адрес репозитория из предыдущего шага.ParameterKey ("AmazonConnectName")
– Введите уникальное имя.ParameterKey ("AmazonLexBotName")
– Введите уникальное имя.ParameterKey ("AmazonLexBotAliasName")
– По умолчанию установлено «prodversion»; при необходимости вы можете изменить его.ParameterKey ("LoggingLevel")
– По умолчанию установлено «ИНФО»; при необходимости вы можете изменить его. Допустимые значения: DEBUG, WARN и ERROR.ParameterKey ("ModelID")
– По умолчанию используется «anthropic.claude-instant-v1»; вы можете изменить его, если вам нужно использовать другую модель.ParameterKey ("AmazonConnectName")
– По умолчанию установлено «0,75»; вы можете изменить его, если вам нужно обновить показатель достоверности.
- Запустите команду для генерации стека CloudFormation и разверните ресурсы:
Если вы не хотите создавать поток контактов с нуля в Amazon Connect, вы можете импортировать образец потока, предоставленный в этом репозитории. filelocation: /contactflowsample/samplecontactflow.json
.
- Войдите в свой Экземпляр Amazon Connect. Учетной записи должен быть назначен профиль безопасности, включающий разрешения на редактирование потоков.
- В консоли Amazon Connect на панели навигации в разделе Маршрутизациявыбирать Контактные потоки.
- Создайте новый поток того же типа, что и импортируемый.
- Выбирать Процесс сохранения и импорта.
- Выберите файл для импорта и выберите Импортировать.
Когда поток импортируется в существующий поток, имя существующего потока также обновляется.
- Просмотрите и при необходимости обновите все решенные или неразрешенные ссылки.
- Чтобы сохранить импортированный поток, выберите Сохранять. Чтобы опубликовать, выберите Сохранить и опубликовать.
- После загрузки потока контактов обновите следующие конфигурации:
- Обновите
GetCustomerInput
блоки с правильным именем и версией бота Amazon Lex. - В разделе «Управление номером телефона» обновите номер, используя поток контактов или IVR, импортированный ранее.
- Обновите
Проверьте конфигурацию
Убедитесь, что функция Lambda, созданная с помощью стека CloudFormation, имеет роль IAM с разрешениями на получение информации о ботах и намерениях из Amazon Lex (список и разрешения на чтение), а также соответствующие разрешения Amazon Bedrock (список и разрешения на чтение).
В боте Amazon Lex для настроенного вами псевдонима и языка убедитесь, что функция Lambda настроена правильно. Для FallBackIntent
подтвердите это Fulfillmentis
установлен в Active
чтобы иметь возможность запускать функцию всякий раз, когда FallBackIntent
срабатывает.
На этом этапе ваш бот Amazon Lex автоматически запустит функцию Lambda, и решение должно работать без проблем.
Проверьте решение
Давайте рассмотрим пример конфигурации намерения, описания и высказывания в Amazon Lex и посмотрим, насколько хорошо LLM работает с образцами входных данных, содержащими опечатки, грамматические ошибки и даже другой язык.
На следующем рисунке показаны скриншоты нашего примера. В левой части показано имя намерения, его описание и образец высказывания из одного слова. Без особой настройки Amazon Lex LLM способен предсказать правильное намерение (справа). В этом тесте у нас есть простое сообщение о выполнении правильного намерения.
Очистить
Чтобы очистить ресурсы, выполните следующую команду, чтобы удалить репозиторий ECR и стек CloudFormation:
Заключение
Используя Amazon Lex, дополненный LLM, предоставляемыми Amazon Bedrock, вы можете повысить эффективность распознавания намерений своих ботов. Это обеспечивает беспрепятственный опыт самообслуживания для самых разных клиентов, устраняя разрыв между акцентами и уникальными речевыми характеристиками и, в конечном итоге, повышая удовлетворенность клиентов.
Чтобы углубиться и узнать больше о генеративном искусственном интеллекте, посетите эти дополнительные ресурсы:
Дополнительные сведения о том, как можно поэкспериментировать с генеративным решением самообслуживания на основе искусственного интеллекта, см. в разделе «Развертывание самостоятельного ответа на вопросы с помощью QnABot на решении AWS на базе Amazon Lex с Amazon Kendra и большими языковыми моделями».
Об авторах
Хамза Надим — специалист по архитектуре решений Amazon Connect в AWS, базирующийся в Торонто. Он работает с клиентами по всей Канаде, чтобы модернизировать их контакт-центры и предоставить решения их уникальных проблем взаимодействия с клиентами и бизнес-требований. В свободное время Хамза любит путешествовать, играть в футбол и пробовать новые рецепты вместе со своей женой.
Параг Шривастава является архитектором решений в Amazon Web Services (AWS), помогая корпоративным клиентам успешно внедрять и мигрировать в облако. За свою профессиональную карьеру он активно участвовал в сложных проектах цифровой трансформации. Он также увлечен созданием инновационных решений для геопространственных аспектов адресов.
Росс Увы — архитектор решений в AWS в Торонто, Канада. Он помогает клиентам внедрять инновации с помощью решений AI/ML и генеративного искусственного интеллекта, которые приводят к реальным результатам для бизнеса. Он работал с различными клиентами из сферы розничной торговли, финансовых услуг, технологий, фармацевтики и других. В свободное время он любит проводить время на свежем воздухе и наслаждаться природой со своей семьей.
Сангита Каматкар является архитектором решений в Amazon Web Services (AWS), помогая клиентам успешно внедрять и мигрировать в облако. Она работает с клиентами над созданием высокомасштабируемых, гибких и отказоустойчивых облачных архитектур, которые решают бизнес-задачи клиентов. В свободное время она слушает музыку, смотрит фильмы и летом занимается садоводством.