Public-Speaking-Mentor-AI-Assistent
Den zugehörigen Blogbeitrag zu diesem Repository finden Sie hier: Verbessern Sie Ihre Redefähigkeiten in der Öffentlichkeit mithilfe eines generativen KI-basierten virtuellen Assistenten mit Amazon Bedrock
Warnung
Dieses Beispiel dient nur zu Versuchszwecken und ist noch nicht serienreif. Die Bereitstellung dieses Beispiels kann Kosten verursachen . Bitte stellen Sie sicher, dass Sie die Infrastruktur anhand der am Ende bereitgestellten Anweisungen entfernen, wenn sie nicht mehr benötigt wird.
Verbessern Sie Ihre Redefähigkeiten mit einem GenAI-basierten virtuellen Assistenten mit Amazon Bedrock
Öffentliches Reden ist in der heutigen Welt eine entscheidende Fähigkeit, sei es für professionelle Präsentationen, im akademischen Umfeld oder für die persönliche Weiterentwicklung. Allerdings haben viele Menschen bei öffentlichen Reden mit Ängsten, mangelndem Selbstvertrauen und ineffektiver Kommunikation zu kämpfen. Die Beauftragung eines Trainers für öffentliches Reden ist teuer und nur begrenzt verfügbar. Mit dem Aufkommen von Large Language Models (LLMs) kann nun ein generativer KI-gestützter virtueller Assistent von Einzelpersonen mit unterschiedlichem Hintergrund und Standort sowie von Organisationen jeder Größe genutzt werden, um von der Echtzeitanalyse von Sprache und der Identifizierung von Bereichen zu profitieren Verbesserungsvorschläge und Vorschläge zur Verbesserung der Sprachvermittlung.
In diesem Repo stellen wir einen von Amazon Bedrock unterstützten virtuellen Assistenten vor, der das Audio in der Präsentationsrede transkribieren, es auf Sprachgebrauch, Grammatikfehler, Füllwörter, Wiederholungen von Wörtern und Sätzen usw. untersuchen und Empfehlungen geben sowie eine kuratierte Version vorschlagen kann der Benutzerrede, um die Präsentation zu verbessern. Diese Lösung trägt dazu bei, Kommunikationsfähigkeiten zu verfeinern, das Selbstvertrauen zu stärken und letztendlich Einzelpersonen zu befähigen, effektivere und wirkungsvollere Redner zu werden. Organisationen aus verschiedenen Branchen, darunter Unternehmen, Bildungseinrichtungen, Regierungsbehörden und Social-Media-Persönlichkeiten, können diese Lösung nutzen, um automatisiertes Coaching für ihre Mitarbeiter, Studenten und öffentliche Reden anzubieten.
Diese Lösung ist nur in Python geschrieben und verwendet eine CDK-Vorlage, um die erforderliche Infrastruktur auf AWS bereitzustellen.
Überblick über die Lösung
Die Lösung besteht aus 4 Hauptkomponenten:
- Amazon Cognito-Benutzerpool zur Benutzerauthentifizierung – authentifizierte Benutzer erhalten Zugriff auf das Webportal „Public Speaking Mentor AI Assistant“, um Audio-/Videoaufzeichnungen hochzuladen
- Ein einfaches Webportal, das mit Streamlit erstellt wurde, um Audio-/Videoaufzeichnungen hochzuladen. Die hochgeladenen Dateien werden zur späteren Verarbeitung, zum Abruf und zur Analyse in einem Amazon Simple Storage Service (Amazon S3)-Bucket gespeichert.
- Ein AWS Step Functions-Workflow zur Orchestrierung der Konvertierung des Audios in Text mithilfe von Amazon Transcribe und zum anschließenden Aufrufen von Amazon Bedrock mit KI-Eingabeaufforderungsverkettung, um Sprachempfehlungen zu generieren und Vorschläge zum Umschreiben zu erstellen.
- Amazon Simple Notification Service (Amazon SNS) zum Senden einer E-Mail-Benachrichtigung an den Benutzer mit von Amazon Bedrock generierten Empfehlungen.
Diese Lösung nutzt Amazon Transcribe für die Konvertierung von Sprache in Text durch automatische Spracherkennung. Wenn der Benutzer eine Audio- oder Videodatei hochlädt, transkribiert Amazon Transcribe die Rede in Text, der dann als Eingabedaten an das auf Amazon Bedrock gehostete Anthropic Claude 3.5 Sonnet-Modell übergeben wird. Die Lösung sendet zusammen mit dem transkribierten Text zwei Eingabeaufforderungen an Amazon Bedrock. Die erste Eingabeaufforderung dient der Generierung von Feedback und Empfehlungen zum Sprachgebrauch, zu Grammatikfehlern, Füllwörtern, Wort- und Satzwiederholungen und anderen Aspekten der Rede. Die zweite Aufforderung besteht darin, eine kuratierte Version der Originalrede des Benutzers zu erhalten. Die Verkettung von KI-Eingabeaufforderungen wird mit Amazon Bedrock für diese beiden Eingabeaufforderungen durchgeführt, um eine hochgradig kuratierte Antwort zu liefern. Letztendlich konsolidiert die Lösung die Ergebnisse beider Eingabeaufforderungen, zeigt die mit Amazon Bedrock abgeleiteten umfassenden Empfehlungen auf der Webseite des Benutzers an und sendet dem Benutzer die Ergebnisse per E-Mail. Derzeit unterstützt diese Lösung nur die Benutzersprache in englischer Sprache.
Architektur
Das folgende Diagramm zeigt unsere Lösungsarchitektur.
Lassen Sie uns die Architektur Schritt für Schritt erkunden:
- Der Benutzer authentifiziert sich beim Public Speaking Mentor AI Assistant-Webportal (einer Streamlit-Anwendung, die auf dem lokalen Desktop des Benutzers gehostet wird) mithilfe des Amazon Cognito-Benutzerpool-Authentifizierungsmechanismus.
- Der Benutzer lädt eine Audio-/Videodatei auf das Webportal hoch, die in einem verschlüsselten Amazon S3-Bucket gespeichert wird.
- Der S3-Dienst löst ein s3:ObjectCreated-Ereignis für jede Datei aus, die im Bucket gespeichert wird.
- Amazon EventBridge ruft den AWS Step Functions-Workflow basierend auf diesem Ereignis auf.
- Der AWS Step Functions-Workflow nutzt AWS SDK-Integrationen, um Amazon Transcribe aufzurufen und einen StartTranscriptionJob zu initiieren, wobei der S3-Bucket, der Präfixpfad und der Objektname im MediaFileUri-Parameter übergeben werden. Der Workflow wartet auf den Abschluss des Transkriptionsauftrags und speichert das Transkript in einem anderen S3-Bucket-Präfixpfad.
- Der AWS Step Functions-Workflow nutzt dann die optimierten Integrationen, um die InvokeModel-API von Amazon Bedrock aufzurufen, die das Anthropic Claude 3.5 Sonnet-Modell, die Systemeingabeaufforderung, maximale Token und den transkribierten Sprachtext als Eingaben für die API angibt. Die Systemaufforderung weist Claude an, Vorschläge zur Verbesserung der Sprache zu machen, indem er falsche Grammatik, Wiederholungen von Wörtern oder Inhalten, die Verwendung von Füllwörtern und andere Empfehlungen erkennt.
Wichtig
Um zu vermeiden, dass die StepFunctions-Nutzlastgrößenbeschränkung von 256 KB erreicht wird, verwenden wir für AWS Lambda optimierte Integrationen in Step Functions, um die Nutzlast für Bedrock-Inferenzparameter in einem S3-Bucket zu speichern. Die AWS Lambda-Funktion erstellt die erforderlichen Nutzlasten und speichert sie in einem bestimmten S3-Bucket. Step Functions verwendet dann den S3-Bucket-Pfad im input
der Bedrock InvokeModel-API – dieses optionale Feld ist spezifisch für die optimierte Integration von Amazon Bedrock mit Step Functions. Dadurch können wir Nutzdaten mit mehr als 256 KB übergeben.
- Nach Erhalt einer Antwort von Amazon Bedrock nutzt der AWS Step Functions-Workflow die Eingabeaufforderungsverkettung, um eine weitere Eingabe für Amazon Bedrock zu erstellen, indem er die vorherige transkribierte Rede und die vorherige Antwort des Modells einbezieht und das Modell auffordert, Vorschläge zum Umschreiben der Rede zu machen.
- Schließlich kombiniert der Workflow diese Ausgaben von Amazon Bedrock und erstellt eine Nachricht, die auf der Webseite des angemeldeten Benutzers angezeigt wird.
- Am Ende ruft der Step Functions-Workflow die für SNS Publish optimierte Integration auf, um eine E-Mail mit der von Bedrock generierten Nachricht an den Benutzer zu senden.
- Optimierte Anwendungsabfragen Schrittfunktionen zum Anzeigen von Ausgabeergebnissen auf der Webseite des Cognito-Benutzers.
Schrittfunktionen-Zustandsmaschine
Das folgende Diagramm zeigt den Step Functions State Machine-Workflow. Sie können hier auch auf das Amazon States Language (ASL)-Äquivalent der Zustandsmaschinendefinition zugreifen – PublicSpeakingMentorAIAssistantStateMachine ASL
Installation
Voraussetzungen
Für die Implementierung der Public Speaking Mentor AI Assistant-Lösung sollten Sie die folgenden Voraussetzungen erfüllen:
Ein AWS-Konto mit ausreichenden AWS Identity and Access Management (IAM)-Berechtigungen für die folgenden AWS-Dienste, um die Lösung bereitzustellen und das Streamlit Application Web Portal auszuführen.
- Amazonas-Grundgestein
- Amazon Transkribieren
- AWS-Schrittfunktionen
- AWS Lambda
- Amazon EventBridge
- Amazon Cognito
- Amazon SNS
- Amazon S3
- Amazon CloudWatch
- AWS CloudFormation
Modellzugriff für Anthropics Claude 3.5 Sonnet in Amazon Bedrock in Ihrer gewünschten AWS-Region aktiviert
Lokale Desktop-Umgebung mit AWS CLI (Command Line Interface), der neuesten Version von AWS CDK (2.159.0 oder höher), Python 3.8 oder höher und installiertem Git.
AWS CLI-Einrichtung mit den erforderlichen AWS-Anmeldeinformationen und der gewünschten AWS-Region.
Wichtig
Bitte stellen Sie sicher, dass Sie das neueste CDK installiert haben (v2.159.0 oder höher), da die Unterstützung für das Anthropic Claude 3.5 Sonnet CDK-Konstrukt in früheren Versionen nicht verfügbar ist.
Stellen Sie die Public Speaking Mentor AI Assistant-Lösung bereit
Führen Sie die folgenden Schritte aus, um die AWS-Infrastruktur von Public Speaking Mentor AI Assistant bereitzustellen:
- Klonen Sie das Repository mit dem folgenden Befehl auf Ihre lokale Festplattenumgebung:
git clone https://github.com/aws-samples/improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock.git
- Ändern Sie das Verzeichnis in das darin enthaltene geklonte Repository und
app
Verzeichnis.
cd improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock/app
- Erstellen Sie eine virtuelle Python-Umgebung für Infrastruktur:
- Aktivieren Sie Ihre virtuelle Umgebung:
source .venv/bin/activate
- Installieren Sie die erforderlichen Abhängigkeiten
pip install -r requirements.txt
- (Optional) Synthetisieren Sie die AWS CloudFormation-Vorlage mit AWS CDK (Cloud Development Kit) für Python.
Tipp
Möglicherweise müssen Sie mit dem folgenden Befehl ein einmaliges CDK-Bootstraping durchführen. Weitere Informationen finden Sie unter CDK-Bootstrapping.
cdk bootstrap aws:// < ACCOUNT-NUMBER- 1> / < REGION- 1>
- Stellen Sie die AWS CloudFormation-Vorlage in Ihrem AWS-Konto und in der ausgewählten Region bereit
Sobald das CDK erfolgreich bereitgestellt wurde, führen Sie die folgenden Schritte aus, um einen Cognito-Benutzer zu erstellen.
Erstellen Sie einen Amazon Cognito-Benutzer zur Authentifizierung
Führen Sie die folgenden Schritte aus, um Benutzer im Amazon Cognito-Benutzerpool für den Zugriff auf das Webportal zu erstellen. Die erstellten Benutzer benötigen keine AWS-Berechtigungen:
- Melden Sie sich bei der AWS-Konsole Ihres Kontos an und wählen Sie die AWS-Region Ihrer Bereitstellung aus.
- Klicken Sie in Amazon Cognito unter „Benutzerpools“ auf den von der CloudFormation-Vorlage erstellten Benutzerpool. Der Name des Benutzerpools hätte das Präfix PSMBUserPool, gefolgt von einer Folge zufälliger Zeichen als ein Wort.
- Klicken Sie auf die Schaltfläche „Benutzer erstellen“ und geben Sie einen Benutzernamen und ein Passwort ein.
- Klicken Sie abschließend unten rechts auf die Schaltfläche „Benutzer erstellen“.
Abonnieren Sie SNS Topic für E-Mail-Benachrichtigungen
Führen Sie die folgenden Schritte aus, um das SNS-Thema zu abonnieren und E-Mail-Benachrichtigungen mit Sprachempfehlungen zu erhalten:
- Melden Sie sich bei der AWS-Konsole Ihres Kontos an und wählen Sie die AWS-Region Ihrer Bereitstellung aus.
- Klicken Sie in Amazon SNS unter Themen auf das von der CloudFormation-Vorlage erstellte Thema. Der Name des Themas sollte wie folgt aussehen: „InfraStack-PublicSpeakingMentorAIAssistantTopic“, gefolgt von einer Folge zufälliger Zeichen als ein Wort.
- Klicken Sie auf die Schaltfläche „Abonnement erstellen“, wählen Sie „Protokoll als E-Mail“ aus der Dropdown-Liste aus und geben Sie Ihre E-Mail-Adresse in das Feld „Endpunkt“ ein.
- Klicken Sie abschließend unten rechts auf die Schaltfläche „Abonnement erstellen“.
Führen Sie die Streamlit-Anwendung aus, um auf das Webportal zuzugreifen
Führen Sie die folgenden Schritte aus, um die Streamlit-Anwendung für den Zugriff auf das Webportal „Public Speaking Mentor AI Assistant“ auszuführen:
- Ändern Sie das Verzeichnis im
app
Verzeichnis in webapp
.
- Starten Sie den Streamlit-Server auf Port 8080.
streamlit run webapp.py --server.port 8080
- Notieren Sie sich die URL der Streamlit-Anwendung zur weiteren Verwendung. Abhängig von der Einrichtung Ihrer Umgebung können Sie eine der drei URLs (Lokal, Netzwerk oder Extern) auswählen, die vom laufenden Prozess des Streamlit-Servers bereitgestellt werden.
Note: Allow inbound traffic on port 8080
Stellen Sie sicher, dass eingehender Datenverkehr auf Port 8080 auf Ihrem lokalen Computer zulässig ist.
Verwendung
Befolgen Sie die folgenden Schritte, um mit dem Public Speaking Mentor AI Assistant Ihre Rede zu verbessern:
- Öffnen Sie die Streamlit-Anwendungs-URL in Ihrem Browser (vorzugsweise Google Chrome), die Sie in den vorherigen Schritten notiert haben.
- Melden Sie sich mit dem zuvor erstellten Amazon Cognito-Benutzernamen und -Passwort zur Authentifizierung beim Webportal an.
- Laden Sie Ihre Audio-/Videoaufzeichnung hoch, um Sprachempfehlungen und Ergebnisse der Sprachumschreibung zu erhalten.
- Klicken Sie auf „Dateien durchsuchen“, um Ihre Aufnahme zu suchen und auszuwählen.
- Klicken Sie auf die Schaltfläche „Datei hochladen“, um Ihre Datei in den Amazon S3-Bucket hochzuladen.
- Sobald der Datei-Upload abgeschlossen ist, verarbeitet der Public Speaking Mentor AI Assistant die Audiotranskription und leitet technische Schritte ein, um Sprachempfehlungen zu generieren und Ergebnisse neu zu schreiben.
- Sobald die Verarbeitung abgeschlossen ist, können Sie die Ergebnisse der Sprachempfehlungen und der Sprachumschreibung auf der Webseite sehen und per E-Mail über Amazon SNS-Benachrichtigungen erhalten.
- Auf der rechten Seite der Webseite können Sie alle Verarbeitungsschritte überprüfen, die von der Public Speaking Mentor AI Assistant-Lösung durchgeführt werden, um Ihre Redeergebnisse zu erhalten.
Aufräumen
Führen Sie die folgenden Schritte aus, um Ihre Ressourcen zu bereinigen:
- Beenden Sie Ihren in Ihrer Umgebung ausgeführten Streamlit-Anwendungsserverprozess mit der Tastenkombination Strg+C.
- Wechseln Sie in Ihr Repository in
app
Verzeichnis. - Zerstören Sie AWS CloudFormation mit AWS CDK für Python.
Einige Einschränkungen
- Der bereitgestellte Code ist als Demo und Ausgangspunkt gedacht und nicht produktionsbereit. Die Python-App basiert auf Bibliotheken von Drittanbietern wie Streamlit und streamlit-cognito-auth. Als Entwickler liegt es in Ihrer Verantwortung, alle Abhängigkeiten von Drittanbietern ordnungsgemäß zu überprüfen, zu warten und zu testen. Insbesondere die Authentifizierungs- und Autorisierungsmechanismen sollten gründlich evaluiert werden. Generell sollten Sie Sicherheitsüberprüfungen und -tests durchführen, bevor Sie diesen Democode in eine Produktionsanwendung oder mit sensiblen Daten integrieren.
- In dieser Demo befindet sich Amazon Cognito in einer einfachen Konfiguration. Beachten Sie, dass Amazon Cognito-Benutzerpools so konfiguriert werden können, dass sie starke Passwortrichtlinien durchsetzen, die Multi-Faktor-Authentifizierung aktivieren und den AdvancedSecurityMode auf ENFORCED setzen, damit das System böswillige Anmeldeversuche erkennen und darauf reagieren kann.
- AWS bietet verschiedene Dienste an, die in dieser Demo nicht implementiert sind und die die Sicherheit dieser Anwendung verbessern können. Netzwerksicherheitsdienste wie Netzwerk-ACLs und AWS WAF können den Zugriff auf Ressourcen steuern. Sie können auch AWS Shield für den DDoS-Schutz und Amazon GuardDuty für die Bedrohungserkennung verwenden. Amazon Inspector führt Sicherheitsbewertungen durch. Es gibt viele weitere AWS-Services und Best Practices, die die Sicherheit verbessern können – weitere Empfehlungen finden Sie im AWS Shared Responsibility Model und in den Leitlinien zu Best Practices für Sicherheit. Der Entwickler ist für die ordnungsgemäße Implementierung und Konfiguration dieser Dienste verantwortlich, um seinen spezifischen Sicherheitsanforderungen gerecht zu werden.
- Eine regelmäßige Rotation der Geheimnisse wird empfohlen und ist in dieser Demo nicht implementiert.
Anerkennung
Der größte Teil des Codes für die Streamlit-Webanwendung von AWS Step Functions ist vom folgenden Github-Repo für AWS-Beispiele inspiriert: „deploy-streamlit-app“.
Sicherheit
Weitere Informationen finden Sie unter BEITRAGEN.
Lizenz
Diese Bibliothek ist unter der MIT-0-Lizenz lizenziert. Siehe die LICENSE-Datei.