mentor-ai-assistente de falar em público
Você pode encontrar a postagem do blog relacionada a este repositório aqui: Melhore as habilidades de falar em público usando um assistente virtual generativo baseado em IA com Amazon Bedrock
Aviso
Este exemplo é apenas para fins experimentais e não está pronto para produção. A implantação deste exemplo pode incorrer em custos . Certifique-se de remover a infraestrutura por meio das instruções fornecidas no final quando não for mais necessária.
Melhore as habilidades de falar em público usando um assistente virtual baseado em GenAI com Amazon Bedrock
Falar em público é uma habilidade crítica no mundo de hoje, seja para apresentações profissionais, ambientes acadêmicos ou crescimento pessoal. No entanto, muitos indivíduos lutam contra a ansiedade, a falta de confiança e a comunicação ineficaz durante palestras em público. Contratar um treinador para falar em público é caro e tem disponibilidade limitada. Agora, com o advento dos Large Language Models (LLMs), um assistente virtual baseado em IA generativa pode ser usado por indivíduos de diversas origens e locais, bem como por organizações de qualquer tamanho, para se beneficiar da análise de fala em tempo real, identificação de áreas para melhorias e sugestões para melhorar a entrega do discurso.
Neste repositório, apresentamos um assistente virtual desenvolvido pela Amazon Bedrock que pode transcrever o áudio no discurso de apresentação, examiná-lo quanto ao uso do idioma, erros gramaticais, palavras de preenchimento, repetição de palavras e frases, etc., e fornecer recomendações, bem como sugerir uma versão com curadoria da fala do usuário para melhorar a apresentação. Esta solução ajuda a refinar as habilidades de comunicação, aumentar a confiança e, em última análise, capacitar os indivíduos para se tornarem oradores públicos mais eficazes e impactantes. Organizações de vários setores, incluindo corporações, instituições educacionais, entidades governamentais e personalidades de mídia social, podem aproveitar esta solução para fornecer treinamento automatizado para seus funcionários, estudantes e palestras em público.
Esta solução foi escrita apenas em python e usa o modelo CDK para implantar a infraestrutura necessária na AWS.
Visão geral da solução
A solução consiste em 4 componentes principais:
- Grupo de usuários do Amazon Cognito para autenticação de usuário – usuários autenticados recebem acesso ao portal da Web Public Speaking Mentor AI Assistant para fazer upload de gravações de áudio/vídeo
- Um portal da web simples criado usando Streamlit para fazer upload de gravações de áudio/vídeo - os arquivos carregados são armazenados em um bucket do Amazon Simple Storage Service (Amazon S3) para processamento, recuperação e análise posteriores.
- Um fluxo de trabalho do AWS Step Functions para orquestrar a conversão de áudio em texto usando o Amazon Transcribe e, em seguida, invocar o Amazon Bedrock com encadeamento de prompts de IA para gerar recomendações de fala e sugestões de reescrita.
- Amazon Simple Notification Service (Amazon SNS) para enviar uma notificação por e-mail ao usuário com recomendações geradas pelo Amazon Bedrock.
Esta solução aproveita o Amazon Transcribe para conversão de fala em texto por meio de reconhecimento automático de fala. Quando o usuário carrega um arquivo de áudio ou vídeo, o Amazon Transcribe transcreve a fala em texto, que é então passado como dados de entrada para o modelo Anthropic Claude 3.5 Sonnet hospedado no Amazon Bedrock. A solução envia dois prompts ao Amazon Bedrock junto com o texto transcrito. O primeiro prompt serve para gerar feedback e recomendações sobre o uso do idioma, erros gramaticais, palavras de preenchimento, repetição de palavras e frases e outros aspectos do discurso. A segunda solicitação é para obter uma versão selecionada do discurso original do usuário. O encadeamento de prompts de IA é realizado com o Amazon Bedrock para que esses dois prompts forneçam uma resposta altamente selecionada. Em última análise, a solução consolida os resultados de ambos os prompts, exibe as recomendações abrangentes derivadas do Amazon Bedrock na página da Web do usuário e envia e-mails ao usuário com os resultados. Atualmente, esta solução suporta a fala do usuário apenas no idioma inglês.
Arquitetura
O diagrama a seguir mostra nossa arquitetura de solução.
Vamos explorar a arquitetura passo a passo:
- O usuário se autentica no portal da Web Public Speaking Mentor AI Assistant (um aplicativo Streamlit hospedado na área de trabalho local do usuário) utilizando o mecanismo de autenticação do grupo de usuários do Amazon Cognito.
- O usuário carrega um arquivo de áudio/vídeo no portal da web, que é armazenado em um bucket criptografado do Amazon S3.
- O serviço S3 aciona um evento s3:ObjectCreated para cada arquivo salvo no bucket.
- O Amazon EventBridge invoca o fluxo de trabalho do AWS Step Functions com base nesse evento.
- O fluxo de trabalho do AWS Step Functions utiliza integrações do AWS SDK para invocar o Amazon Transcribe e inicia um StartTranscriptionJob, passando o bucket S3, o caminho do prefixo e o nome do objeto no parâmetro MediaFileUri. O fluxo de trabalho aguarda a conclusão do trabalho de transcrição e salva a transcrição em outro caminho de prefixo do bucket S3.
- O fluxo de trabalho do AWS Step Functions utiliza então as integrações otimizadas para invocar a API InvokeModel do Amazon Bedrock, que especifica o modelo Anthropic Claude 3.5 Sonnet, o prompt do sistema, o máximo de tokens e o texto da fala transcrita como entradas para a API. O prompt do sistema instrui Claude a fornecer sugestões sobre como melhorar a fala, identificando gramática incorreta, repetições de palavras ou conteúdo, uso de palavras de preenchimento e outras recomendações.
Importante
Para evitar atingir a limitação de tamanho da carga útil do StepFunctions de 256 KB, usamos integrações otimizadas do AWS Lambda no Step Functions para salvar a carga útil dos parâmetros de inferência do Bedrock em um bucket S3. A função AWS Lambda cria as cargas necessárias e as salva em um determinado bucket S3. Em seguida, o Step Functions usa o caminho do bucket S3 no parâmetro input
da API Bedrock InvokeModel. Este campo opcional é específico para a integração otimizada do Amazon Bedrock com o Step Functions. Isso nos permite transmitir cargas superiores a 256 KB.
- Depois de receber uma resposta do Amazon Bedrock, o fluxo de trabalho do AWS Step Functions utiliza o encadeamento de prompts para criar outra entrada para o Amazon Bedrock, incorporando o discurso transcrito anterior, a resposta anterior do modelo e solicitando que o modelo forneça sugestões para reescrever o discurso.
- Por fim, o fluxo de trabalho combina essas saídas do Amazon Bedrock e cria uma mensagem que é exibida na página da web do usuário conectado.
- No final, o fluxo de trabalho do Step Functions invoca a integração otimizada do SNS Publish para enviar um e-mail ao usuário com a mensagem gerada pelo Bedrock.
- Consultas de aplicativos Streamlit Step Functions para exibir resultados de saída na página da web do usuário Cognito.
Máquina de estado de funções de etapa
O diagrama a seguir mostra o fluxo de trabalho da máquina de estado do Step Functions. Você também pode acessar o equivalente em Amazon States Language (ASL) da definição de máquina de estado aqui - PublicSpeakingMentorAIAssistantStateMachine ASL
Instalação
Pré-requisitos
Para implementar a solução Public Speaking Mentor AI Assistant, você deve ter os seguintes pré-requisitos:
Uma conta da AWS com permissões suficientes do AWS Identity and Access Management (IAM) para os serviços da AWS abaixo para implantar a solução e executar o portal da Web do aplicativo Streamlit.
- Base Amazônica
- Amazon Transcrição
- Funções de etapas da AWS
- AWS Lambda
- Amazon Event Bridge
- Amazon Cognito
- Amazon SNS
- Amazon S3
- Amazon CloudWatch
- AWS CloudFormation
Acesso ao modelo habilitado para o soneto Claude 3.5 da Anthropic no Amazon Bedrock na região desejada da AWS
Ambiente de desktop local com AWS CLI (Command Line Interface), versão mais recente do AWS CDK (2.159.0 ou superior), Python 3.8 ou superior e Git instalado.
Configuração da AWS CLI com as credenciais necessárias da AWS e a região desejada da AWS.
Importante
Certifique-se de ter o CDK mais recente instalado (v2.159.0 ou superior), pois o suporte para a construção Anthropic Claude 3.5 Sonnet CDK não está disponível em versões anteriores.
Implante a solução Public Speaking Mentor AI Assistant
Conclua as etapas a seguir para implantar a infraestrutura da AWS do Public Speaking Mentor AI Assistant:
- Clone o repositório em seu ambiente de disco local com o seguinte comando:
git clone https://github.com/aws-samples/improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock.git
- Mude o diretório para o repositório clonado e o diretório
app
dentro dele.
cd improve_public_speaking_skills_using_a_genai_based_virtual_assistant_with_amazon_bedrock/app
- Crie um ambiente virtual python para infra:
- Ative seu ambiente virtual:
source .venv/bin/activate
- Instale as dependências necessárias
pip install -r requirements.txt
- (Opcional) Sintetize o modelo AWS CloudFormation usando AWS CDK (Cloud Development Kit) para Python.
Dica
Pode ser necessário executar uma inicialização única do cdk usando o seguinte comando. Consulte Inicialização do CDK para obter mais detalhes.
cdk bootstrap aws:// < ACCOUNT-NUMBER- 1> / < REGION- 1>
- Implante o modelo AWS CloudFormation em sua conta AWS e região selecionada
Depois que o CDK for implantado com sucesso, siga as etapas abaixo para criar um usuário Cognito.
Criar usuário do Amazon Cognito para autenticação
Conclua as etapas a seguir para criar usuários no grupo de usuários do Amazon Cognito para acessar o portal da web. Os usuários criados não precisam de nenhuma permissão da AWS:
- Faça login no console AWS da sua conta e selecione a região AWS da sua implantação.
- No Amazon Cognito, em Grupos de usuários, clique no grupo de usuários criado pelo modelo CloudFormation. O nome do grupo de usuários teria um prefixo PSMBUserPool seguido por uma sequência de caracteres aleatórios como uma palavra.
- Clique no botão Criar usuário e insira um nome de usuário e senha.
- Por fim, clique no botão criar usuário no canto inferior direito.
Assine o tópico SNS para receber notificações por e-mail
Conclua as etapas a seguir para assinar o tópico SNS para receber notificações por e-mail de recomendações de fala:
- Faça login no console AWS da sua conta e selecione a região AWS da sua implantação.
- No Amazon SNS, em Tópicos, clique no tópico criado pelo modelo CloudFormation. O nome do tópico deve ser semelhante a InfraStack-PublicSpeakingMentorAIAssistantTopic seguido por uma sequência de caracteres aleatórios como uma palavra.
- Clique no botão Criar assinatura, selecione Protocolo como Email no menu suspenso e insira seu endereço de email na caixa Endpoint.
- Por fim, clique no botão criar assinatura no canto inferior direito.
Execute o aplicativo Streamlit para acessar o Portal da Web
Conclua as etapas a seguir para executar o aplicativo Streamlit para acessar o portal da web Public Speaking Mentor AI Assistant:
- Mude o diretório para
webapp
dentro do diretório app
.
- Inicie o servidor streamlit na porta 8080.
streamlit run webapp.py --server.port 8080
- Anote o URL do aplicativo Streamlit para uso posterior. Dependendo da configuração do seu ambiente, você pode escolher um dos três URLs (Local, Rede ou Externo) fornecidos pelo processo em execução do servidor Streamlit.
Note: Allow inbound traffic on port 8080
Certifique-se de que o tráfego de entrada na porta 8080 seja permitido em sua máquina local.
Uso
Siga as etapas abaixo para usar o Public Speaking Mentor AI Assistant para melhorar seu discurso:
- Abra o URL do aplicativo Streamlit em seu navegador (de preferência Google Chrome) que você anotou nas etapas anteriores.
- Faça login no portal da web usando o nome de usuário e a senha do Amazon Cognito criados anteriormente para autenticação.
- Carregue sua gravação de áudio/vídeo para obter recomendações de fala e resultados de reescrita de fala.
- Clique em Procurar arquivos para localizar e selecionar sua gravação.
- Clique no botão Carregar arquivo para fazer upload do arquivo para o bucket do Amazon S3.
- Assim que o upload do arquivo termina, o Public Speaking Mentor AI Assistant processa a transcrição do áudio e solicita etapas de engenharia para gerar recomendações de fala e reescrever os resultados.
- Assim que o processamento for concluído, você poderá ver os resultados das recomendações de fala e da reescrita de fala na página da web, bem como receber em seu e-mail por meio de notificações do Amazon SNS.
- No lado direito da página da web, você pode revisar todas as etapas de processamento realizadas pela solução Public Speaking Mentor AI Assistant para obter os resultados de seu discurso.
Limpar
Conclua as etapas a seguir para limpar seus recursos:
- Encerre o processo do servidor de aplicativos Streamlit em execução em seu ambiente usando a operação Ctrl+C.
- Mude para o diretório
app
em seu repositório. - Destrua o AWS CloudFormation usando AWS CDK para Python.
Algumas limitações
- O código fornecido é uma demonstração e um ponto de partida, não está pronto para produção. O aplicativo Python depende de bibliotecas de terceiros, como Streamlit e streamlit-cognito-auth. Como desenvolvedor, é sua responsabilidade examinar, manter e testar adequadamente todas as dependências de terceiros. Os mecanismos de autenticação e autorização, em particular, deverão ser cuidadosamente avaliados. De modo mais geral, você deve realizar análises e testes de segurança antes de incorporar esse código de demonstração em um aplicativo de produção ou com dados confidenciais.
- Nesta demonstração, o Amazon Cognito está em uma configuração simples. Observe que os grupos de usuários do Amazon Cognito podem ser configurados para aplicar políticas de senha fortes, habilitar a autenticação multifator e definir AdvancedSecurityMode como ENFORCED para permitir que o sistema detecte e atue em caso de tentativas de login mal-intencionadas.
- A AWS fornece vários serviços, não implementados nesta demonstração, que podem melhorar a segurança deste aplicativo. Os serviços de segurança de rede, como ACLs de rede e AWS WAF, podem controlar o acesso aos recursos. Você também pode usar o AWS Shield para proteção contra DDoS e o Amazon GuardDuty para detecção de ameaças. O Amazon Inspector realiza avaliações de segurança. Existem muitos outros serviços e práticas recomendadas da AWS que podem aprimorar a segurança. Consulte o modelo de responsabilidade compartilhada da AWS e as orientações de práticas recomendadas de segurança para obter recomendações adicionais. O desenvolvedor é responsável por implementar e configurar adequadamente esses serviços para atender aos seus requisitos de segurança específicos.
- Recomenda-se a rotação regular de segredos, não implementada nesta demonstração.
Reconhecimento
A maior parte do código do webapp streamlit do AWS Step Functions é inspirada no seguinte repositório github de exemplos da AWS: deploy-streamlit-app
Segurança
Consulte CONTRIBUINDO para obter mais informações.
Licença
Esta biblioteca está licenciada sob a licença MIT-0. Veja o arquivo LICENÇA.