mentor-parler-en-public-ai-assistant
Vous pouvez trouver l'article de blog associé à ce référentiel ici : Améliorez vos compétences de prise de parole en public à l'aide d'un assistant virtuel génératif basé sur l'IA avec Amazon Bedrock.
Avertissement
Cet exemple est uniquement destiné à des fins expérimentales et n’est pas prêt pour la production. Le déploiement de cet exemple peut entraîner des coûts . Veuillez vous assurer de supprimer l'infrastructure via les instructions fournies à la fin lorsque vous n'en avez plus besoin.
Améliorez vos compétences de prise de parole en public à l'aide d'un assistant virtuel basé sur GenAI avec Amazon Bedrock
Prendre la parole en public est une compétence essentielle dans le monde d'aujourd'hui, qu'il s'agisse de présentations professionnelles, de contextes universitaires ou de croissance personnelle. Cependant, de nombreuses personnes souffrent d’anxiété, de manque de confiance et d’une communication inefficace lors des prises de parole en public. L'embauche d'un coach de prise de parole en public est coûteuse et sa disponibilité est limitée. Désormais, avec l'avènement des grands modèles linguistiques (LLM), un assistant virtuel alimenté par l'IA générative peut être utilisé par des individus d'horizons et de lieux divers ainsi que par des organisations de toute taille pour bénéficier d'une analyse en temps réel de la parole, de l'identification des zones. des améliorations et des suggestions pour améliorer la prestation de la parole.
Dans ce référentiel, nous présentons un assistant virtuel alimenté par Amazon Bedrock qui peut transcrire l'audio d'une personne dans le discours de présentation, l'examiner pour détecter l'utilisation de la langue, les erreurs grammaticales, les mots de remplissage, la répétition de mots et de phrases, etc. et fournir des recommandations ainsi que suggérer une version organisée. du discours de l'utilisateur pour améliorer la présentation. Cette solution permet d'affiner les compétences de communication, de renforcer la confiance en soi et, à terme, de permettre aux individus de devenir des orateurs publics plus efficaces et plus percutants. Les organisations de divers secteurs, notamment les entreprises, les établissements d'enseignement, les entités gouvernementales et les personnalités des médias sociaux, peuvent tirer parti de cette solution pour fournir un coaching automatisé à leurs employés, étudiants et prises de parole en public.
Cette solution est écrite uniquement en python et utilise le modèle CDK pour déployer l'infrastructure requise sur AWS.
Présentation de la solution
La solution se compose de 4 éléments principaux :
- Groupe d'utilisateurs Amazon Cognito pour l'authentification des utilisateurs : les utilisateurs authentifiés ont accès au portail Web Public Speaking Mentor AI Assistant pour télécharger des enregistrements audio/vidéo.
- Un portail Web simple créé à l'aide de Streamlit pour télécharger des enregistrements audio/vidéo : les fichiers téléchargés sont stockés dans un compartiment Amazon Simple Storage Service (Amazon S3) pour un traitement, une récupération et une analyse ultérieurs.
- Un flux de travail AWS Step Functions pour orchestrer la conversion de l'audio en texte à l'aide d'Amazon Transcribe, puis l'appel d'Amazon Bedrock avec le chaînage d'invites de l'IA pour générer des recommandations vocales et des suggestions de réécriture.
- Amazon Simple Notification Service (Amazon SNS) pour envoyer une notification par e-mail à l'utilisateur avec les recommandations générées par Amazon Bedrock.
Cette solution exploite Amazon Transcribe pour la conversion parole en texte grâce à la reconnaissance vocale automatique. Lorsque l'utilisateur télécharge un fichier audio ou vidéo, Amazon Transcribe transcrit le discours en texte, qui est ensuite transmis comme données d'entrée au modèle Anthropic Claude 3.5 Sonnet hébergé sur Amazon Bedrock. La solution envoie deux invites à Amazon Bedrock avec le texte transcrit. La première invite sert à générer des commentaires et des recommandations sur l'utilisation de la langue, les erreurs grammaticales, les mots de remplissage, la répétition de mots et de phrases et d'autres aspects du discours. La deuxième invite consiste à obtenir une version organisée du discours original de l'utilisateur. Le chaînage des invites IA est effectué avec Amazon Bedrock pour ces deux invites afin de fournir une réponse hautement organisée. En fin de compte, la solution consolide les résultats des deux invites, affiche les recommandations complètes dérivées de l'aide d'Amazon Bedrock sur la page Web de l'utilisateur et envoie à l'utilisateur les résultats par e-mail. Actuellement, cette solution prend en charge la parole des utilisateurs uniquement en anglais.
Architecture
Le diagramme suivant montre l’architecture de notre solution.
Explorons l'architecture étape par étape :
- L'utilisateur s'authentifie sur le portail Web Public Speaking Mentor AI Assistant (une application Streamlit hébergée sur le bureau local de l'utilisateur) à l'aide du mécanisme d'authentification du pool d'utilisateurs Amazon Cognito.
- L'utilisateur télécharge un fichier audio/vidéo sur le portail Web, qui est stocké dans un compartiment Amazon S3 chiffré.
- Le service S3 déclenche un événement s3:ObjectCreated pour chaque fichier enregistré dans le compartiment.
- Amazon EventBridge appelle le flux de travail AWS Step Functions en fonction de cet événement.
- Le flux de travail AWS Step Functions utilise les intégrations AWS SDK pour appeler Amazon Transcribe et lance un StartTranscriptionJob, en transmettant le compartiment S3, le chemin du préfixe et le nom de l'objet dans le paramètre MediaFileUri. Le flux de travail attend la fin de la tâche de transcription et enregistre la transcription dans un autre chemin de préfixe de compartiment S3.
- Le flux de travail AWS Step Functions utilise ensuite les intégrations optimisées pour appeler l'API InvokeModel d'Amazon Bedrock, qui spécifie le modèle Anthropic Claude 3.5 Sonnet, l'invite système, le nombre maximal de jetons et le texte vocal transcrit comme entrées de l'API. L'invite du système demande à Claude de fournir des suggestions sur la manière d'améliorer le discours en identifiant une grammaire incorrecte, des répétitions de mots ou de contenu, l'utilisation de mots de remplissage et d'autres recommandations.
Important
Pour éviter de rencontrer la limitation de taille de charge utile StepFunctions de 256 Ko, nous utilisons les intégrations optimisées AWS Lambda dans Step Functions pour enregistrer la charge utile pour les paramètres d'inférence Bedrock dans un compartiment S3. La fonction AWS Lambda crée les charges utiles requises et les enregistre dans un compartiment S3 donné. Step Functions utilise ensuite le chemin du compartiment S3 dans le paramètre input
de l'API Bedrock InvokeModel - ce champ facultatif est spécifique à l'intégration optimisée d'Amazon Bedrock avec Step Functions. Cela nous permet de transmettre des charges utiles supérieures à 256 Ko.
- Après avoir reçu une réponse d'Amazon Bedrock, le flux de travail AWS Step Functions utilise le chaînage d'invites pour créer une autre entrée pour Amazon Bedrock, incorporant le discours transcrit précédent, la réponse précédente du modèle et demandant au modèle de fournir des suggestions pour réécrire le discours.
- Enfin, le flux de travail combine ces sorties d'Amazon Bedrock et crée un message qui est affiché sur la page Web de l'utilisateur connecté.
- À la fin, le flux de travail Step Functions appelle l'intégration optimisée SNS Publish pour envoyer un e-mail à l'utilisateur avec le message généré par Bedrock.
- L'application Streamlit interroge Step Functions pour afficher les résultats de sortie sur la page Web de l'utilisateur Cognito.
Machine d'état des fonctions d'étape
Le diagramme suivant montre le flux de travail Step Functions State Machine. Vous pouvez également accéder à l'équivalent Amazon States Language (ASL) de la définition de la machine d'état ici - PublicSpeakingMentorAIAssistantStateMachine ASL
Installation
Conditions préalables
Pour mettre en œuvre la solution Public Speaking Mentor AI Assistant, vous devez disposer des prérequis suivants :
Un compte AWS avec des autorisations AWS Identity and Access Management (IAM) suffisantes pour les services AWS ci-dessous afin de déployer la solution et d'exécuter le portail Web d'application Streamlit.
- Substrat amazonien
- Amazon Transcription
- Fonctions d'étape AWS
- AWS Lambda
- Amazon EventBridge
- Amazon Cognito
- Amazon SNS
- Amazone S3
- Amazon CloudWatch
- AWS CloudFormation
Accès au modèle activé pour le Sonnet Claude 3.5 d'Anthropic dans Amazon Bedrock dans la région AWS souhaitée
Environnement de bureau local avec AWS CLI (Command Line Interface), la dernière version d'AWS CDK (2.159.0 ou supérieure), Python 3.8 ou supérieur et Git installé.
Configuration de l'AWS CLI avec les informations d'identification AWS nécessaires et la région AWS souhaitée.
Important
Veuillez vous assurer que le dernier CDK est installé (v2.159.0 ou supérieur), car la prise en charge de la construction Anthropic Claude 3.5 Sonnet CDK n'est pas disponible dans les versions antérieures.
Déployer la solution Public Speaking Mentor AI Assistant
Effectuez les étapes suivantes pour déployer l'infrastructure AWS Public Speaking Mentor AI Assistant :
- Clonez le référentiel sur votre environnement de disque local avec la commande suivante :
git clone https://github.com/aws-samples/improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock.git
- Remplacez le répertoire par le référentiel cloné et le répertoire
app
qu'il contient.
cd improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock/app
- Créez un environnement virtuel Python pour l'infra :
- Activez votre environnement virtuel :
source .venv/bin/activate
- Installez les dépendances requises
pip install -r requirements.txt
- (Facultatif) Synthétisez le modèle AWS CloudFormation à l'aide d'AWS CDK (Cloud Development Kit) pour Python.
Conseil
Vous devrez peut-être effectuer un amorçage cdk unique à l'aide de la commande suivante. Voir Amorçage CDK pour plus de détails.
cdk bootstrap aws:// < ACCOUNT-NUMBER- 1> / < REGION- 1>
- Déployez le modèle AWS CloudFormation dans votre compte AWS et la région sélectionnée
Une fois le CDK déployé avec succès, suivez les étapes ci-dessous pour créer un utilisateur Cognito.
Créer un utilisateur Amazon Cognito pour l'authentification
Effectuez les étapes suivantes pour créer des utilisateurs dans le groupe d'utilisateurs Amazon Cognito afin d'accéder au portail Web. Les utilisateurs créés n'ont besoin d'aucune autorisation AWS :
- Connectez-vous à la console AWS de votre compte et sélectionnez la région AWS de votre déploiement.
- Dans Amazon Cognito, sous Pools d'utilisateurs, cliquez sur le pool d'utilisateurs créé par le modèle CloudFormation. Le nom du groupe d'utilisateurs aurait un préfixe PSMBUserPool suivi d'une chaîne de caractères aléatoires sous forme d'un seul mot.
- Cliquez sur le bouton Créer un utilisateur et entrez un nom d'utilisateur et un mot de passe.
- Cliquez enfin sur le bouton Créer un utilisateur en bas à droite.
Abonnez-vous au sujet SNS pour les notifications par e-mail
Suivez les étapes suivantes pour vous abonner au sujet SNS et recevoir des notifications par e-mail de recommandations vocales :
- Connectez-vous à la console AWS de votre compte et sélectionnez la région AWS de votre déploiement.
- Dans Amazon SNS, sous Sujets, cliquez sur le sujet créé par le modèle CloudFormation. Le nom du sujet doit ressembler à InfraStack-PublicSpeakingMentorAIAssistantTopic suivi d'une chaîne de caractères aléatoires comme un seul mot.
- Cliquez sur le bouton Créer un abonnement, sélectionnez Protocole comme e-mail dans la liste déroulante et entrez votre adresse e-mail dans la zone Point de terminaison.
- Cliquez enfin sur le bouton Créer un abonnement en bas à droite.
Exécutez l'application Streamlit pour accéder au portail Web
Suivez les étapes suivantes pour exécuter l'application Streamlit et accéder au portail Web Public Speaking Mentor AI Assistant :
- Changez le répertoire en
webapp
dans le répertoire app
.
- Lancez le serveur streamlit sur le port 8080.
streamlit run webapp.py --server.port 8080
- Notez l'URL de l'application Streamlit pour une utilisation ultérieure. En fonction de la configuration de votre environnement, vous pouvez choisir l'une des trois URL (locale, réseau ou externe) fournies par le processus en cours d'exécution du serveur Streamlit.
Note: Allow inbound traffic on port 8080
Assurez-vous que le trafic entrant sur le port 8080 est autorisé sur votre ordinateur local.
Usage
Suivez les étapes ci-dessous pour utiliser Public Speaking Mentor AI Assistant afin d'améliorer votre discours :
- Ouvrez l'URL de l'application Streamlit dans votre navigateur (Google Chrome de préférence) que vous avez notée lors des étapes précédentes.
- Connectez-vous au portail Web à l'aide du nom d'utilisateur et du mot de passe Amazon Cognito créés précédemment pour l'authentification.
- Téléchargez votre enregistrement audio/vidéo pour obtenir des recommandations vocales et des résultats de réécriture vocale.
- Cliquez sur Parcourir les fichiers pour localiser et sélectionner votre enregistrement.
- Cliquez sur le bouton Télécharger le fichier pour télécharger votre fichier dans le compartiment Amazon S3.
- Dès que le téléchargement du fichier est terminé, l'assistant IA Public Speaking Mentor traite la transcription audio et invite les étapes d'ingénierie pour générer des recommandations vocales et réécrire les résultats.
- Une fois le traitement terminé, vous pourrez voir les résultats des recommandations vocales et de la réécriture vocale sur la page Web ainsi que recevoir par e-mail via les notifications Amazon SNS.
- Sur le côté droit de la page Web, vous pouvez consulter toutes les étapes de traitement effectuées par la solution Public Speaking Mentor AI Assistant pour obtenir les résultats de votre parole.
Nettoyer
Effectuez les étapes suivantes pour nettoyer vos ressources :
- Terminez le processus de votre serveur d'applications Streamlit exécuté dans votre environnement à l'aide de l'opération Ctrl+C.
- Accédez au répertoire
app
dans votre référentiel. - Détruisez AWS CloudFormation à l'aide d'AWS CDK pour Python.
Quelques limites
- Le code fourni est destiné à servir de démonstration et de point de départ, et n'est pas prêt pour la production. L'application Python s'appuie sur des bibliothèques tierces telles que Streamlit et streamlit-cognito-auth. En tant que développeur, il est de votre responsabilité de vérifier, maintenir et tester correctement toutes les dépendances tierces. Les mécanismes d’authentification et d’autorisation en particulier devraient être soigneusement évalués. Plus généralement, vous devez effectuer des examens et des tests de sécurité avant d'incorporer ce code de démonstration dans une application de production ou avec des données sensibles.
- Dans cette démo, Amazon Cognito est dans une configuration simple. Notez que les groupes d'utilisateurs Amazon Cognito peuvent être configurés pour appliquer des politiques de mot de passe fortes, activer l'authentification multifacteur et définir AdvancedSecurityMode sur ENFORCED pour permettre au système de détecter et d'agir sur les tentatives de connexion malveillantes.
- AWS fournit divers services, non implémentés dans cette démo, qui peuvent améliorer la sécurité de cette application. Les services de sécurité réseau tels que les ACL réseau et AWS WAF peuvent contrôler l'accès aux ressources. Vous pouvez également utiliser AWS Shield pour la protection DDoS et Amazon GuardDuty pour la détection des menaces. Amazon Inspector effectue des évaluations de sécurité. Il existe de nombreux autres services et bonnes pratiques AWS qui peuvent améliorer la sécurité. Reportez-vous au modèle de responsabilité partagée AWS et aux conseils sur les meilleures pratiques de sécurité pour des recommandations supplémentaires. Le développeur est responsable de la mise en œuvre et de la configuration correctes de ces services pour répondre à leurs exigences de sécurité spécifiques.
- Une rotation régulière des secrets est recommandée, mais n'est pas implémentée dans cette démo.
Reconnaissance
La plupart du code de l'application Web simplifiée AWS Step Functions est inspiré du référentiel github AWS Samples suivant : déployer-streamlit-app
Sécurité
Voir CONTRIBUTION pour plus d'informations.
Licence
Cette bibliothèque est sous licence MIT-0. Voir le fichier LICENCE.