Este documento apresenta um estudo de caso que demonstra como implementar um chatbot de atendimento ao cliente utilizando AWS Step Functions, Amazon Bedrock e Amazon DynamoDB. O objetivo é fornecer um sistema automatizado que interaja com os clientes de forma inteligente, respondendo a chamados recebidos via site e armazenados em um banco de dados.
Uma empresa recebe diariamente um grande volume de chamados de suporte ao cliente através de seu site. Cada chamado contém perguntas, reclamações ou solicitações que são armazenadas em uma tabela do Amazon DynamoDB para processamento posterior. O atendimento manual desses chamados é demorado e consome muitos recursos humanos.
Implementar um chatbot inteligente que:
- Leia os chamados armazenados no DynamoDB: O sistema captura cada chamado enviado pelos clientes.
- Processe cada chamado utilizando um modelo de linguagem avançado via Amazon Bedrock: O modelo gera respostas personalizadas e contextuais.
- Mantenha um histórico de conversa: As interações anteriores são consideradas para fornecer respostas mais relevantes.
- Trunque o histórico de conversa quando necessário: Gerencia o tamanho do histórico para evitar limitações técnicas.
- Orquestre todo o fluxo de trabalho com AWS Step Functions: Coordena as etapas de forma eficiente e escalável.
- Atendimento Automatizado: Reduz a necessidade de intervenção humana, acelerando o tempo de resposta.
- Respostas Personalizadas: O uso de IA permite respostas mais relevantes e contextuais.
- Escalabilidade: Capaz de lidar com um grande volume de chamados simultaneamente.
- Eficiência Operacional: Libera a equipe para focar em questões mais complexas que exigem intervenção humana.
A máquina de estados do AWS Step Functions coordena o processo de:
- Inicialização: Obtenção da lista de IDs de chamados a serem processados.
- Processamento em Loop: Para cada chamado, realiza uma série de etapas até que todos sejam processados.
- Finalização: Encerra a execução após o processamento completo.
- Descrição: Invoca uma função Lambda (
MyLambdaFunction
) que retorna uma lista de IDs de chamados a serem processados, incluindo"DONE"
como indicador de término. - Resultado: Armazena a lista em
$.List
. - Próximo Estado:
Initialize Conversation History
.
- Descrição: Inicializa o histórico da conversa como uma string vazia em
$.ConversationHistory
. - Próximo Estado:
For Loop Condition
.
- Descrição: Verifica se o primeiro elemento da lista (
$.List[0]
) é diferente de"DONE"
.- Se for diferente: Continua para
Read Next Message from DynamoDB
. - Se for
"DONE"
: Vai para o estadoSucceed
e encerra a execução.
- Se for diferente: Continua para
- Próximo Estado: Dependente da condição.
- Descrição: Lê o chamado correspondente ao
MessageId
atual da tabela DynamoDB. - Parâmetros:
TableName
: Nome da tabela DynamoDB contendo os chamados.Key
: Chave primária para acessar o item (MessageId
).
- Resultado: Armazena o chamado em
$.DynamoDB
. - Próximo Estado:
Update Conversation History with Message
.
- Descrição: Adiciona o chamado atual ao histórico da conversa.
- Parâmetros:
- Concatena
$.ConversationHistory
com$.DynamoDB.Item.Message.S
.
- Concatena
- Resultado: Atualiza
$.ConversationHistory
. - Próximo Estado:
Truncate Conversation History
.
- Descrição: Invoca a função Lambda
TruncateHistoryFunction
para truncar o histórico se exceder um tamanho máximo (por exemplo, 2000 caracteres). - Parâmetros:
ConversationHistory
: Histórico atual da conversa.MaxLength
: Comprimento máximo permitido.
- Resultado: Recebe o histórico truncado e atualiza
$.ConversationHistory
. - Próximo Estado:
Invoke Model with Message
.
- Descrição: Invoca o modelo de linguagem via Amazon Bedrock, passando o histórico da conversa como prompt.
- Parâmetros:
ModelId
: Identificador do modelo (por exemplo,cohere.command-text-v14
).Body
:prompt
: O histórico da conversa ($.ConversationHistory
).max_tokens
: Limite de tokens na resposta (por exemplo, 250).
- Resultado: Armazena a resposta do modelo em
$.ModelResult
. - Próximo Estado:
Update Conversation History with Response
.
- Descrição: Adiciona a resposta do modelo ao histórico da conversa.
- Parâmetros:
- Concatena
$.ConversationHistory
com$.ModelResult.ModelResponse
.
- Concatena
- Resultado: Atualiza
$.ConversationHistory
. - Próximo Estado:
Truncate Conversation History After Response
.
- Descrição: Invoca novamente a função Lambda
TruncateHistoryFunction
para truncar o histórico atualizado. - Parâmetros:
- Mesmos que anteriormente.
- Resultado: Atualiza
$.ConversationHistory
. - Próximo Estado:
Pop Element from List
.
- Descrição: Remove o
MessageId
processado da lista. - Parâmetros:
- Atualiza
$.List
para$.List[1:]
.
- Atualiza
- Próximo Estado: Retorna ao estado
For Loop Condition
.
- Descrição: Indica que a execução da máquina de estados foi concluída com sucesso.
-
Início:
- Obter lista de chamados (
$.List
). - Inicializar histórico de conversa (
$.ConversationHistory
).
- Obter lista de chamados (
-
Loop (para cada chamado):
- Ler próximo chamado do DynamoDB.
- Atualizar histórico com a mensagem do chamado.
- Truncar histórico se necessário.
- Invocar modelo com o histórico.
- Atualizar histórico com a resposta do modelo.
- Truncar histórico novamente se necessário.
- Remover chamado processado da lista.
-
Término:
- Quando todos os chamados forem processados (
"DONE"
), a execução termina com sucesso.
- Quando todos os chamados forem processados (
- Funções Lambda:
MyLambdaFunction
: Retorna a lista de IDs de chamados.TruncateHistoryFunction
: Implementa a lógica de truncamento do histórico.
- Amazon DynamoDB:
- Armazena os chamados recebidos via site.
- Amazon Bedrock:
- Fornece o modelo de linguagem para gerar respostas inteligentes.
- AWS Step Functions:
- Orquestra todo o fluxo de trabalho de forma escalável e gerenciável.
- Automação do Atendimento: Respostas rápidas e automatizadas aos clientes.
- Melhoria na Satisfação do Cliente: Respostas contextuais e relevantes aumentam a satisfação.
- Eficiência: Redução de custos operacionais com atendimento.
- Escalabilidade: Capacidade de lidar com volumes crescentes de chamados sem perda de desempenho.
- Configurar o DynamoDB:
- Criar uma tabela para armazenar os chamados dos clientes.
- Desenvolver as Funções Lambda:
MyLambdaFunction
: Para obter a lista de IDs de chamados.TruncateHistoryFunction
: Para truncar o histórico da conversa.
- Configurar o Amazon Bedrock:
- Selecionar e configurar o modelo de linguagem apropriado.
- Definir a Máquina de Estados no AWS Step Functions:
- Utilizar o código JSON fornecido, ajustando os nomes das funções e tabelas conforme necessário.
- Testar o Fluxo:
- Realizar testes com chamados reais ou simulados para validar o comportamento do chatbot.
- Monitorar e Ajustar:
- Utilizar as ferramentas de monitoramento da AWS para acompanhar a performance e fazer ajustes conforme necessário.
Este estudo de caso demonstra uma solução eficaz para automatizar o atendimento ao cliente utilizando serviços gerenciados da AWS. Ao integrar o AWS Step Functions, Amazon Bedrock e Amazon DynamoDB, é possível criar um chatbot inteligente que melhora a eficiência operacional e a satisfação dos clientes.
Nota: Certifique-se de que todos os serviços AWS utilizados estejam corretamente configurados e que as permissões necessárias estejam definidas para que a máquina de estados possa acessar os recursos necessários.