Разверните самообслуживание вопросно-ответной системы с помощью решения QnABot на AWS, основанного на Amazon Lex с Amazon Kendra и большими языковыми моделями.

Разверните самообслуживание вопросно-ответной системы с помощью QnABot на AWS, основанного на Lex, Kendra и большими языковыми моделями.

Работая на платформе Amazon Lex, решение QnABot на AWS является открытым многоязычным чат-ботом для множества каналов связи. QnABot позволяет быстро внедрять самообслуживание с помощью разговорного искусственного интеллекта в вашем контакт-центре, на веб-сайтах и в социальных медиа, что позволяет снизить затраты, сократить время ожидания и улучшить опыт клиентов и восприятие бренда. Клиенты хотят применять мощь больших языковых моделей (LLM) для дальнейшего улучшения опыта клиентов с помощью возможностей генеративного искусственного интеллекта. Это включает автоматическое генерирование точных ответов на основе существующих документов и баз знаний компании, а также улучшение разговорности самообслуживающихся чат-ботов.

Наши последние версии QnABot, начиная с v5.4.0, могут использовать LLM для разрешения неоднозначности вопросов клиентов, учитывая контекст разговора, динамически генерируя ответы на основе соответствующих часто задаваемых вопросов или результатов поиска Amazon Kendra и отрывков документов. Он также предоставляет атрибуцию и прозрачность, отображая ссылки на справочные документы и контекстуальные отрывки, использованные LLM для составления ответов.

При развертывании QnABot вы можете выбрать автоматическое развертывание современной открытой модели LLM (Falcon-40B-instruct) на точке входа Amazon SageMaker. Сфера применения LLM постоянно развивается – новые модели выпускаются часто, и наши клиенты хотят экспериментировать с разными моделями и поставщиками, чтобы выяснить, что лучше всего подходит для их конкретных случаев использования. Поэтому QnABot также интегрируется с любым другим LLM с помощью функции AWS Lambda, которую вы предоставляете. Чтобы вам было проще начать, мы также выпустили набор образцовых функций AWS Lambda (плагинов) для интеграции QnABot с ведущими поставщиками LLM, включая нашу собственную службу Amazon Bedrock и API сторонних поставщиков Anthropic и AI21.

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

Новые функции генеративного искусственного интеллекта

С использованием LLM, QnABot теперь имеет две новые важные функции, которые мы рассмотрим в этом разделе.

Генерация ответов на вопросы на основе результатов поиска Amazon Kendra или текстовых отрывков

Теперь QnABot может генерировать краткие ответы на вопросы на основе отрывков из документов, предоставленных поиском Amazon Kendra, или непосредственно созданных или импортированных текстовых отрывков. Это предоставляет следующие преимущества:

  • Количество часто задаваемых вопросов, которые вам нужно поддерживать и импортировать в QnABot, сокращается, потому что вы теперь можете синтезировать краткие ответы на лету на основе ваших существующих документов.
  • Сгенерированные ответы могут быть изменены для создания наилучшего опыта для выбранного канала. Например, вы можете установить краткие, лаконичные ответы для ботов контакт-центра голосового канала, а веб-сайт или текстовые боты могут предоставлять более подробную информацию.
  • Сгенерированные ответы полностью совместимы с многоязычной поддержкой QnABot – пользователи могут взаимодействовать на выбранных ими языках и получать сгенерированные ответы на том же языке.
  • Сгенерированные ответы могут включать ссылки на использованные справочные документы и контекстуальные отрывки для предоставления атрибуции и прозрачности в том, как LLM составил ответы.

Например, когда спрашивают «Что такое Amazon Lex?», QnABot может извлекать соответствующие отрывки из индекса Amazon Kendra (содержащего документацию AWS). Затем QnABot запрашивает (подсказывает) LLM для ответа на вопрос на основе контекста отрывков (которые также можно просмотреть в веб-клиенте). Ниже приведен пример скриншота.

Разрешение неоднозначных последующих вопросов, зависящих от контекста предыдущего разговора

Понимание направления и контекста развивающегося разговора является ключевым моментом при создании естественных разговорных интерфейсов, похожих на общение между людьми. Запросы пользователей часто требуют от бота интерпретации запросов на основе памяти и контекста разговора. Теперь QnABot будет просить LLM сгенерировать разрешенный вопрос на основе истории разговора. Затем этот вопрос может быть использован в качестве поискового запроса для получения ответов на вопросы пользователя из часто задаваемых вопросов, отрывков или результатов поиска Amazon Kendra. Ниже приведен пример истории чата:

Human: Что такое Amazon Lex?
AI: «Amazon Lex - это услуга AWS для создания разговорных интерфейсов для приложений с использованием голоса и текста...»
Human: Можно ли интегрировать его с моей CRM?

QnABot использует LLM для переписывания вопроса-продолжения, чтобы сделать его “недвусмысленным”, например, “Может Amazon Lex интегрироваться с моей CRM-системой?” Это позволяет пользователям взаимодействовать, как они делали бы в разговоре с человеком, и QnABot генерирует четкие поисковые запросы для поиска соответствующих часто задаваемых вопросов или отрывков документов, содержащих информацию для ответа на вопрос пользователя.

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

Обучение

Пора попробовать! Развернем последнюю версию QnABot (v5.4.0 или более позднюю) и включим новые функции генеративного искусственного интеллекта. Основные шаги следующие:

  1. Создать и заполнить индекс Amazon Kendra.
  2. Выбрать и развернуть плагин LLM (по желанию).
  3. Развернуть QnABot.
  4. Настроить QnABot для вашего плагина Lambda (если используется плагин).
  5. Получить доступ к веб-клиенту QnABot и начать экспериментировать.
  6. Настроить поведение с помощью настроек QnABot.
  7. Добавить отобранные вопросы и ответы и текстовые отрывки в базу знаний.

Создание и заполнение индекса Amazon Kendra

Скачайте и используйте следующий шаблон AWS CloudFormation, чтобы создать новый индекс Amazon Kendra.

Этот шаблон включает образец данных, содержащих онлайн-документацию AWS для Amazon Kendra, Amazon Lex и SageMaker. Развертывание стека занимает около 30 минут, а затем около 15 минут для синхронизации и внесения данных в индекс.

Когда стек индекса Amazon Kendra развернут успешно, перейдите на вкладку Outputs стека и запишите Index Id, который вы будете использовать позже при развертывании QnABot.

Кроме того, если у вас уже есть индекс Amazon Kendra с вашим собственным содержимым, вы можете использовать его вместо образцовых вопросов для обучения.

Выбрать и развернуть плагин LLM (по желанию)

QnABot может развернуть встроенный LLM (Falcon-40B-instruct на SageMaker) или использовать функции Lambda для вызова любых других LLM, которые вы выберете. В этом разделе мы покажем вам, как использовать вариант с Lambda с предварительно созданной образцовой функцией Lambda. Перейдите к следующему шагу, если вы хотите использовать встроенный LLM.

Сначала выберите плагин LLM, который вы хотите использовать. Ознакомьтесь с вариантами из репозитория qnabot-on-aws-plugin-samples. На данный момент доступны плагины для Amazon Bedrock (в предварительной версии) и сторонних API AI21 и Anthropic. Мы планируем добавить еще более много образцовых плагинов со временем.

Разверните выбранный плагин, выбрав Запуск стека в разделе “Deploy a new Plugin stack”, который развернется в регионе us-east-1 по умолчанию (для развертывания в других регионах см. Создание и публикация артефактов CloudFormation для плагинов QnABot).

Когда стек плагина развернут успешно, перейдите на вкладку Outputs стека (см. следующий скриншот) и изучите его содержимое, которое вы будете использовать на следующих шагах для развертывания и настройки QnABot. Оставьте эту вкладку открытой в вашем браузере.

Развернуть QnABot

Выберите Запуск решения из руководства по реализации QnABot для развертывания последнего шаблона QnABot через AWS CloudFormation. Укажите следующие параметры:

  • Для DefaultKendraIndexId используйте идентификатор индекса Amazon Kendra (GUID), который вы собрали ранее
  • Для EmbeddingsApi (см. Семантический поиск с использованием текстовых вложений) выберите один из следующих вариантов:
    • SAGEMAKER (встроенная модель вложений по умолчанию)
    • LAMBDA (для использования API вложений Amazon Bedrock с плагином BEDROCK-EMBEDDINGS-AND-LLM)
      • Для EmbeddingsLambdaArn используйте выходное значение EmbeddingsLambdaArn из вашего стека плагина BEDROCK-EMBEDDINGS-AND-LLM.
  • Для LLMApi (см. Разрешение запросов для разговорного поиска и генеративного ответа на вопросы) выберите один из следующих вариантов:
    • SAGEMAKER (встроенная модель LLM по умолчанию)
    • LAMBDA (для использования ранее развернутого плагина LLM)
      • Для LLMLambdaArn используйте выходное значение LLMLambdaArn из вашего стека плагина

Для всех остальных параметров примите значения по умолчанию (см. руководство по реализации для определения параметров) и продолжайте запуск стека QnABot.

Настройка QnABot для плагина Lambda (если используется плагин)

Если вы развернули QnABot с использованием образца плагина LLM Lambda для доступа к другому LLM, обновите параметры модели QnABot и настройки шаблона подсказки в соответствии с рекомендациями для выбранного плагина. Дополнительную информацию см. в разделе Обновление настроек QnABot. Если вы использовали встроенный в SageMaker вариант LLM, перейдите к следующему шагу, так как настройки уже настроены для вас.

Доступ к веб-клиенту QnABot и начало экспериментов

На консоли AWS CloudFormation выберите вкладку Outputs стека CloudFormation QnABot и выберите ссылку ClientURL. В качестве альтернативы вы можете запустить клиент, выбрав в меню инструментов Content Designer пункт QnABot on AWS Client.

Теперь попробуйте задать вопросы, связанные с услугами AWS, например:

  • Что такое Amazon Lex?
  • Как работает масштабирование рабочих нагрузок вывода SageMaker?
  • Является ли Kendra сервисом поиска?

Затем вы можете задавать уточняющие вопросы, не указывая ранее упомянутые услуги или контекст, например:

  • Это безопасно?
  • Масштабируется ли это?

Настройка поведения с помощью настроек QnABot

Вы можете настроить множество параметров на странице Настройки Content Designer QnABot – см. README – Настройки LLM для полного списка соответствующих настроек. Например, попробуйте следующее:

  • Установите ENABLE_DEBUG_RESPONSES в TRUE, сохраните настройки и попробуйте задать предыдущие вопросы снова. Теперь вы увидите дополнительный отладочный вывод в начале каждого ответа, показывающий, как LLM генерирует запрос поиска в Amazon Kendra на основе истории чата, как долго выполнялись выводы LLM и многое другое. Например:

    [Ввод пользователя: "Это быстро?", Сгенерированный запрос LLM (1207 мс): "Предоставляет ли Amazon Kendra результаты поиска быстро?", Поисковая строка: "Это быстро? / Предоставляет ли Amazon Kendra результаты поиска быстро?"["LLM: LAMBDA"], Источник: KENDRA RETRIEVE API
  • Верните ENABLE_DEBUG_RESPONSES обратно в FALSE, установите LLM_QA_SHOW_CONTEXT_TEXT и LLM_QA_SHOW_SOURCE_LINKS в FALSE и повторите примеры снова. Теперь контекст и ссылки на источники не отображаются, а вывод содержит только сгенерированный LLM-ответ.

  • Если вы чувствуете себя исследователем, экспериментируйте также с настройками шаблона подсказки LLM – LLM_GENERATE_QUERY_PROMPT_TEMPLATE и LLM_QA_PROMPT_TEMPLATE. См. README – Настройки LLM, чтобы узнать, как использовать заполнители для времени выполнения, таких как история чата, контекст, ввод пользователя, запрос и др. Обратите внимание, что значки по умолчанию, скорее всего, можно улучшить и настроить для более эффективного использования, поэтому не бойтесь экспериментировать! Если что-то сломается, всегда можно вернуться к настройкам по умолчанию, используя параметр СБРОСИТЬ НАСТРОЙКИ на странице настроек.

Добавление отобранных вопросов и ответов и текстовых отрывков в базу знаний

QnABot, конечно, может продолжать отвечать на вопросы на основе отобранных вопросов и ответов. Он также может использовать LLM для генерации ответов на основе созданных или импортированных прямо в QnABot текстовых отрывков, в дополнение к использованию индекса Amazon Kendra.

QnABot пытается найти хороший ответ на уточненный вопрос пользователя в следующей последовательности:

  1. Элементы QnA
  2. Элементы текстового отрывка
  3. Индекс Amazon Kendra

Давайте попробуем несколько примеров.

В меню инструментов Content Designer QnABot выберите пункт Импортировать, затем загрузите два примерных пакета:

  • TextPassages-NurseryRhymeExamples
  • blog-samples-final

QnABot может использовать текстовые вложения для предоставления возможности семантического поиска (с использованием встроенного в QnABot индекса OpenSearch в качестве векторного хранилища), что улучшает точность и снижает настройку вопросов по сравнению с базовым сопоставлением на основе ключевых слов OpenSearch. Чтобы продемонстрировать это, попробуйте задать вопросы, подобные следующим:

  • «Расскажи мне о устройстве Alexa с экраном»
  • «Расскажи мне о видеопотоковом устройстве Amazon?»

Они должны соответствовать импортированному образцу QNA, даже если используемые слова для задания вопроса плохо соответствуют ключевым словам (но хорошо семантически соответствуют) настроенным элементам QnA: Alexa.001 (Что такое Amazon Echo Show) и FireTV.001 (Что такое Amazon Fire TV).

Даже если вы (пока) не используете Amazon Kendra (а вам следует это сделать!), QnABot также может отвечать на вопросы на основе созданных или импортированных текстовых вложений в Content Designer. На следующие вопросы (и последующие вопросы) отвечается на основе импортированного элемента текстового пассажа, содержащего детскую песенку 0.HumptyDumpty:

  • «Где сидел Хамти Дамти до того, как упал?»
  • «Что случилось после его падения? Он был в порядке?»

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

Если хороших ответов нет или если ответ LLM соответствует регулярному выражению, определенному в LLM_QA_NO_HITS_REGEX, тогда QnABot вызывает настраиваемое поведение Custom Don’t Know (no_hits), которое по умолчанию возвращает сообщение «Ты меня запутал».

Попробуйте провести некоторые эксперименты, создавая Q&A или текстовые элементы пассажей в QnABot, а также используя индекс Amazon Kendra для получения генеративных ответов при отсутствии совпадений. Проведите эксперименты (используя вкладку TEST в конструкторе), чтобы найти наилучшие значения для настроек порога вложений, чтобы получить желаемое поведение. Найти идеальный баланс сложно, но посмотрите, сможете ли вы найти достаточно хороший баланс, который приведет к полезным ответам большую часть времени.

Удаление

Вы, конечно, можете оставить QnABot работающим, чтобы экспериментировать с ним и показать его коллегам! Но это несет некоторые затраты – см. Планирование развертывания – Стоимость для получения дополнительной информации. Чтобы удалить ресурсы и избежать затрат, удалите следующие стеки CloudFormation:

  • Стек QnABot
  • Стек плагина LLM (если применимо)
  • Стек индекса Amazon Kendra

Примеры использования

Эти новые функции делают QnABot актуальным для множества клиентских сценариев использования, таких как самообслуживание клиентов и поддержка ботов и автоматизированные веб-боты вопросов и ответов. Мы обсудим два таких сценария использования в этом разделе.

Интеграция с контактным центром

Автоматизированные возможности ответов на вопросы QnABot обеспечивают эффективное самообслуживание для входящих голосовых вызовов в контактных центрах с убедительными результатами. Например, посмотрите, как Kentucky Transportation Cabinet сократило время ожидания звонков и улучшило опыт клиентов с помощью виртуальных агентов самообслуживания с использованием Amazon Connect и Amazon Lex. Интеграция новых функций генеративного ИИ дополнительно усиливает эту ценностную предложение путем динамического генерирования надежных ответов на основе существующего контента, такого как документы, базы знаний и веб-сайты. Это позволяет избежать необходимости заранее предугадывать и вручную поддерживать ответы на все возможные вопросы, которые может задать пользователь. Чтобы интегрировать QnABot с Amazon Connect, см. Подключение QnABot на AWS к контактному центру Amazon Connect. Чтобы интегрироваться с другими контактными центрами, ознакомьтесь с тем, как Amazon Chime SDK может быть использован для подключения голосовых ботов Amazon Lex к контактным центрам сторонних компаний через SIPREC и создания виртуального агента, основанного на ИИ, для Genesys Cloud с использованием QnABot и Amazon Lex.

QnABot, основанный на LLM, также может играть решающую роль в качестве автоматизированного помощника агента в реальном времени. В этом решении QnABot пассивно прослушивает разговор и использует LLM для генерации реального времени предложений для человеческих агентов на основе определенных сигналов. Установка и проба этого решения просты – попробуйте! Это решение можно использовать как с Amazon Connect, так и с другими контактными центрами, как облачными, так и локальными. Дополнительную информацию см. В разделе Аналитика звонков в режиме реального времени и помощник агента для вашего контактного центра с использованием языковых ИИ-сервисов Amazon.

Интеграция с веб-сайтом

Встраивание QnABot на веб-сайты и в приложения позволяет пользователям получать автоматическую помощь с естественным диалогом. Дополнительную информацию см. в разделе Развертывание веб-интерфейса для вашего чат-бота. Для создания отобранного контента вопросов и ответов используйте синтаксис markdown и элементы пользовательского интерфейса, такие как кнопки и ссылки, изображения, видео и другие динамические элементы, которые информируют и радуют ваших пользователей. Интегрируйте веб-интерфейс QnABot Amazon Lex с онлайн-чатом Amazon Connect для быстрого перехода к обслуживанию человеком, когда автоматический помощник не может полностью ответить на запрос пользователя.

Примеры плагинов QnABot в хранилище AWS

Как показано в этом посте, QnABot v5.4.0+ не только предлагает встроенную поддержку встраивания и моделей LLM, размещенных на SageMaker, но также позволяет легко интегрироваться с любым другим LLM с помощью функций Lambda. Вы можете создавать собственные пользовательские функции Lambda или начать работу быстрее с одним из примеров, которые мы предоставляем в нашем новом хранилище примеров qnabot-on-aws-plugin-samples.

Это хранилище включает готовый к развертыванию плагин для Amazon Bedrock, который поддерживает как встраивание, так и запросы генерации текста. На момент написания, Amazon Bedrock доступен через закрытое превью, вы можете запросить доступ к превью. Когда Amazon Bedrock станет доступен в общем доступе, мы планируем интегрировать его напрямую с QnABot, но зачем ждать? Подайте заявку на доступ к превью и используйте наш пример плагина, чтобы начать экспериментировать!

Сегодняшний цикл инноваций LLM движется на огромной скорости выпуска новых моделей, каждая из которых стремится превзойти предыдущую. Это хранилище будет расширяться, включая дополнительные примеры плагинов QnABot со временем. На данный момент мы поддерживаем двух сторонних поставщиков моделей: Anthropic и AI21. Мы планируем добавить интеграции для большего количества LLM, встраиваний и, возможно, типичных примеров использования с использованием Lambda-хуков и баз знаний. Эти плагины предлагаются “как есть”, без гарантий, для вашего удобства – пользователи несут ответственность за поддержку и поддержание их после развертывания.

Мы надеемся, что хранилище плагинов QnABot превратится в процветающий проект сообщества с открытым исходным кодом. Следите за репозиторием qnabot-on-aws-plugin-samples на GitHub, чтобы получать обновления о новых плагинах и функциях, используйте форум Issues для сообщения о проблемах или предоставления обратной связи и вносите улучшения через pull-запросы. Ваши вклады приветствуются!

Заключение

В этом посте мы представили новые функции генеративного искусственного интеллекта для QnABot и рассмотрели решение для создания, развертывания и настройки QnABot для использования этих функций. Мы также обсудили некоторые соответствующие случаи использования. Автоматизация повторяющихся запросов освобождает сотрудников и повышает производительность. Качественные ответы создают привлекательные впечатления. Развертывание QnABot с использованием LLM-технологий может помочь вам повысить уровень самообслуживания для клиентов и сотрудников.

Не упустите эту возможность – начните сегодня и революционизируйте пользовательский опыт в развертывании вашего QnABot!