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:
- WhatsApp recibe el mensaje: voz/texto.
- Amazon API Gateway recibe el mensaje del Webhook de WhatsApp (previamente autenticado).
- 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.
- La tabla whtsapp-metadata de DynamoDB tiene un Streaming de DynamoDB configurado, lo que activa el process_stream Función lambda.
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).
- 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.
- 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 .
El agente recibe el texto y realiza lo siguiente:
- Consulta la tabla de Amazon DynamoDB llamada
user_metadata
para ver si elsession
ha caducado. Si está activo, recupera elSessionID
, necesaria para el siguiente paso, si caduca, crea un nuevo temporizador de sesión. - Consulta la tabla de Amazon DynamoDB llamada tabla de sesión para ver si hay algún historial de conversaciones anterior.
- Consulta el LLM a través de Amazon Bedrock con el siguiente mensaje:
- 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.
✅ 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
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.
- Configurar el Interfaz de línea de comandos de AWS
- Instala CDK en tu computador siguiedo los pasos en Getting started with the AWS CDK
- Implementa la arquitectura con CDK Sigue los pasos:
✅ 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:
Editar los valores de configuración de WhatsApp en Facebook Developer en Gestor de secretos de AWS consola.
✅ El Token Verification es cualquier valor, pero debe ser el mismo en los pasos 3 y 4.
- Haz clic en
myapi
. - Ir a Etapas -> picana -> /cloudapi -> CONSEGUIR, y copia Invocar URL.
- Configura Webhook en la aplicación para desarrolladores de Facebook.
- Set Invocar URL.
- Set ficha de verificació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.
🚀 Sigue probando la aplicación, juega con el mensaje langchain_agent_text Amazon Lambda funciona y ajústala a tus necesidades.
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.
Any opinions in this post are those of the individual author and may not reflect the opinions of AWS.