DEV Community

Cover image for Elevando la atención al cliente con un Agente LLM de Viaje de Whatsapp.
Elizabeth Fuentes L for AWS Español

Posted on • Originally published at community.aws

Elevando la atención al cliente con un Agente LLM de Viaje de Whatsapp.

🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr


This article was written with 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 Retrieval Augmented Generation(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 AWS Cloud Development Kit. Encuentra el código en Elevating Customer Support With Rag Langchain Agent Bedrock Dynamodb And Kendra
github repo.

¿Como funciona el Asistente de Viaje de Whatsapp?

Vamos a dividirlo en tres bloques principales:

How The Travel Assistant Work

1. Entrada de mensaje y procesamiento inicial:

How The Travel Assistant Work

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 AWS Lambda Function whastapp_in se ejecuta para procesar nuevos mensajes de WhatsApp, extraer los detalles relevantes y escribirlos en Amazon DynamoDB Streams.

2. Procesamiento de mensaje según el formato:

How The Travel Assistant Work

La Función Lambda process_stream se gatilla por eventos de DynamoDB Streams e identifica el formato del mensaje (texto o audio):

  • Si el mensaje es 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 es Audio: La Función Lambda star_transcibe_job es activada. Esta función Lambda descarga el audio de WhatsApp del enlace del mensaje de unAmazon S3 bucket, 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í:

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 
            )
Enter fullscreen mode Exit fullscreen mode

Note:Ten en cuenta que el parámetro 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 Langchain Agent, un framework para desarrollar aplicaciones de LLM, que utiliza la API Amazon Bedrock para entender y responder a través del lenguaje natural invocando foundational models. Este asistente de viaje emplea Anthropic Claude, del cual el asistente adquiere capacidades multilingües.

Mediante el uso Retrieval Augmented Generation (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í.
v

📚 Tip: Kenton Blacutt, un AWS Associate Cloud App Developer, colaboró con Langchain para crear la Amazon Dynamodb based memory class que nos permite almacenar el historial de un agente de Langchain en una tabla de Amazon DynamoDB.

How The Travel Assistant Work

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 Lambdawhatsapp_out Lambda Function.

Let's Build The Travel Assistant

How The Travel Assistant Work

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

1- Empieza con la nueva plataforma WhatsApp Business

2- Cómo generar un token de acceso permanente — API de WhatsApp

3- Empieza con la API de Messenger para Instagram

Paso 1: Configuración inicial

Clona el repo

git clone https://github.com/build-on-aws/elevating-customer-support-with-rag-langchain-agent-bedrock-dynamodb-and-kendra.git
Enter fullscreen mode Exit fullscreen mode

Go to:

cd customer-support-bot
Enter fullscreen mode Exit fullscreen mode

Crea el ambiente virtual: siguiendo los pasos del README

python3 -m venv .venv
Enter fullscreen mode Exit fullscreen mode
source .venv/bin/activate
Enter fullscreen mode Exit fullscreen mode

for windows:

.venv\Scripts\activate.bat
Enter fullscreen mode Exit fullscreen mode

Install The Requirements:

pip install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode

Set Values:

Encustomer_support_bot_stack.py edita esta línea con el número de la aplicación para desarrolladores de Facebook de WhatsApp:


DISPLAY_PHONE_NUMBER = 'YOU-NUMBER'

Este agente mantiene el historial de la conversación, que está almacenado en session_tabble Amazon DynamoDB, también tienes la gestión de sesiones de control en el session_active_tabble de Amazon DynamoDB y establece la hora here en esta linea:


if diferencia > 300: #session time in seg

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

Sigue los pasos here

Synthesize The Cloudformation Template With The Following Command:

cdk synth
Enter fullscreen mode Exit fullscreen mode

✅🚀 The Deployment:

cdk deploy
Enter fullscreen mode Exit fullscreen mode

Review what is deployed in the stack:

Amazon CloudFormation Stack

Espera unos minutos:

Este stack crea automáticamente un índice de Amazon Kendra con la fuente de datos que contiene la 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

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.

Digrama parte 1

Paso 4: Configure Webhook In Facebook Developer Application

Digrama parte 1

Let´s try!

Q&A:

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.

Digrama parte 1

Passenger information:

El stack de CDK crea la tabla de DynamoDB llamada Passenger_ID con el sample passenger dataset from Kaggle. Selecciona uno y solicita información al respecto.

Digrama parte 1

The multilanguage function depends on the LLM you use.

Send it voice notes:

Amazon Transcribe is able to automatically identify the languages spoken in your media without you having to specify a language code.

Digrama parte 1

¿Y si ahora cambio el idioma y pregunto en español?

La función multilingüe depende del LLM.

🚀 Continúa probando, juega con el Prompt de esta función de Amazon Lambda y ajústala según sus necesidades.

Conclusiones

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:


🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr

Top comments (0)