Pular para o conteúdo principal

Amazon Lex Tutorial: Um guia para iniciantes sobre chatbots de IA

Uma introdução à criação de chatbots com o Amazon Lex. Saiba como instalar e configurar um bot, usá-lo com serviços de back-end e implantá-lo em diferentes plataformas.
Actualizado 25 de fev. de 2025  · 35 min de leitura

Os chatbots com reconhecimento de contexto acompanham as entradas anteriores do usuário e as relacionam às interações recentes. Isso permite que eles interajam com os usuários em um estilo de conversação e aprimorem a experiência do usuário. O Amazon Lex é um chatbot com reconhecimento de contexto do pacote Amazon Web Services (AWS). Ele foi lançado em 2017 e uma versão aprimorada, Lex V2, foi lançada em 2021.

Neste tutorial, apresento os conceitos básicos do AWS Lex V2 e demonstro como você pode usá-lo. Falarei sobre como instalar e configurar o Lex, criar seu primeiro chatbot Lex e interagir com back-ends externos. Também apresentarei uma visão geral da integração do Lex com plataformas de terceiros, como sites e aplicativos de mensagens. 

O que é o Amazon Lex?

O Amazon Lex é um mecanismo de conversação baseado em IA oferecido pela AWS. O Lex aceita entradas do usuário na forma de voz e texto. O desenvolvedor especifica o fluxo da conversa. Com base nisso, o Lex gerencia o diálogo respondendo às entradas do usuário. A interface de conversação pode ser implantada como um bot de voz, aplicativo da Web, plataforma de bate-papo (como o Slack ou o Facebook Messenger), etc.  O Lex também é usado para criar o Amazon Alexa.

O Lex combina duas funcionalidades básicas: compreensão de linguagem natural (NLU) e reconhecimento automático de fala (ASR). Ele permite que os desenvolvedores sem experiência em aprendizagem profunda criem interfaces de conversação para chatbots, assistentes virtuais e similares.

Por ser uma oferta da Amazon, ele se integra a outros serviços da AWS, como:

  • Amazon Cognito (para gerenciamento de identidade)
  • Amazon CloudWatch (para monitorar o serviço)
  • DynamoDB (para o back-end do banco de dados)
  • Amazon Lambda (para se conectar a fontes de dados externas, como Salesforce e HubSpot), etc.

Essas integrações facilitam a implantação e o dimensionamento do serviço de IA conversacional. 

Configurando o Amazon Lex

Nesta seção, mostrarei como configurar o Amazon Lex. 

Observe que a interface de usuário do AWS muda com frequência. Portanto, o layout e o texto de várias seções e títulos nas instruções e capturas de tela podem mudar com o tempo ou de região para região. 

Etapa 1: Faça login no console do AWS

Presumo que você já tenha uma conta do AWS. Caso contrário, siga as instruções na páginae AWS Signup e registre uma nova conta.

Neste guia, usaremos o console do AWS para configurar e usar o Lex. Insira suas credenciais do AWS para fazer login no console do AWS Lex e acesse a página inicial do Lex.

Etapa 2: Criar um novo bot

A tela acima leva você à página inicial do Bots (mostrada abaixo). Essa página mostra a lista de bots que você já criou.

Página inicial do Amazon Lex Bots.

Página inicial do Amazon Lex Bots.

  • Nessa página, selecione Criar bot.

Isso levará você à página de configuração de um novo bot. Ele mostra dois métodos de criação de bots: Tradicional e Gerativa IA.

Crie um novo bot no Amazon Lex.

Crie um novo bot.

Queremos aprender o processo de instalação e configuração de bots. Portanto, escolha ométodo Traditional e comece com um bot em branco .

  • Nome do bot: Dê um nome e uma descrição ao bot. Neste artigo, criamos um bot simples chamado "CabBookBot" para reservar um táxi .
  • Permissões de IAM: Escolha a função correta para gerenciar a autorização e a autenticação do bot.
    • Se você já tiver criado bots antes, escolha uma das funções existentes no menu suspenso.
    • Se este for seu primeiro bot, escolha "Criar uma função com permissões básicas do Amazon Lex". 
  • COPPA: Se esse bot for projetado para atender crianças e menores, especifique que ele está sujeito à COPPA (Children's Online Privacy Protection Act). Nós escolhemos "Não". 
  • Tempo limite da sessão ociosa: Os bots devem se lembrar das mensagens anteriores do usuário para manter o "contexto" durante a conversa. Se um usuário não responder há algum tempo, presumimos que ele não usa mais o bot e redefinimos o contexto para um novo usuário. Deixe esse valor como padrão. 

Você não precisa atualizar as configurações avançadas opcionais; basta ir para a próxima seção. 

Você também deve configurar o(s) idioma(s) do bot porque os bots da Lex são baseadosno processamento de linguagem natural (NLP).

  • Neste exemplo, usamos o padrão Inglês (EUA) idioma.
  • Mantenha as configurações padrão e selecione Concluído.

Em seguida, você será direcionado para a seção Intents que configuraremos na próxima seção.

Depois de criar um bot básico, vou explicar como configurá-lo para o caso de uso desejado: reservar um táxi.

Etapa 3: Configurar intenções

Como o nome sugere, as intenções representam a intenção do usuário ou o objetivo da conversa. Por exemplo, o usuário pode querer reservar um hotel ou um voo. Cada bot pode atender a vários objetivos. 

Com o fornecimento de alguns textos de exemplo (chamados de exemplos de enunciados) para cada intenção, o Lex usa a NLP para reconhecer e combinar a entrada do usuário com a intenção correta com base nesses enunciados. Por exemplo, um bot de reserva de táxi pode ter exemplos de expressões como "Quero reservar um táxi", "Reserve um táxi para mim de X a Y nesta data" etc. 

Depois de selecionar Concluído na página de criação do bot na etapa anterior, você será levado à página onde poderá criar uma nova intenção chamada NewIntent.

Na página Intent:

  • Encontre o Fluxo de Conversação na parte superior. Isso ilustra o fluxo e os exemplos de mensagens de texto para cada etapa da conversa. 
  • Atualize o nome da intenção para algo significativo, como "CabBookIntent", e forneça uma descrição relevante.

Etapa 4: Adicionar exemplos de enunciados

O Lex precisa de alguns exemplos de enunciados para cada intenção para reconhecer se a necessidade do usuário corresponde à intenção atual. 

  • Na página Intent, role para baixo até a seção Sample utterances (Exemplos de expressões ). 
  • Altere a janela do editor para Plain Text
  • Adicione alguns exemplos de enunciados, um em cada linha, por exemplo:
    • Quero reservar um táxi
    • Reserve um táxi para mim
    • Preciso fazer uma reserva de táxi

Exemplos de expressões no Amazon Lex.

Exemplos de expressões.

  • Adicione uma resposta inicial, como, por exemplo, "Ok, vou ajudar você a reservar um táxi", para confirmar a solicitação do usuário. 

Criando um fluxo de conversação

Os bots Lex seguem uma estrutura de conversa predefinida. O fluxo da conversa descreve e fornece as especificações para os componentes da conversa. Nesta seção, explico como projetar a conversa para se comunicar com o usuário e obter as informações necessárias para atender à sua solicitação.

Etapa 1: Adicione slots para capturar a entrada do usuário

O bot precisa solicitar informações relevantes ao usuário. Os slots contêm informações que o bot precisa para atender à solicitação do usuário. Por exemplo, o bot de reserva de táxi recebe as cidades de partida e de destino e a data da viagem como valores de slot. 

Adicione slots a intenções no Amazon Lex.

Adicione espaços às intenções.

Para cada slot, você precisa especificar esses parâmetros:

  • Nome do slot: O bot usa esse nome como um espaço reservado para o valor do slot. Por exemplo, você pode configurar a resposta do bot como "You want to travel from {SourceCity}" e ele substitui automaticamente o valor do slot SourceCity inserido pelo usuário.
  • Tipo de slot: Assim como as variáveis de programação, os slots Lex podem ser de vários tipos. Existem muitos tipos de slots pré-construídos, como AMAZON.City, AMAZON.Date, etc. Você também pode adicionar tipos de slots personalizados (discutidos posteriormente).
  • Sugestão: Forneça um modelo de texto que o bot possa usar para perguntar (solicitar) ao usuário o valor de cada slot.
  • Selecione Add Slot e adicione os seguintes slots, marcando-os conforme necessário:

Nome do slot

Tipo de slot

Prompt

Cidade de origem

AMAZON.City

De qual cidade você estará viajando?

DestinationCity

AMAZON.City

Para qual cidade você vai viajar?

Data da viagem

AMAZON.Date

Em que data você vai viajar?

  • Acrescente alguns enunciados adicionais que capturam diretamente os valores dos slots. Por exemplo:
    • Reserve um táxi em {TravelDate} de {SourceCity} para {DestinationCity}
    • Reserve um táxi de {SourceCity} para {DestinationCity} para {TravelDate}

Slots personalizados

Os tipos de slots embutidos nem sempre são suficientes para todos os casos de uso. Por exemplo, um serviço de reserva de táxi pode ter um tipo de vaga para o tipo de carro (compacto, hatchback, sedã, SUV etc.) que o usuário deseja. 

Para adicionar um slot personalizado:

  • Ir para Tipos de slot no menu da coluna da esquerda:
    • CabBookBot > Versões do bot > Versão de rascunho > Todos os idiomas > Inglês (EUA) > Tipos de caça-níqueis). 
  • Adicione um nome (como CabType) e uma descrição para o novo tipo de slot. 
  • Escolha um dos dois tipos de valores de slot: 
    • Expandir: Você fornece alguns valores de amostra para o slot, e o Lex os usa como exemplos para aprender novos valores possíveis. Por exemplo, com uma lista de sobrenomes, o Lex adapta o tipo de slot para aceitar sobrenomes semelhantes que você não listou explicitamente. 
    • Restringir: O slot só aceita valores da lista que você fornecer. Ele não aprenderá novos valores. 

Nesse caso, temos alguns tipos de cabine predeterminados. Portanto, restringimos nossos valores de slot a esses tipos.

  • Você também pode fornecer valores alternativos para cada valor. Por exemplo, para o tipo de táxi, Limo é um valor aceitável para Limousine

Slots personalizados no Amazon Lex.

Slots personalizados.

  • Selecione Salvar tipo de slot. O novo tipo de slot fica disponível quando você adiciona um slot à intenção.

Etapa 2: Configurar a solicitação e o tratamento de erros

Quando o usuário fornece uma resposta inválida a um prompt que solicita um valor de slot, o Lex repete o prompt. A sessão é encerrada quando o usuário falha repetidamente em dar uma resposta adequada (como um nome de cidade válido). 

Configure o Lex para lançar uma mensagem de erro (antes de encerrar a sessão) se o usuário não conseguir fornecer repetidamente um valor de slot válido:

  • Selecione um slot individual e selecione Opções avançadas para esse slot. 
  • Role a janela de opções avançadas para baixo até a seção Captura de slot: resposta a falhas
  • Forneça uma resposta apropriada para entradas inválidas. Por exemplo, se o usuário inserir repetidamente uma cidade que não é reconhecida, o bot pode responder: "Desculpe, mas não atendemos a essa cidade".

Tratamento de erros e resposta a falhas no Amazon Lex.

Tratamento de erros e resposta a falhas.

Todos os bots têm um FallbackIntent, que é invocado quando a entrada do usuário não corresponde às intenções existentes. Como essa intenção é invocada como padrão, seus enunciados não podem ser personalizados. 

  • Especifique uma resposta final significativa com o FallbackIntent e encerre a conversa. 

Resposta de fechamento da Amazon Lex.

Resposta de encerramento. 

Etapa 3: Confirmação, cumprimento e fechamento

Confirme a intenção do usuário após obter os valores apropriados para os slots e antes de atender à solicitação. 

  • Use a seção Confirmação para fornecer um prompt de confirmação. 
  • Observe que há um pequeno botão de alternância para a caixa de diálogo Confirmação. Ative-o. 

É comum incluir os valores de slot no prompt de confirmação. Por exemplo: "Por favor, confirme (sim ou não) que você deseja fazer uma reserva de {SourceCity} para {DestinationCity} em {TravelDate}". 

  • Forneça uma resposta Decline caso o usuário responda negativamente ao prompt de confirmação. Por exemplo, "Ok, não faremos essa reserva". 

Aviso de confirmação do Amazon Lex.

Prompt de confirmação.

A resposta de atendimento indica ao usuário que o bot está começando a atender à sua solicitação (reservar o táxi). 

  • Na seção Fulfillment (Atendimento), forneça outra mensagem após o atendimento bem-sucedido da solicitação. Por exemplo, "Ok, fizemos essa reserva". 

A resposta de fechamento é a mensagem final enviada ao usuário. Por exemplo, "Obrigado por viajar conosco. Faça uma boa viagem!". 

  • Atualize as respostas e selecione Salvar intenção.

Atendimento e respostas de fechamento do Amazon Lex.

Respostas de cumprimento e fechamento. 

Testando seu Amazon Lex Bot

Agora que criamos o bot e sua estrutura de conversação, podemos testá-lo! 

Etapa 1: Teste no console do Lex

  • Encontre os botões Build e Test na parte superior da página Intents
  • Crie o bot. Você deve reconstruir o bot após cada alteração. 
  • Selecione Testar para testar o bot no console Lex. 
  • Digite mensagens relevantes na janela de bate-papo pop-up e responda às solicitações do bot. 

Testando o bot do Amazon Lex.

Testando o bot do Amazon Lex.

Erros comuns de configuração

Algumas das seções, como Confirmação, Cumprimento e Resposta de encerramento, são, em princípio, opcionais. Para ativar uma seção, ative a chave de alternância. 

Em alguns casos, a ativação de uma seção ou resposta ativa automaticamente uma função Lambda para essa seção. Se uma seção específica tiver o botão de alternância da função Lambda definido como "ligado", mas não houver nenhuma função Lambda associada, você receberá um erro como o mostrado abaixo:

Cannot call FulfillmentCodeHook for Intent CabBookIntent. BotAlias/LocaleId TestBotAlias/en_US doesn't have an associated Lambda Function.

O erro acima vem da seção Fulfillment (Cumprimento ). Para resolver isso, vá para as configurações avançadas na seção relevante e desmarque a opção de usar uma função Lambda. 

Outro erro semelhante ocorre quando o fluxo está mal configurado. Por exemplo, considere esta mensagem de erro no estágio de compilação:

'ElicitSlot' next step at 'InitialResponse:CodeHook:Success' in intent 'CabBookIntent' contains invalid slotToElicit setting. slotToElicit must be a required Slot within the intent. Change the slot name in slotToElicit and try your request again.

Para solucionar esse erro, acesse as opções avançadas em para obter a resposta inicial. Observe que a opção Dialog Code hook está ativa. No entanto, nesta etapa, ainda não ativamos as funções Lamba nem as configuramos para inicializar a conversa. Desative o gancho de código e atualize o bot; ele deverá ser criado normalmente. 

Opções avançadas do Amazon Lex para resposta inicial.

Opções avançadas para resposta inicial.

Etapa 2: Teste com voz (opcional)

Os bots Lex funcionam por padrão com texto e voz. 

  • Pressione o ícone do microfone na janela de bate-papo para se comunicar por voz.
  • O texto do espaço reservado no campo de entrada muda para "Listening...". 
  • Diga sua intenção, por exemplo, "Quero reservar um táxi". 
  • Pressione a marca de seleção à direita do campo de entrada de texto. 
  • O Lex transcreverá brevemente a entrada de voz e responderá com áudio. 

O Amazon Polly converte texto em fala natural. Ele é usado em aplicativos baseados em fala, como leitores de notícias, jogos, bots etc., para gerar fala semelhante à humana a partir de texto. Desde 2021, o Amazon Lex oferece suporte ao Amazon Polly Neural Text-to-Speech (NTTS). Assim, o bot Lex pode gerar diretamente respostas de voz com som natural. 

Para configurar a voz do bot:

  • Na página inicial do bot, selecione Exibir idiomas.
    • Escolha o idioma apropriado. 
    • Você também pode selecionar o idioma relevante na seção Todos os idiomas no menu à esquerda.
  • No Detalhes do idioma selecione Editar.
    • Isso leva você ao Idioma página.
  • Sob o Voz você pode ouvir várias amostras de voz e selecionar a voz de conversão de texto em fala preferida.

Definindo um Fulfillment com o AWS Lambda

Na prática, um bot precisa se comunicar com outros serviços de back-end. Por exemplo, um bot de reserva de táxi precisa enviar as informações da viagem para um endpoint de API e receber uma resposta bem-sucedida. As funções lambda ajudam você a fazer isso. 

As funções do AWS Lambda são uma maneira de escrever a lógica do lado do servidor e executá-la sem precisar alugar explicitamente um VPS ou instâncias de computação. 

Para começar com as funções Lambda:

  • Vá para a página inicial do AWS Lambda.
  • Selecionar Criar função.
  • Para este exemplo, escolha a opção de criar uma função do zero. 
  • Escolha Python 3.x (3.13 no momento da redação) como a linguagem e x86_64 como o processador para executar a função. 
  • Se esta for sua primeira função Lambda, crie uma nova função. Você também pode usar uma das funções existentes se souber que ela tem as permissões corretas. 
  • Selecionar Criar função.
  • Digite o código da função no campo Código na página da Web da função Lambda específica.

Abaixo, mostramos uma função Lambda curta que envia uma mensagem de sucesso para o Cumprimento seção:

import json
import urllib.request

def lambda_handler(event, context):
    slots = event['sessionState']['intent']['slots']
    intent = event['sessionState']['intent']['name']

    if event['invocationSource'] == 'FulfillmentCodeHook':
        message = "Lambda has placed your reservation"
        response = {
            "sessionState": {
                "dialogAction": {
                    "type": "Close"
                },
                "intent": {
                    'name':intent,
                    'slots': slots,
                    'state':'Fulfilled'
                    }
            },
            "messages": [
                {
                    "contentType": "PlainText",
                    "content": message
                }
            ]
        }
        return response

Configure o bot para chamar essa função Lambda:

  • Vá para a página inicial do bot. No menu à esquerda, selecione a opção Aliases (Deployment > Aliases) .
  • Por padrão, ele já deve ter um alias com o nome TestBotAlias.
    • Selecione o alias.
  • Na página do alias, em idiomas, encontre o idioma do bot. Este exemplo está em English(US).
    • Selecione o idioma. 
  • Na página da linguagem, localize a seção Função Lambda. 
    • Em fonte, selecione o nome da sua função Lambda. 
    • A opção padrão para a versão é $LATEST. Deixe-o inalterado. 
  • Salve as alterações.

Neste exemplo, queremos usar a função Lambda no estágio de atendimento:

  • Na página Intent, vá para Opções avançadas na seção Cumprimento seção.
  • Na seção Gancho de código Lambda de atendimentomarque a caixa de seleção com o rótulo Usar uma função Lambda para atendimento.
  • Salve as alterações (selecione Atualizar opções) para as opções de Fulfillment.
  • Salve a intenção. 
  • Vá para a página Intent do bot, crie-o e teste-o. Você pode usar o bot para criar um novo bot. 

Agora, a resposta vem da função Lambda:

Testando a função Lambda integrada ao bot Lex.

Testando a função Lambda integrada ao bot Lex.

Implementação do Amazon Lex Bot

Depois de criar e testar o bot Lex, você está pronto para implantá-lo. A implementação é um tópico complexo cujas especificidades dependem do caso de uso individual. Nesta seção, apresento uma visão geral de vários métodos comuns de implantação. 

Etapa 1: Implementação em um aplicativo da Web ou móvel

O Lex pode ser integrado a aplicativos da Web e aplicativos móveis usando a API, o SDK ou bibliotecas pré-construídas:

  • CloudFormation: O AWS CloudFormation é uma solução de infraestrutura como código. Ele permite que você use arquivos YAML para agrupar, provisionar, implantar e gerenciar vários recursos do AWS como um produto completo. O CloudFormation tem modelos para integrar vários produtos da AWS, como buckets S3, funções Lambda, bots Lex e muito mais. Use o arquivo de modelo Lex YAML para configurar o bot Lex como parte de um projeto CloudFormation. 
  • Integração do site: A AWS disponibilizou um conjunto de arquivos de carregador Javascript e o AWS SDK para carregar um bot em um site. Isso inclui os arquivos pré-construídos da interface do usuário do Lex e uma biblioteca de carregamento para carregar o bot do Lex. O bot pode ser integrado a um site como uma página da Web independente ou um iframe. 
  • Aplicativos nativos móveis: O AWS Amplify inclui as ferramentas para integração com vários front-ends móveis e da Web, como ReactJS/React Native, NextJS, Angular, Android, iOS e muito mais. A documentação do Amplify explica como você pode configurar um bot Lex para trabalhar com esses SDKs.
  • Lex API: Para ter controle total sobre as interações e a interface, você pode usar a API Lex. Usando a API, você pode passar as mensagens do usuário e do bot (entre si) e, ao mesmo tempo, manter o controle da experiência do usuário por meio do seu aplicativo. O Lex oferece duas APIs:
    • A API de tempo de execução é usada para interação com o usuário, conforme explicado acima. 
    • A API Build é usada para criar e configurar o bot Lex programaticamente em vez de usar a GUI. 

As etapas a seguir apresentam um esboço de como você pode implantar o chatbot como uma página da Web:

  • Use a biblioteca Lex Web UI Loader. Essa biblioteca cria um objeto ChatBotUiLoader, que inclui os construtores FullPageLoader() e IframeLoader. A função load() desses construtores carrega o bot na página ou no iFrame, respectivamente.
  • Para carregar o bot na página da Web, especifique a configuração do chatbot:
    • A ID do pool do Cognito. Observe que você precisa de um pool de identidade do AWS Cognito para se conectar ao bot. Você pode criar um pool de identidades no console do AWS Cognito. Você deve vincular o pool de identidade do Cognito ao bot do Lex. 
    • O nome e os detalhes do bot Lex. 
  • Carregue o bot usando a função .load()

O snippet abaixo mostra o esboço de uma função JavaScript que implementa um bot Lex em uma página da Web: 

 <!-- LexWebUi loader -->
  <script src="./lex-web-ui-loader.js"></script>
  <script>
    // instantiate the loader
    var lexWebUiLoader = new ChatBotUiLoader.FullPageLoader();

    var chatbotUiconfig = {
     cognito: {
       poolId: 
     },
     lex: {
        initialText: 'How can I help you?',
        botName: 'CabBookBot'
      },
      ui: {
        toolbarTitle: 'Cab Booking Lex Bot',
        toolbarLogo: ''
      },
    };

    lexWebUiLoader.load(chatbotUiConfig)
      .then(function () {
        console.log('chatbot UI loaded');
      })
      .catch(function (error) {
        console.error('chatbot UI failed to load', error);
      });
   </script>

Etapa 2: Integração com plataformas de mensagens 

Você pode integrar o bot Lex com serviços de mensagens de terceiros, como Facebook Messenger, Slack e Twilio SMS

Nesta seção, discutiremos como integrar o Lex ao Facebook Messenger. Antes de começar, você precisa: 

  • Uma conta de desenvolvedor do Facebook
  • Uma página de negócios no Facebook. Observe que o aplicativo do Facebook precisa de permissão para usar a API de mensagens com o Lex. Somente aplicativos revisados e aprovados pelo Facebook como aplicativos comerciais verificados recebem essas permissões. 

Abaixo, descrevo as etapas para integrar o bot Lex ao Facebook Messenger para que os usuários que enviarem mensagens para a sua página do Facebook possam receber respostas do bot. 

  • Crie um novo aplicativo Business se você ainda não tiver um. 
    • Nos casos de uso do aplicativo, escolha Outros.
    • Selecione Negócios como o tipo de aplicativo.
  • Você pode adicionar vários produtos do Facebook a cada aplicativo, como Messenger, Instagram, etc. Adicione o Messenger ao aplicativo e escolha Set up.
  • Na seção Configuração da API do Messenger seção:
    • Conecte sua página comercial do Facebook a esse aplicativo. 
    • Gere um novo token (com o botãoGenerate ) para esse aplicativo. Copie esse token em um editor de texto. 
    • Observe a mensagem, "Para enviar e receber mensagens, solicite a permissão pages_messaging". Selecione Request Permission para solicitar as permissões necessárias .
    • Se o seu aplicativo ainda não tiver sido analisado e aprovado pelo Facebook, envie-o para análise. 
  • De Configurações do aplicativo nas opções do menu à esquerda, escolha Básico.
    • Selecione Mostrar em Segredo do aplicativo e copie o código secreto em um arquivo de texto.

Agora, vá para o console Lex e escolha o bot que você deseja integrar ao Messenger. 

  • Na árvore do menu à esquerda, localize Integrações de canal em Implantação.
  • Selecionar Adicionar canal em Criar canal:
  • Selecione Facebook em Plataforma.
  • Escolha Chave KMS em Políticas de identidade.
  • Em Configuração de integração:
    • Dê um nome à integração
    • Escolha um alias (do bot Lex) que você deseja integrar ao Messenger
    • Escolha o idioma. 
  • Em Configuração adicional:
    • Em Alias, digite uma cadeia de caracteres para identificar o aplicativo que está chamando o Lex. Você precisará desse fio mais tarde. 
    • Em Token de acesso à páginadigite o token de acesso que você copiou no Facebook.
    • Em Chave secreta do aplicativodigite a chave secreta que você copiou no Facebook.
  • Use o botão Adicionar para criar o novo canal.
  • Retorne à página Integrações de canal e selecione o canal que você criou. 
  • Copie o URL em Ponto final na seção URL de retorno de chamada na seção Callback URL.

Volte para o console do desenvolvedor do Facebook e abra o aplicativo que você criou anteriormente. 

  • No menu à esquerda, em Messengerselecione Configurações da API do Messenger.
    • Sob URL de retorno de chamadadigite o URL de retorno de chamada que você copiou no console Lex.
    • Em Verificar tokeninsira a string de alias que você inseriu no console Lex.
    • Verifique e salve as alterações.
    • Em Webhooks, selecione Adicionar assinaturas. Selecione messages na janela pop-up, seguido de Save (Salvar).

Agora você pode enviar mensagens para a página do Facebook com os exemplos de expressões do bot Lex e obter respostas relevantes. 

Etapa 3: Conectar o Lex ao AWS Lambda para aumentar a interatividade

Escrevemos uma função Lambda simples para a seção de atendimento na seção anterior. Ele só retornou uma mensagem de texto: "A Lambda fez a reserva para você." Na prática, enviaríamos a mensagem de sucesso depois de atender à solicitação. 

Por exemplo, a função Lambda envia uma solicitação com os detalhes da reserva do usuário para a API de backend, que faz a reserva e, em seguida, responde ao usuário com base na resposta da API.

Veja como você faria o procedimento acima:

  • O objeto JSON slots na função Lambda contém os valores de slot. Estude sua estrutura usando um embelezador de código para extrair os valores apropriados. 
  • O trecho de código abaixo mostra como você pode obter o valor do slot para SourceCity e passar esse valor para uma API de back-end que lida com as reservas. Adicione este código dentro da função lambda_handler():
slots = event['sessionState']['intent']['slots']
print("slots - ", slots)
source_city = slots['SourceCity']['value']['interpretedValue']
print("source city - ", source_city)

Agora, mostrarei como você pode fazer solicitações de API a partir da função Lambda. Para este exemplo, usamos o endpoint de API fictício em ASDFast. Esse serviço permite que você envie solicitações HTTP(S) para um endpoint de API e receba uma resposta realista. 

  • Com o código abaixo, enviamos uma solicitação GET para esse endpoint. Em seguida, personalizamos a mensagem que o bot envia ao usuário, dependendo do código de status da resposta da solicitação GET:
       res = urllib.request.urlopen(urllib.request.Request(
           url='http://asdfast.beobit.net/api/',
           headers={'Accept': 'application/json'},
           method='GET'),
           timeout=5)

       message_success = "Lambda has placed your reservation"
       message_failure = "Lambda could not place your reservation. Please retry."
       message = message_success if res.status == 200 else message_failure

A função Lambda completa é mostrada abaixo:

import json
import urllib.request

def lambda_handler(event, context):
    print("event - ", event)
    slots = event['sessionState']['intent']['slots']
    intent = event['sessionState']['intent']['name']

    print("slots - ", slots)
    source_city = slots['SourceCity']['value']['interpretedValue']
    print("source city - ", source_city)
    print("intent - ", intent)
    
    if event['invocationSource'] == 'FulfillmentCodeHook':
        print("FulfillmentCodeHook")    
        res = urllib.request.urlopen(urllib.request.Request(
            url='http://asdfast.beobit.net/api/',
            headers={'Accept': 'application/json'},
            method='GET'),
            timeout=5)
        
        message_success = "Lambda has placed your reservation"
        message_failure = "Lambda could not place your reservation. Please retry."
        message = message_success if res.status == 200 else message_failure
        #message = "Lambda has placed your reservation"

        response = {
            "sessionState": {
                "dialogAction": {
                    "type": "Close"
                },
                "intent": {
                    'name':intent,
                    'slots': slots,
                    'state':'Fulfilled'
                    }
            },
            "messages": [
                {
                    "contentType": "PlainText",
                    "content": message
                }
            ]
        }
        return response

Práticas recomendadas para criar bots do Amazon Lex

Depois de discutir os princípios básicos dos bots Lex e seus usos práticos, apresento nesta seção algumas práticas recomendadas para projetar bots. 

Crie conversas claras e concisas

Certifique-se de que seus caminhos e espaços de conversação sejam precisos:

  • Cada intenção deve se concentrar em uma única tarefa, e cada slot deve capturar o valor correspondente a uma única variável. 
  • Não faça com que os textos do prompt sejam muito prolixos ou detalhados. Mantenha os diálogos breves e chegue rapidamente ao resultado desejado.

Essa abordagem evita a confusão do usuário e possíveis mal-entendidos por parte da Lex. 

Utilizar tipos de slots e validação

O bot e seus serviços de back-end associados precisam de informações precisas sobre os requisitos do usuário. O uso dos tipos de slot corretos garante isso. 

  • Em geral, aconselho que você use os slots internos para tipos de dados comuns, como AMAZON.Date para datas, AMAZON.City para cidades e assim por diante. Esses tipos de slots foram amplamente testados e são conhecidos por serem compatíveis com vários aplicativos.
  • Você pode criar tipos de slots personalizados em casos excepcionais. Certifique-se de que eles estejam configurados e testados corretamente. 
  • Além de usar os tipos de slots corretos, valide se o usuário forneceu as informações correspondentes a todos os slots obrigatórios. Isso permite que a API de backend atenda à solicitação do usuário e garante uma experiência tranquila para o usuário. 

Permitir conversas com vários turnos

Os usuários podem achar difícil inserir todas as informações necessárias em uma única mensagem, como "Reserve uma viagem para N pessoas na data/hora Z, de X a Y, em um táxi tipo T". 

  • Use conversas de várias voltas para garantir uma melhor experiência do usuário. Como muitas ferramentas modernas baseadas em modelos de linguagem, o Lex pode manter o contexto por meio de uma conversa com várias voltas. Isso permite que ele relacione solicitações e respostas anteriores a interações recentes. 
  • Dividir um prompt complexo em uma série de perguntas curtas melhora o fluxo da conversa.

Monitorar e otimizar o desempenho

Para um bot em produção, é fundamental monitorar seu desempenho em várias métricas, como: 

  • Número total de conversas.
  • Duração média da conversa.
  • Média de turnos por conversa.
  • Número (e proporção) de enunciados detectados e perdidos.
  • Erros de lambda e muito mais.

Use essas métricas para avaliar as interações do usuário e o desempenho do bot: 

  • No menu à esquerda, na página Bot selecione a seção Analytics opção.
  • Acesse o Painel de conversasacessar o Painel de desempenhoe métricas do CloudWatch para você estudar o desempenho do bot.

O AWS CloudWatch é uma ferramenta de monitoramento para serviços do AWS. Ele consolida várias métricas de desempenho em tempo real em uma única página. Use essas métricas para melhorar e ajustar o desempenho do bot.

Conclusão

Neste artigo, exploramos o Amazon Lex V2, o serviço de chatbot com reconhecimento de contexto da AWS. Percorremos o processo de criação de um bot básico, configurando-o para interagir com os usuários e integrando-o a uma API de back-end usando o AWS Lambda. Além disso, discutimosas práticas recomendadas e as opções de implementação, incluindo a incorporação do bot em um site ou em uma página do Facebook.

À medida que você continuar aprendendo sobre os serviços da AWS, considere expandir seu conhecimento com estes cursos:

Ao aproveitar esses recursos, você estará bem equipado para criar, proteger e otimizar aplicativos baseados no AWS, incluindo chatbots com tecnologia Amazon Lex!

Perguntas frequentes

O Lex se integra a outros serviços da AWS?

Sim, o Lex se integra a serviços como Lambda, S3, CloudWatch e outros. Isso permite que você aprimore a funcionalidade do bot, integre-o a outros produtos e monitore seu desempenho.

O Lex lida com voz e texto?

Sim, o Lex pode, por padrão, lidar com entradas de voz e texto. O Lex suporta várias vozes para interações faladas. Você também pode usar o AWS Polly para sintetizar a fala e enviar o arquivo de áudio para o Lex.

Posso usar uma interface de usuário personalizada para um bot da Lex?

Sim, o Lex vem com uma API de tempo de execução que pode transmitir a entrada do usuário para o bot e receber suas respostas (do bot). Assim, o bot Lex serve como backend para a interface do usuário personalizada.

Posso usar o Lex sem as funções Lambda?

Em princípio, sim. Você pode criar a conversa inteiramente dentro do Lex. Na prática, um bot precisa fazer interface com outros serviços de API de back-end que atendam à solicitação do usuário (como reservar um bilhete). Você precisa do AWS Lambda para interagir com serviços externos.

É possível treinar o AWS Lex?

Até certo ponto, sim. O mecanismo de NLU do Lex pode reconhecer entradas de usuário semelhantes aos enunciados de amostra. Ele também pode estender os valores válidos de um tipo de slot com base em algumas amostras. No entanto, você não deve esperar o mesmo nível de capacitação de um LLM. O Lex foi projetado para interações limitadas específicas do trabalho e não para conversas prolongadas.


Arun Nanda's photo
Author
Arun Nanda
LinkedIn

Arun é um ex-fundador de startup que gosta de criar coisas novas. Atualmente, ele está explorando os fundamentos técnicos e matemáticos da Inteligência Artificial. Ele adora compartilhar o que aprendeu, por isso escreve sobre isso.

Além do DataCamp, você pode ler as publicações dele no Medium, Airbyte e Vultr.

Temas

Saiba mais sobre a AWS com estes cursos!

curso

AWS Concepts

2 hr
21.5K
Discover the world of Amazon Web Services (AWS) and understand why it's at the forefront of cloud computing.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

ChatGPT vs Google Bard: Um guia comparativo para chatbots de IA

Uma introdução amigável para iniciantes aos dois chatbots com tecnologia de IA sobre os quais todos estão falando.
Javier Canales Luna's photo

Javier Canales Luna

17 min

blog

Como aprender IA do zero em 2024: Um guia completo dos especialistas

Descubra tudo o que você precisa saber sobre o aprendizado de IA em 2024, desde dicas para começar, recursos úteis e insights de especialistas do setor.
Adel Nehme's photo

Adel Nehme

20 min

tutorial

Tutorial da API de assistentes da OpenAI

Uma visão geral abrangente da API Assistants com nosso artigo, que oferece uma análise aprofundada de seus recursos, usos no setor, orientação de configuração e práticas recomendadas para maximizar seu potencial em vários aplicativos de negócios.
Zoumana Keita 's photo

Zoumana Keita

14 min

tutorial

Guia para iniciantes no uso da API do ChatGPT

Este guia o orienta sobre os conceitos básicos da API ChatGPT, demonstrando seu potencial no processamento de linguagem natural e na comunicação orientada por IA.
Moez Ali's photo

Moez Ali

11 min

tutorial

O guia completo para machine learning na AWS com o Amazon SageMaker

Este tutorial abrangente ensina você a usar o AWS SageMaker para criar, treinar e implantar modelos de machine learning. Nós guiamos você por todo o fluxo de trabalho, desde a configuração do seu ambiente AWS e a criação de uma instância de notebook do SageMaker até a preparação de dados, modelos de treinamento e sua implementação como endpoints.
Bex Tuychiev's photo

Bex Tuychiev

25 min

tutorial

Um guia para iniciantes na engenharia de prompts do ChatGPT

Descubra como fazer com que o ChatGPT forneça os resultados que você deseja, fornecendo a ele as entradas necessárias.
Matt Crabtree's photo

Matt Crabtree

6 min

Ver maisVer mais