🇻🇪🇨🇱 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:
1. Entrada de mensaje 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 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:
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
)
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.
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
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
✅ Go to:
cd customer-support-bot
✅ Crea el ambiente virtual: siguiendo los pasos del README
python3 -m venv .venv
source .venv/bin/activate
for windows:
.venv\Scripts\activate.bat
✅ Install The Requirements:
pip install -r requirements.txt
✅ 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
✅🚀 The Deployment:
cdk deploy
✅ Review what is deployed in the stack:
- Ve aAWS Cloudformation console, 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 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.
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.
Paso 4: Configure Webhook In Facebook Developer Application
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.
✅ 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.
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.
¿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:
Integrating Foundation Models into Your Code with Amazon Bedrock
Learn the fundamentals of generative AI for real-world applications
Prompt Engineering for Developers: How AI Can Help With Architecture Decisions
Fun on a Friday with Prompt Engineering and thinking about re:Invent 2023
🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr
Top comments (0)