Crear un asistente GenAI de WhatsApp con Amazon Bedrock

Charla en cualquier idioma con un LLM en Bedrock. Envía notas de voz y recibe las transcripciones. Con un pequeño ajuste en el código, envía la transcripción a la modelo.

Elizabeth Fuentes
Amazon Employee
Published Feb 26, 2024
Last Modified Feb 28, 2024
Con esta aplicación de WhatsApp, puedes chatear en cualquier idioma con un máster en Amazon Bedrock. Envía notas de voz y recibe transcripciones. Al hacer un pequeño cambio en el código, también puedes enviar la transcripción a la modelo.
Tus datos se almacenarán de forma segura en tu cuenta de AWS y no se compartirán ni utilizarán para el entrenamiento de modelos. No se recomienda compartir información privada porque la seguridad de los datos en WhatsApp no está garantizada.
Nivel AWS: Intermedio: 200
Requisitos previos:
💰 Coste de completar:

Cómo funciona la aplicación

flow

1- Entrada del mensaje:

Message input
Message input
  1. WhatsApp recibe el mensaje: voz/texto.
  2. Amazon API Gateway recibe el mensaje del Webhook de WhatsApp (previamente autenticado).
  3. Entonces, un AWS Lambda Functions llamado whatsapp_in procesa el mensaje y lo envía a una Tabla de Amazon DynamoDB llamada whatsapp-metadata para almacenarla.
  4. La tabla whtsapp-metadata de DynamoDB tiene un Streaming de DynamoDB configurado, lo que activa el process_stream Función lambda.

2 - Procesamiento de mensajes:

Mensaje de texto:

Message processing - Text Message
Message processing - Text Message
La función lambda process_stream envía el texto del mensaje a la función Lambda llamada langchain_agent_text (en el siguiente paso lo exploraremos).

Mensaje de voz:

Message processing - Voice Message
Message processing - Voice Message
  1. La función Lambda audio_job_transcriptor está activada. Esta función Lambda descarga el audio de WhatsApp del enlace del mensaje a un Amazon S3 bucket, utiliza la autenticación con token de Whatsapp y, a continuación, convierte el audio en texto con Amazon Transcribe API en start_transcription_job , deja el archivo de transcripción en un depósito de Amazon S3 de salida.
La función que invoca audio_job_transcriptor tiene este aspecto:
💡 Ten en cuenta que el parámetro IdentifyLanguage está configurado en True. Amazon Transcribe puede determinar el idioma principal del audio.
  1. La función lambda transcriber_done se activa con un Amazon S3 Event Notification put item una vez que el trabajo de transcripción esté completo. Extrae la transcripción del bucket Output S3 y la envía a la Función Lambda whatsapp_out para responder a WhatsApp.
✅ Tienes la opción de descomentar el código en la Función lambda transcriber_done y envía la transcripción de la nota de voz a la Función lambda langchain_agent_text .

3 - Procesamiento con el LLM:

LLM Processing
LLM Processing
El agente recibe el texto y realiza lo siguiente:
  1. Consulta la tabla de Amazon DynamoDB llamada user_metadata para ver si el session ha caducado. Si está activo, recupera el SessionID, necesaria para el siguiente paso, si caduca, crea un nuevo temporizador de sesión.
  2. Consulta la tabla de Amazon DynamoDB llamada tabla de sesión para ver si hay algún historial de conversaciones anterior.
  3. Consulta el LLM a través de Amazon Bedrock con el siguiente mensaje:
  1. Envía la respuesta a WhatsApp a través de la función Lambda whatsapp_out .
💡 La frase «Responde siempre en el idioma original del usuario» (en ingles) garantiza que siempre responde en el idioma original y la capacidad multilingüe la proporciona Anthropic Claude, que es el modelo utilizado en esta solicitud.

¡Construyamos!

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

Paso 1: Configuración de la aplicación

Clonar el repositorio
git clone hhttps://github.com/build-on-aws/building-gen-ai-whatsapp-assistant-with-amazon-bedrock-and-python
Ir a:
cd private-assistant

Paso 2: Implemente la arquitectura con CDK.

Architecture
Diagram
En private_assistant_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 gestiona la memoria de las conversaciones y tú debes configurar la hora de la sesión aquí en esta línea:
if diferencia > 240: #session time in seg
Nota: 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.
Crea el entorno virtual: siguiendo los pasos del LÉAME
para Windows:
Instala los requisitos:
Sintetiza la plantilla de formación de nubes con el siguiente comando:
✅🚀 El despliegue:
deployment_time
Deployment Time

Paso 3: Configuración de WhatsApp

Editar los valores de configuración de WhatsApp en Facebook Developer en Gestor de secretos de AWS consola.
Secret
Secret Value
✅ El Token Verification es cualquier valor, pero debe ser el mismo en los pasos 3 y 4.

Paso 4: Configuración de webhooks

  1. Haz clic en myapi.
  2. Ir a Etapas -> picana -> /cloudapi -> CONSEGUIR, y copia Invocar URL.
  3. Configura Webhook en la aplicación para desarrolladores de Facebook.
    • Set Invocar URL.
    • Set ficha de verificación.
Invoke Url

¡Disfruta de la aplicación! :

✅ Charla y haz preguntas de seguimiento. Pon a prueba la capacidad de la aplicación para gestionar varios idiomas.
✅ Enviar y transcribir notas de voz. Prueba las funciones de la aplicación para transcribir varios idiomas.

🚀 Sigue probando la aplicación, juega con el mensaje langchain_agent_text Amazon Lambda funciona y ajústala a tus necesidades.

Conclusión:

En este tutorial, has implementado una aplicación de WhatsApp sin servidor que permite a los usuarios interactuar con un LLM a través de Amazon Bedrock. Esta arquitectura utiliza API Gateway como conexión entre WhatsApp y la aplicación. Las funciones de Amazon Lambda procesan el código para gestionar las conversaciones. Las tablas de Amazon DynamoDB gestionan y almacenan la información de los mensajes, los detalles de la sesión y el historial de conversaciones.
Ya tienes el código esencial para mejorar la aplicación. Una opción de ahora en adelante es incorporar Generación aumentada de recuperación (RAG) para generar respuestas más sofisticadas según el contexto.
Para gestionar los escenarios de servicio de atención al cliente, la aplicación podría conectarse a Amazon Connect y transferir las llamadas a un agente si el LLM no puede resolver un problema.
Con un mayor desarrollo, esta arquitectura sin servidores demuestra cómo la IA conversacional puede impulsar experiencias de chat interesantes y útiles en las plataformas de mensajería populares.

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

1 Comment