помощник-наставника-публичных выступлений
Соответствующую публикацию в блоге к этому репозиторию можно найти здесь: Улучшите навыки публичных выступлений с помощью генеративного виртуального помощника на основе искусственного интеллекта с помощью Amazon Bedrock.
Предупреждение
Этот пример предназначен только для экспериментальных целей и не готов к производству. Развертывание этого образца может повлечь за собой расходы . Обязательно удалите инфраструктуру, следуя инструкциям в конце, когда она больше не нужна.
Улучшите навыки публичных выступлений с помощью виртуального помощника на базе GenAI с Amazon Bedrock
Публичные выступления — важнейший навык в современном мире, будь то профессиональные презентации, академические занятия или личностный рост. Однако многие люди борются с тревогой, неуверенностью и неэффективным общением во время публичных выступлений. Нанять тренера по публичным выступлениям стоит дорого, и его доступность ограничена. Теперь, с появлением больших языковых моделей (LLM), виртуальный помощник на базе генеративного искусственного интеллекта может использоваться людьми из разных слоев общества и мест, а также организациями любого размера, чтобы извлечь выгоду из анализа речи в реальном времени, определения областей. по улучшению и предложения по улучшению речи.
В этом репозитории мы представляем виртуального помощника на базе Amazon Bedrock, который может расшифровывать звук в речи презентации, проверять ее на предмет использования языка, грамматических ошибок, слов-вставок, повторений слов и предложений и т. д., а также давать рекомендации, а также предлагать курируемую версию. речи пользователя для улучшения презентации. Это решение помогает улучшить коммуникативные навыки, повысить уверенность и, в конечном итоге, дать людям возможность стать более эффективными и влиятельными ораторами. Организации из различных секторов, включая корпорации, образовательные учреждения, государственные учреждения и деятелей социальных сетей, могут использовать это решение для автоматизированного обучения своих сотрудников, студентов и публичных выступлений.
Это решение написано только на Python и использует шаблон CDK для развертывания необходимой инфраструктуры на AWS.
Обзор решения
Решение состоит из 4 основных компонентов:
- Пул пользователей Amazon Cognito для аутентификации пользователей: прошедшим проверку подлинности пользователям предоставляется доступ к веб-порталу Public Speaking Mentor AI Assistant для загрузки аудио/видео записей.
- Простой веб-портал, созданный с помощью Streamlit для загрузки аудио- и видеозаписей — загруженные файлы сохраняются в корзине Amazon Simple Storage Service (Amazon S3) для последующей обработки, извлечения и анализа.
- Рабочий процесс AWS Step Functions для организации преобразования аудио в текст с помощью Amazon Transcribe и последующего вызова Amazon Bedrock с цепочкой подсказок ИИ для генерации речевых рекомендаций и предложений по переписыванию.
- Amazon Simple Notification Service (Amazon SNS) для отправки пользователю уведомления по электронной почте с рекомендациями, созданными Amazon Bedrock.
Это решение использует Amazon Transcribe для преобразования речи в текст посредством автоматического распознавания речи. Когда пользователь загружает аудио- или видеофайл, Amazon Transcribe транскрибирует речь в текст, который затем передается в качестве входных данных в модель Sonnet Anthropic Claude 3.5, размещенную на Amazon Bedrock. Решение отправляет в Amazon Bedrock два запроса вместе с расшифрованным текстом. Первая подсказка предназначена для формирования обратной связи и рекомендаций по использованию языка, грамматическим ошибкам, словам-вставкам, повторению слов и предложений и другим аспектам речи. Второе приглашение предназначено для получения тщательно подобранной версии оригинальной речи пользователя. Для этих двух запросов с помощью Amazon Bedrock выполняется цепочка подсказок с помощью искусственного интеллекта, обеспечивающая тщательно подобранный ответ. В конечном итоге решение объединяет результаты обоих запросов, отображает подробные рекомендации, полученные с помощью Amazon Bedrock, на веб-странице пользователя, а также отправляет пользователю результаты по электронной почте. В настоящее время это решение поддерживает речь пользователя только на английском языке.
Архитектура
На следующей диаграмме показана архитектура нашего решения.
Давайте рассмотрим архитектуру шаг за шагом:
- Пользователь проходит аутентификацию на веб-портале Public Speaking Mentor AI Assistant (приложение Streamlit, размещенное на локальном рабочем столе пользователя) с использованием механизма аутентификации пула пользователей Amazon Cognito.
- Пользователь загружает на веб-портал аудио/видеофайл, который хранится в зашифрованной корзине Amazon S3.
- Служба S3 запускает событие s3:ObjectCreated для каждого файла, сохраняемого в корзину.
- Amazon EventBridge запускает рабочий процесс AWS Step Functions на основе этого события.
- Рабочий процесс AWS Step Functions использует интеграцию AWS SDK для вызова Amazon Transcribe и инициирует StartTranscriptionJob, передавая корзину S3, путь префикса и имя объекта в параметре MediaFileUri. Рабочий процесс ожидает завершения задания транскрипции и сохраняет расшифровку в другом пути префикса корзины S3.
- Затем рабочий процесс AWS Step Functions использует оптимизированные интеграции для вызова API InvokeModel от Amazon Bedrock, который определяет модель Sonnet Anthropic Claude 3.5, системное приглашение, максимальное количество токенов и расшифрованный речевой текст в качестве входных данных для API. Системная подсказка поручает Клоду дать предложения о том, как улучшить речь, выявляя неправильную грамматику, повторения слов или содержания, использование слов-паразитов и другие рекомендации.
Важный
Чтобы избежать ограничения размера полезных данных StepFunctions в 256 КБ, мы используем оптимизированную интеграцию AWS Lambda в Step Functions, чтобы сохранять полезные данные для параметров вывода Bedrock в корзине S3. Функция AWS Lambda создает необходимые полезные данные и сохраняет их в заданной корзине S3. Затем Step Functions использует путь к корзине S3 во input
параметре API Bedrock InvokeModel — это необязательное поле предназначено для оптимизированной интеграции Amazon Bedrock с Step Functions. Это позволяет нам передавать полезные данные размером более 256 КБ.
- После получения ответа от Amazon Bedrock рабочий процесс AWS Step Functions использует цепочку подсказок для создания еще одного ввода для Amazon Bedrock, включая предыдущую расшифровку речи, предыдущий ответ модели и запрашивая у модели предложения по переписыванию речи.
- Наконец, рабочий процесс объединяет эти результаты Amazon Bedrock и создает сообщение, которое отображается на веб-странице вошедшего в систему пользователя.
- В конце рабочий процесс Step Functions вызывает оптимизированную интеграцию SNS Publish для отправки пользователю электронного письма с сообщением, созданным Bedrock.
- Приложение Streamlit запрашивает функции Step для отображения результатов вывода на веб-странице пользователя Cognito.
Шаговые функции Конечный автомат
На следующей диаграмме показан рабочий процесс конечного автомата Step Functions. Вы также можете получить доступ к эквиваленту определения конечного автомата на языке Amazon States Language (ASL) здесь — PublicSpeakingMentorAIAssistantStateMachine ASL.
Установка
Предварительные условия
Для внедрения решения Public Speaking Mentor AI Assistant у вас должны быть следующие предварительные условия:
Учетная запись AWS с достаточными разрешениями AWS Identity and Access Management (IAM) для перечисленных ниже сервисов AWS для развертывания решения и запуска веб-портала приложений Streamlit.
- Амазонка
- Амазонка Транскрибировать
- Шаговые функции AWS
- AWS Лямбда
- Amazon EventBridge
- Амазон Когнито
- Амазонка СНС
- Амазонка S3
- Amazon CloudWatch
- AWS CloudFormation
Доступ к модели включен для Anthropic Claude 3.5 Sonnet в Amazon Bedrock в желаемом регионе AWS.
Локальная среда рабочего стола с AWS CLI (интерфейс командной строки), последней версией AWS CDK (2.159.0 или выше), Python 3.8 или выше и установленным Git.
Настройка AWS CLI с необходимыми учетными данными AWS и желаемым регионом AWS.
Важный
Убедитесь, что у вас установлена последняя версия CDK (v2.159.0 или выше), поскольку поддержка конструкции Anthropic Claude 3.5 Sonnet CDK недоступна в более ранних версиях.
Развертывание решения Public Speaking Mentor AI Assistant
Выполните следующие шаги, чтобы развернуть инфраструктуру AWS Public Speaking Mentor AI Assistant:
- Клонируйте репозиторий в локальную дисковую среду с помощью следующей команды:
git clone https://github.com/aws-samples/improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock.git
- Измените каталог на клонированный репозиторий и каталог
app
внутри него.
cd improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock/app
- Создайте виртуальную среду Python для инфраструктуры:
- Активируйте свою виртуальную среду:
source .venv/bin/activate
- Установите необходимые зависимости
pip install -r requirements.txt
- (Необязательно) Синтезируйте шаблон AWS CloudFormation с помощью AWS CDK (Cloud Development Kit) для Python.
Кончик
Возможно, вам придется выполнить однократную загрузку cdk с помощью следующей команды. Дополнительные сведения см. в разделе Загрузка CDK.
cdk bootstrap aws:// < ACCOUNT-NUMBER- 1> / < REGION- 1>
- Разверните шаблон AWS CloudFormation в своей учетной записи AWS и выбранном регионе.
После успешного развертывания CDK выполните следующие действия, чтобы создать пользователя Cognito.
Создайте пользователя Amazon Cognito для аутентификации.
Выполните следующие шаги, чтобы создать пользователей в пуле пользователей Amazon Cognito для доступа к веб-порталу. Созданным пользователям не нужны никакие разрешения AWS:
- Войдите в консоль AWS своей учетной записи и выберите регион AWS для своего развертывания.
- В Amazon Cognito в разделе «Пулы пользователей» щелкните пул пользователей, созданный с помощью шаблона CloudFormation. Имя пула пользователей будет иметь префикс PSMBUserPool, за которым следует строка случайных символов в виде одного слова.
- Нажмите кнопку «Создать пользователя» и введите имя пользователя и пароль.
- Наконец, нажмите кнопку «Создать пользователя» в правом нижнем углу.
Подпишитесь на тему SNS для получения уведомлений по электронной почте
Выполните следующие шаги, чтобы подписаться на тему SNS для получения уведомлений по электронной почте с речевыми рекомендациями:
- Войдите в консоль AWS своей учетной записи и выберите регион AWS для своего развертывания.
- В Amazon SNS в разделе «Темы» щелкните тему, созданную шаблоном CloudFormation. Название темы должно выглядеть так: InfraStack-PublicSpeakingMentorAIAssistantTopic, за которым следует строка случайных символов в виде одного слова.
- Нажмите кнопку «Создать подписку», выберите «Протокол в качестве электронной почты» в раскрывающемся списке и введите свой адрес электронной почты в поле «Конечная точка».
- Наконец, нажмите кнопку «Создать подписку» в правом нижнем углу.
Запустите приложение Streamlit для доступа к веб-порталу.
Выполните следующие шаги, чтобы запустить приложение Streamlit для доступа к веб-порталу Public Speaking Mentor AI Assistant:
- Измените каталог на
webapp
внутри каталога app
.
- Запустите серверstreamlit на порту 8080.
streamlit run webapp.py --server.port 8080
- Запишите URL-адрес приложения Streamlit для дальнейшего использования. В зависимости от настроек вашей среды вы можете выбрать один из трех URL-адресов (локальный, сетевой или внешний), предоставляемых запущенным процессом сервера Streamlit.
Note: Allow inbound traffic on port 8080
Убедитесь, что на вашем локальном компьютере разрешен входящий трафик через порт 8080.
Использование
Выполните следующие действия, чтобы использовать AI Assistant Public Speaking Mentor для улучшения своей речи:
- Откройте URL-адрес приложения Streamlit в своем браузере (предпочтительно Google Chrome), который вы указали на предыдущих шагах.
- Войдите на веб-портал, используя имя пользователя Amazon Cognito и пароль, созданные ранее для аутентификации.
- Загрузите свою аудио-/видеозапись, чтобы получить речевые рекомендации и результаты перезаписи речи.
- Нажмите «Обзор файлов», чтобы найти и выбрать свою запись.
- Нажмите кнопку «Загрузить файл», чтобы загрузить файл в корзину Amazon S3.
- Как только загрузка файла завершится, AI Assistant Public Speaking Mentor обработает транскрипцию аудио и подскажет инженерные шаги для генерации речевых рекомендаций и перезаписи результатов.
- После завершения обработки вы сможете увидеть рекомендации по речи и результаты перезаписи речи на веб-странице, а также получать уведомления по электронной почте через Amazon SNS.
- В правой части веб-страницы вы можете просмотреть все этапы обработки, выполняемые решением Public Speaking Mentor AI Assistant, для получения результатов вашей речи.
Очистить
Выполните следующие шаги, чтобы очистить ресурсы:
- Завершите процесс сервера приложений Streamlit, работающий в вашей среде, с помощью операции Ctrl+C.
- Перейдите в каталог
app
в вашем репозитории. - Уничтожьте AWS CloudFormation с помощью AWS CDK для Python.
Некоторые ограничения
- Предоставленный код предназначен для демонстрации и отправной точки, а не для производства. Приложение Python использует сторонние библиотеки, такие как Streamlit иstreamlit-cognito-auth. Как разработчик, вы несете ответственность за надлежащую проверку, поддержку и тестирование всех сторонних зависимостей. В частности, следует тщательно оценить механизмы аутентификации и авторизации. В более общем плане вам следует выполнить проверку безопасности и тестирование, прежде чем включать этот демонстрационный код в рабочее приложение или с конфиденциальными данными.
- В этой демонстрации Amazon Cognito имеет простую конфигурацию. Обратите внимание, что пулы пользователей Amazon Cognito можно настроить для применения политик надежных паролей, включения многофакторной аутентификации и установки для параметра AdvancedSecurityMode значения ENFORCED, чтобы система могла обнаруживать и реагировать на злонамеренные попытки входа.
- AWS предоставляет различные сервисы, не реализованные в этой демонстрации, которые могут повысить безопасность этого приложения. Службы сетевой безопасности, такие как сетевые списки управления доступом и AWS WAF, могут контролировать доступ к ресурсам. Вы также можете использовать AWS Shield для защиты от DDoS и Amazon GuardDuty для обнаружения угроз. Amazon Inspector выполняет оценку безопасности. Существует множество других сервисов и рекомендаций AWS, которые могут повысить безопасность. Дополнительные рекомендации см. в модели общей ответственности AWS и в руководстве по передовым методам обеспечения безопасности. Разработчик несет ответственность за правильную реализацию и настройку этих служб в соответствии с их конкретными требованиями безопасности.
- Рекомендуется регулярная ротация секретов, но в этой демо-версии это не реализовано.
Благодарность
Большая часть кода веб-приложения AWS Step Functionsstreamlit взята из следующего репозитория AWS Samples на GitHub: Deploy-streamlit-app
Безопасность
См. ВКЛАД для получения дополнительной информации.
Лицензия
Эта библиотека лицензируется по лицензии MIT-0. См. файл ЛИЦЕНЗИИ.