logo
Menu
Mejorar la atención al cliente con un asistente de Whatsapp.

Mejorar la atención al cliente con un asistente de Whatsapp.

Emplea RAG con Amazon Kendra y DynamoDB, con memoria de conversaciones y tiempo de sesión entrega autoservicio a través del lenguaje natural.

Elizabeth Fuentes
Amazon Employee
Published Jan 30, 2024
Last Modified Feb 2, 2024
Este artículo fue escrito en conjunto con Guillermo Ruiz
Lo que fue un emocionante viaje a Las Vegas para una presentación como ponente en re:Invent 2023 se convirtió en un viaje inesperado a un destino desconocido. Un percance en la reserva provocó que el orador se llevara un billete de avión a Las Vegas, Nuevo México, en lugar de a la conocida Las Vegas.
Este divertidísimo error sentó las bases para investigar cómo las tecnologías avanzadas, como la IA generativa y Recuperación de la generación aumentada (RAG) puede revolucionar los modelos tradicionales de canales de soporte, convirtiendo un complicado cambio de billete en una solución rápida a través de una conversación fluida.
Este blog te guiará para crear una aplicación de asistente de Whatsapp que utilice un asistente de LLM. Puede entender y comunicarse en varios idiomas, tanto escritos como hablados, con el objetivo de ofrecer asistencia de autoservicio a través de conversaciones naturales y recordar interacciones anteriores para resolver problemas de viaje comunes Capaz de comprobar el estado de los vuelos de los pasajeros, así como los datos relacionados con su viaje, con tu número de reserva o el identificador del pasajero.
✅ La aplicación WhatsApp Assistant está lista para desplegarse mediante Kit de desarrollo en la nube de AWS. Encuentra el código en Mejorando la atención al cliente con el agente de Rag Langchain Bedrock DynamoDB y Kendra repositorio de github.

¿Cómo funciona el asistente de viaje de Whatsapp?

Vamos a dividirlo en tres bloques principales:
How The Travel Assistant Work
Fig 1. Travel assistant High-level overview

1. Entrada de mensajes y procesamiento inicial:

Message Processing Based on Format
Fig 2. Travel assistant High-level overview"
Un usuario envía un mensaje de texto o de voz a través de WhatsApp, el mensaje llega al Amazon API Gateway, luego la AWS Lambda Function whatapp_in se ejecuta para procesar nuevos mensajes de WhatsApp, extraer los detalles relevantes y escribirlos en Amazon DynamoDB Streams.

2. Procesamiento de mensajes según el formato:

Message Processing Based on Format
Fig 3. Travel assistant High-level overview
El la Función Lambda process_stream se gatilla por los eventos de DynamoDB Streams e identifica el formato del mensaje (texto o audio):
- Si el mensaje está en formato texto: una función Lambda llamada API_Bedrock_Agents se activa, este es el corazón y el cerebro del asistente de viaje. Te lo explicaremos más adelante.
- Si el mensaje está en formato de audio: El la Función Lambda star_transcibe_job es activada. Esta función Lambda descarga el audio de WhatsApp del enlace del mensaje de un Amazon S3 Bucket, mediante la autenticación, luego convierte el audio en texto con Amazon Transcribe start_transcription_job API, que deja el archivo de transcripción en Output Amazon S3 Bucket.
Función que invoca start_transcription_job se ve así:
1
2
3
4
5
6
7
8
9
10
11
def start_job_transciptor (jobName,s3Path_in,OutputKey,codec):
response = transcribe_client.start_transcription_job(
TranscriptionJobName=jobName,
IdentifyLanguage=True,
MediaFormat=codec,
Media={
'MediaFileUri': s3Path_in
},
OutputBucketName = BucketName,
OutputKey=OutputKey
)
✅ Ten en cuenta que el parametro IdentifyLanguage está configurado en True. Con esto Amazon Transcribe puede determinar el idioma principal del audio.
La función Lambda transcribe_done se activa una vez que se completa el trabajo de transcripción. Extrae la transcripción del depósito Output S3 y la envía al agente.

3. Procesamiento y respuesta del LLM:

Aquí explicamos el corazón ❤️ y el cerebro 🧠 del asistente de viaje.
El asistente de viaje está gestionado por un Agente de Langchain, un framework para desarrollar aplicaciones de LLM, que utiliza la API Amazon Bedrock para entender y responder a través del lenguaje natural invocando modelos fundamentales. Este asistente de viaje emplea Claude Anthropic, del cual el asistente adquiere capacidades multilingües.
Mediante el uso Recuperación de la generación aumentada (RAG), el asistente puede extraer los detalles del pasajero de una tabla de Amazon DynamoDB y responde preguntas sobre cómo resolver casos específicos en una base de conocimientos en Amazon Kendra.
Para tener conversaciones fluidas que recuerden mensajes anteriores, utilizamos el Función Langchain para gestionar la memoria. Esta función almacena el contenido de las conversaciones en una tabla de DynamoDB llamada session_table. Para gestionar la duración de la sesión, utilizamos una tabla de DynamoDB llamada user_metadata, esta tabla almacena los metadatos del usuario y el inicio de la sesión, que se consultan y se comparan con una duración máxima de sesión definida durante cada interacción. Puedes cambiar la duración de la sesión aquí.
📚 Kenton Blacutt, un desarrollador asociado de aplicaciones en la nube de AWS, colaboró con Langchain para crear el Clase de memoria basada en Amazon Dynamodb que nos permite almacenar el historial de un agente de Langchain en un Amazon DynamoDB.
LLM Processing and Response
Fig 4. Travel assistant agent
El agente invoca la Función Lambda query_table_passanger cuando necesita saber la información del pasajero o consultar user_metadata en la tabla de DynamoDB.
Cuando el agente termina de recopilar la respuesta, responde a WhatsApp a través de la Función Lambda whatsapp_out.

Construyamos The Travel Assistant

The Travel Assistant Diagram
The Travel Assistant Diagram


Paso 0: Activar la cuenta de WhatsApp para desarrolladores de Facebook

Paso 1: Configuración anterior

Clonar el repositorio
1
git clone https://github.com/build-on-aws/elevating-customer-support-with-rag-langchain-agent-bedrock-dynamodb-and-kendra.git
Ir a:
1
cd customer-support-bot
Crea el entorno virtual: siguiendo los pasos del README
1
2
python3 -m venv .venv
source .venv/bin/activate
para Windows:
1
.venv\Scripts\activate.bat
Instalar Los requisitos:
1
pip install -r requirements.txt
Fijar valores:
En customer_support_bot_stack.py edita esta línea con el número de la aplicación para desarrolladores de Facebook de WhatsApp:
1
DISPLAY_PHONE_NUMBER = 'YOU-NUMBER'
Este agente mantiene el historial de la conversación, que está almacenado en session_tabble Tabla Amazon DynamoDB, también tienes la gestión de sesiones de control en el session_active_tabble Tabla de Amazon DynamoDB y establece la hora aquí en esta línea:
1
if diferencia > 300: #session time in seg

Paso 2: Implementa la aplicación con el CDK.

Sigue los pasos aquí
Sintetiza la plantilla de formación de nubes con el siguiente comando:
1
cdk synth
✅ 🚀 TEl despliegue:
1
cdk deploy
Revisa lo que está desplegado en stack:
Ve a la consola de AWS Cloudformation, selecciona la región en la que lo has implementado y haz clic en CustomerSupportBotStack:
 Amazon CloudFormation Stack
Fig 6. Amazon CloudFormation Stack
Espera unos minutos
Este stack crea automáticamente un índice de Amazon Kendra con la fuente de datos que contiene Base de datos de preguntas y respuestas de la aerolínea «La inventada», debes esperar unos minutos para que se sincronicen todos los datos.
Amazon Kendra Data Sources
Fig 7. Amazon Kendra Data Sources

Paso 3: Activar la mensajería de WhatsApp en la aplicación

Ve a AWS Secrets Manager y edita la configuración de WhatsApp y sustitúyela por la configuración de desarrollador de Facebook.
Activate WhatsApp Messaging In The App
Fig 8. Activate WhatsApp Messaging In The App
Configure Webhook In Facebook Developer Application
Fig 9. Configure Webhook In Facebook Developer Application

¡Vamos a probarlo!

PREGUNTAS Y RESPUESTAS:
Puedes empezar a pedir información del servicio de atención al cliente como si se tratara de la línea de atención al cliente de una aerolínea.
Q&A Example
Q&A Example
Información sobre los pasajeros:
El stack de CDK crea la tabla de DynamoDB llamada Passenger_ID con el ejemplo de conjunto de datos de pasajeros de Kaggle. Selecciona uno y solicita información al respecto.
Passanger ID
Passanger ID
¿Y si ahora cambio el idioma y pregunto en español?
Passanger ID in Spanish
Ask Passanger ID in Spanish
La función multilingüe depende del LLM que usas.
Envíale notas de voz:
Send Voice Note
Send Voice Note
Amazon Transcribe puede detectar los idiomas hablados en tu contenido multimedia sin necesitar un código de idioma. 🌎

🚀 Sigue haciendo pruebas, juega con el mensaje el agente AWS Lambda funciona y ajústala a tus necesidades.

Conclusión

Si bien el viaje del orador a la ciudad equivocada de Las Vegas comenzó como una comedia de errores, también puso de relieve una importante oportunidad para reimaginar el servicio de atención al cliente.
WhatsApp Travel Assistant es la aplicación que el orador imaginó, una aplicación capaz de ofrecer una experiencia de autoservicio a los viajeros a través de conversaciones naturales.
El asistente de viaje de Whatsapp puede:
  • - Entiende las conversaciones en cualquier idioma, tanto escrito como hablado, y responde en el mismo idioma.
    - Consulta una base de datos de conocimientos en Amazon Kendra y una tabla de Amazon DynamoDB con RAG.
    - Ofrece respuestas sofisticadas según la consulta mediante RAG, consultando bases de datos de conocimiento en Amazon Kendra y tablas en Amazon DynamoDB.
    - Gestiona la memoria de las conversaciones y guárdala en una tabla de Amazon DynamoDB.
    - Gestionar el tiempo de sesión a través de una tabla de Amazon Dynamodb.
    Te invitamos a crear esta aplicación, jugar con ella, mejorarla y contarnos cómo te fue.
¡Gracias! 👩🏻🧔🏻‍♂️


🚀 Algunos enlaces para que sigas aprendiendo y construyendo:

Any opinions in this post are those of the individual author and may not reflect the opinions of AWS.

Comments