
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.
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:

1. Entrada de mensajes y procesamiento inicial:

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:

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 .

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

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/activatepara 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 segPaso 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:
✅ 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.

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.


¡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.
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.

✅ 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. 
¿Y si ahora cambio el idioma y pregunto en español?

La función multilingüe depende del LLM que usas .
✅ Envíale notas de voz:

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:
- Cómo elegir tu LLM
- Trabajar con tus datos en vivo mediante LangChain
- Integrar los modelos básicos en tu código con Amazon Bedrock
- Extensiones de LangChain de AWS Kendra
- Técnicas rápidas de ingeniería
- Aprende los fundamentos de la IA generativa para aplicaciones del mundo real
- LangChain para el desarrollo de aplicaciones de LLM
- Ingeniería rápida para modelos de cimientos
- Ingeniería rápida para desarrolladores: cómo la IA puede ayudar a tomar decisiones arquitectónicas
- Diversión un viernes con Prompt Engineering y pensando en re:Invent 2023
Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article