QnABot на AWS — это многоканальный многоязычный диалоговый интерфейс (чат-бот), который отвечает на вопросы, ответы и отзывы ваших клиентов. Он позволяет вам развернуть полнофункционального чат-бота по нескольким каналам, включая чат, голосовую связь, SMS и Amazon Alexa. Среда управления контентом решения и мастер интеграции контакт-центра позволяют настроить и настроить среду, предоставляющую следующие преимущества:
Повысьте качество обслуживания ваших клиентов, предоставляя персонализированные учебные пособия, а также поддержку вопросов и ответов с интеллектуальным многоэтапным взаимодействием.
Сократите время ожидания в колл-центре за счет автоматизации рабочих процессов поддержки клиентов.
Внедрите новейшую технологию машинного обучения, чтобы создать для чат-ботов увлекательное, человеческое взаимодействие.
При развертывании этого решения с параметрами по умолчанию в вашей учетной записи AWS развертываются следующие компоненты (компоненты с границами не являются обязательными).
Рисунок 1. QnABot на архитектуре AWS
Общий процесс для компонентов решения, развернутых с помощью шаблона AWS CloudFormation, выглядит следующим образом:
Администратор развертывает решение в своей учетной записи AWS, открывает пользовательский интерфейс Content Designer или веб-клиент Amazon Lex и использует Amazon Cognito для аутентификации.
После аутентификации Amazon API Gateway и Amazon S3 доставляют содержимое пользовательского интерфейса Content Designer.
Администратор настраивает вопросы и ответы в Контент-дизайнере, а пользовательский интерфейс отправляет запросы в Amazon API Gateway для сохранения вопросов и ответов.
Функция Content Designer
AWS Lambda сохраняет входные данные в Amazon OpenSearch Service в индексе банка вопросов. При использовании встраивания текста эти запросы сначала проходят через модель LLM, размещенную на Amazon Bedrock или Amazon SageMaker, для создания встраивания, а затем сохраняются в банке вопросов OpenSearch. Кроме того, Content Designer
сохраняет параметры конфигурации по умолчанию и пользовательские настройки в хранилище параметров AWS Systems Manager.
Пользователи чат-бота взаимодействуют с Amazon Lex через пользовательский интерфейс веб-клиента Amazon Alexa или Amazon Connect.
Amazon Lex перенаправляет запросы в функцию Bot Fulfillment
AWS Lambda. Пользователи также могут отправлять запросы к этой функции Lambda через устройства Amazon Alexa.
Информация о пользователях и чатах хранится в Amazon DynamoDB, чтобы исключить неоднозначность последующих вопросов из контекста предыдущих вопросов и ответов.
Функция Bot Fulfillment
AWS Lambda принимает вводимые пользователем данные и использует Amazon Comprehend и Amazon Translate (при необходимости) для перевода запросов на неродном языке на родной язык, выбранный пользователем во время развертывания, а затем ищет ответ в Amazon OpenSearch Service. . При использовании функций LLM, таких как генерация текста и встраивание текста, эти запросы сначала будут проходить через различные модели LLM, размещенные на Amazon Bedrock или Amazon SageMaker, для создания поискового запроса и встраивания для сравнения с теми, которые сохранены в банке вопросов OpenSearch.
Если из банка вопросов OpenSearch не возвращается совпадений, то лямбда-функция выполнения бота перенаправляет запрос следующим образом:
а. Если индекс Amazon Kendra настроен на резервный вариант, функция Bot Fulfillment
AWS Lambda пересылает запрос Kendra, если из банка вопросов OpenSearch не возвращается совпадений. LLM генерации текста может дополнительно использоваться для создания поискового запроса и синтеза ответа на основе возвращенных выдержек документов.
б. Если настроен идентификатор базы знаний Bedrock, функция Bot Fulfillment
AWS Lambda перенаправляет запрос в базу знаний Bedrock. Функция Bot Fulfillment
AWS Lambda использует API RetvieveAndGenerate для получения соответствующих результатов по пользовательскому запросу, дополнения подсказки базовой модели и возврата ответа.
В результате взаимодействия пользователя с функцией Bot Fulfillment
генерируются данные журналов и показателей, которые отправляются в Amazon Kinesis Data Firehose, а затем в Amazon S3 для последующего анализа данных. Панели мониторинга OpenSearch можно использовать для просмотра истории использования, зарегистрированных высказываний, высказываний без обращений, положительных и отрицательных отзывов пользователей, а также предоставляют возможность создавать собственные отчеты.
Панели мониторинга OpenSearch можно использовать для просмотра истории использования, зарегистрированных высказываний, высказываний без обращений, положительных и отрицательных отзывов пользователей, а также предоставляют возможность создавать собственные отчеты.
Подробные инструкции по развертыванию QnABot в вашей учетной записи AWS см. в руководстве по внедрению.
Альтернативно, если вы хотите самостоятельно развернуть QnABot на AWS, ознакомьтесь с подробностями ниже.
Перейдите в корневой каталог QnABot (каталог будет создан после клонирования этого репозитория).
Начните с каталога /source.
cd source
Установите виртуальную среду:
pip3 install virtualenv
Установите модули Node.js QnABot:
npm install
Затем настройте файл конфигурации:
npm run config
теперь отредактируйте config.json
для следующих параметров:
параметр | описание |
---|---|
область | регион AWS для запуска стеков в |
профиль | профиль учетных данных AWS, который нужно использовать |
пространство имен | логическое пространство имен для запуска ваших шаблонов, таких как dev, test и/или prod |
devEmail (обязательно) | адрес электронной почты, который будет использоваться при создании пользователей-администраторов при автоматическом запуске стека. |
Затем используйте следующую команду, чтобы запустить шаблон CloudFormation и создать корзину S3, которая будет использоваться для кода Lambda и шаблонов CloudFormation. Подождите, пока этот шаблон завершится (вы можете наблюдать за ходом выполнения из командной строки или консоли AWS CloudFormation).
npm run bootstrap
Наконец, используйте следующую команду, чтобы запустить шаблон для развертывания QnABot в вашей учетной записи AWS. Когда стек завершится, вы сможете войти в пользовательский интерфейс Designer (URL-адрес — это результат шаблона). Временный пароль к электронной почте в вашем config.json:
npm run up
Если у вас есть существующий стек, вы можете запустить следующую команду, чтобы обновить его:
npm run update
Для запуска модульных тестов выполните следующую команду из корневой папки:
npm test
Чтобы обновить тестовые снимки при изменении каталога /website или /templates, выполните следующую команду:
npm run test:update:snapshot
ПРИМЕЧАНИЕ. Запуск регрессионных тестов приведет к созданию, изменению и удалению контента и настроек из Контент-дизайнера. Запускайте регрессионные тесты только на непроизводственных ботах, где допустима потеря или изменение контента и настроек.
При этом выполняются интеграционные тесты для развернутого развертывания QnABot в вашей учетной записи. Перед запуском тестов выполните описанные выше шаги для создания и развертывания версии или развертывания с использованием шаблона с целевой страницы QnABot: Запустите QnABot.
cd .nightswatch
brew install python@3
brew install geckodriver
brew install --cask chromedriver
pip3 install virtualenv
python3 -m virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt
Задайте следующие переменные среды, чтобы указать на тестируемое развертывание QnA Bot:
export CURRENT_STACK_REGION= ' <QNA BOT Region> '
export CURRENT_STACK_NAME= ' <QNA BOT Cloudformation Stack Name> '
export EMAIL= ' <admin user e-mail>
При необходимости укажите имя пользователя и пароль для пользователя-администратора для тестирования. Если эти переменные среды не заданы, во время первоначального теста будет создан пользователь QnaAdmin по умолчанию. Если вы хотите запустить конкретный тест, укажите имя пользователя, поскольку пользователь по умолчанию будет создан только при начальном тесте.
export USER= ' <QNA BOT existing admin user> '
export PASSWORD= ' <QNA BOT existing admin password> '
При необходимости укажите идентификатор и версию Bedrock Guardrails для тестирования. Если эти переменные среды не установлены, тестирование Bedrock Guardrails в test_knowledge_base.py и test_llm.py будет пропущено.
export BEDROCK_GUARDRAIL_IDENTIFIER= ' <Pre-configurated Guardrail Identifier in your AWS account> '
export BEDROCK_GUARDRAIL_VERSION= ' <Pre-configurated Guardrail Version in your AWS account> '
Если вы хотите запускать браузер во время выполнения тестов, также установите следующую переменную env:
export HEADLESS_BROWSER= ' false '
Если вы хотите увидеть время начала и окончания каждого теста:
export TIMESTAMPS= ' true '
Если вы хотите использовать для теста конкретный профиль AWS. Если этот параметр не установлен, регрессионный тест будет использовать текущий сеанс AWS, в котором он выполняется.
export TEST_ACCOUNT_PROFILE_NAMES= ' <AWS profile name> '
cd functional
pytest -v
Опытные пользователи, заинтересованные в выпуске пользовательского QnABot, могут использовать следующие инструкции для публикации артефактов развертывания, доступных внешним пользователям.
Создайте корзину S3 для размещения шаблонов (см. $DIST_OUTPUT_BUCKET ниже). Вам также потребуются региональные сегменты для каждого региона, из которого будут выполняться развертывания ваши пользователи. Региональные сегменты должны называться $DIST_OUTPUT_BUCKET-$AWS_REGION. Вам необходимо будет предоставить соответствующие права доступа к сегментам для ваших целевых пользователей. Перейдите по ссылкам ниже, чтобы ознакомиться с передовыми практиками безопасности сегментов и контроля доступа:
ПРИМЕЧАНИЕ. Во всех сегментах должно быть включено управление версиями, иначе стек не удастся развернуть.
Установите следующие переменные среды для вашего пользовательского QnABot:
export DIST_OUTPUT_BUCKET= ' <name of the bucket to upload artifacts to> '
export SOLUTION_NAME= ' <name of your custom bot> '
export VERSION= ' <bot version> '
export AWS_REGIONS=( " us-east-1 " " us-west-2 " " ap-southeast-1 " " ap-southeast-2 " " ca-central-1 " " eu-west-1 " " ap-northeast-1 " " eu-central-1 " " eu-west-2 " " ap-northeast-2 " )
Вышеупомянутые переменные будут определять путь URL-адреса корзины, из которой будет размещен ваш бот. Массив AWS_REGIONS представляет собой список всех регионов, которые поддерживает QnABot. Список можно изменить по мере необходимости, если ваша версия бота не будет развернута в определенных регионах.
Выполните следующие команды, чтобы загрузить текущую локальную версию в указанную корзину:
cd deployment
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
aws s3 cp global-s3-assets/ s3:// $DIST_OUTPUT_BUCKET / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
Создайте сегменты S3 для каждого региона, если они еще не существуют. Эти сегменты необходимо настроить для публичного использования:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
echo " Bucket exists: s3:// $DIST_OUTPUT_BUCKET - $region "
else
aws s3api create-bucket --bucket " $DIST_OUTPUT_BUCKET - $region "
echo " Created bucket: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
Запустите приведенную ниже команду для каждого региона:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
aws s3 cp regional-s3-assets/ s3:// $DIST_OUTPUT_BUCKET - $region / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
else
echo " Bucket not found: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
Шаблон можно развернуть по следующему URL-адресу для всех регионов:
echo https:// $DIST_OUTPUT_BUCKET .s3.amazonaws.com/ $SOLUTION_NAME / $VERSION /qnabot-on-aws-main.template
Чтобы запустить Webpack в режиме разработки, убедитесь, что у вас есть следующее:
Перейдите в корневой каталог QnABot (каталог будет создан после клонирования этого репозитория).
npm install
Затем назначьте переменную среды ASSET_BUCKET_NAME
, расположенную в package.json в dev mode
сценариев npm. Это имя корзины, в которую QnABot загружает ресурсы ./website, и обычно она называется <stack-name>-bucket-<randomly-generated-chars>.
После правильной настройки запустите
npm run dev-mode
Это должно перевести Webpack в режим разработки и загрузить ресурсы в ./website/build в ASSET_BUCKET_NAME
. Это также будет отслеживать любые изменения в ./website и перезагружать ресурсы в вашу корзину, если они изменятся.
На данный момент поддерживаются только следующие браузеры:
Подробности см. в файле LICENSE.txt.
Подробную информацию о новых функциях в каждой версии см. в файле CHANGELOG.md.
Также доступен семинар, на котором вы познакомитесь с функциями QnABot.
По мере развития QnABot с годами он использует различные сервисы и функциональные возможности, которые могут поддерживаться или прекращаться. Этот раздел служит ссылкой на версии развертываемых решений, а также ссылки на их шаблоны Public и VPC CloudFormation.
Примечание. Развертываемые версии решения означают возможность развертывания версии QnABot в своих учетных записях AWS. Активно поддерживаемые версии QnABot доступны только для последней версии QnABot.
Мы не рекомендуем использовать эту версию из-за потенциальной проблемы с функциональностью testall, которая может привести к появлению большого количества версий, хранящихся в корзине testall S3, когда у контент-дизайнера нет вопросов и ответов. Пожалуйста, используйте последнюю доступную версию.
Мы не рекомендуем использовать эту версию из-за потенциальной проблемы с функциональностью testall, которая может привести к появлению большого количества версий, хранящихся в корзине testall S3, когда у контент-дизайнера нет вопросов и ответов. Пожалуйста, используйте последнюю доступную версию.
v5.5.0+
или обновить ее до версии v5.5.0+, поскольку срок службы Vue 2 истекает (EOL), что влияет на все предыдущие версии QnABot. Дополнительную информацию см. ниже.v5.4.X
до более поздних версий: если вы обновляете развертывание, в котором для LLMApi установлено значение SAGEMAKER, перед обновлением установите для этого значения значение DISABLED. После обновления верните это значение обратно в SAGEMAKER.Мы не рекомендуем использовать эту версию из-за потенциальной проблемы с функциональностью testall, которая может привести к появлению большого количества версий, хранящихся в корзине testall S3, когда у контент-дизайнера нет вопросов и ответов. Пожалуйста, используйте последнюю доступную версию.
Мы не рекомендуем использовать эту версию из-за потенциальной проблемы с функциональностью testall, которая может привести к появлению большого количества версий, хранящихся в корзине testall S3, когда у контент-дизайнера нет вопросов и ответов. Пожалуйста, используйте последнюю доступную версию.
Мы не рекомендуем использовать эту версию из-за потенциальной проблемы с функциональностью testall, которая может привести к появлению большого количества версий, хранящихся в корзине testall S3. Пожалуйста, используйте последнюю доступную версию.
Мы не рекомендуем использовать эту версию из-за потенциальной проблемы с функциональностью testall, которая может привести к появлению большого количества версий, хранящихся в корзине testall S3. Пожалуйста, используйте последнюю доступную версию.
v5.2.1
больше не подлежат развертыванию из-за прекращения поддержки среды выполнения Lambda. Эта информация предоставляется «как есть», и вам настоятельно рекомендуется проверить календарь устаревания и окончания срока службы платформ, используемых в решении.Для QnABot наиболее распространенная причина связана с устареванием AWS Lambda Runtimes. Если среда выполнения Lambda помечена как устаревшая, клиенты больше не смогут создавать новые функции Lambda в своей учетной записи AWS. Это означает, что более старые версии наших решений, использующие эти среды выполнения, не смогут быть развернуты. Из-за этого сообществу становится сложнее оказывать поддержку, поскольку мы не можем развернуть подобную среду для исследования проблем и воспроизведения отчетов об ошибках.
Если у вас уже есть существующее развертывание, которое работает, вам не нужно ничего обновлять. Однако настоятельно рекомендуется составить план тестирования и миграции рабочих развертываний на поддерживаемую версию. Чем дальше развертывание отходит от latest
тем выше риск нестабильности (особенно в отношении развертывания).
А тем, кто хочет начать работу с решением впервые, всегда рекомендуется использовать последнюю версию. Это самая безопасная, стабильная и многофункциональная версия QnABot!
В большинстве случаев простая операция обновления стека позволит вам перенести экземпляр на более новую версию, сохранив при этом данные в новом развертывании.
Примечание. Для тех, кто выполняет обновление с
v5.4.X
до более поздних версий: если вы обновляете развертывание, в котором для LLMApi установлено значение SAGEMAKER, перед обновлением установите для этого значения значение DISABLED. После обновления верните это значение обратно в SAGEMAKER.
Команда настоятельно рекомендует сначала протестировать любые обновления (особенно между второстепенными и основными версиями) на непроизводственном экземпляре, чтобы проверить наличие каких-либо регрессий. Это очень важно, если вы внесли собственные изменения в свое развертывание, интегрировались с внешними службами или переключаетесь между несколькими версиями.
Некоторые дополнительные меры предосторожности, которые вы можете принять:
Export Settings
внизу страницы настроек)Это решение собирает анонимизированные операционные показатели, которые помогают AWS улучшить качество и возможности решения. Дополнительную информацию, в том числе о том, как отключить эту возможность, см. в руководстве по реализации.
Авторские права принадлежат Amazon.com, Inc. или ее дочерним компаниям. Все права защищены.
Лицензируется по лицензии Apache версии 2.0 («Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу:
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется действующим законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, явных или подразумеваемых. См. Лицензию для определения конкретного языка, регулирующего разрешения и ограничения в рамках Лицензии.