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)