🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr
GitHub repositorie: Strands Agent Multi-Understanding
En este blog, aprenderás cómo crear agentes de IA multimodales que van más allá de las interacciones de solo texto para entender y procesar diversos tipos de contenido. Ya sea que necesites extraer datos de PDFs, analizar contenido de imágenes o entender secuencias de video, los agentes multimodales proporcionan la flexibilidad para manejar diversos casos de uso.
Usando el Strands Agent framework, puedes construir agentes sofisticados con solo unas pocas líneas de código.
⭐ Comenzando con el Framework Strands Agent
Si esta es tu primera vez con Strands Agents, sigue los pasos en la documentación o revisa la publicación del blog First Impressions with Strands Agents SDK de mi colega Laura Salinas, donde explica en detalle cómo usar este nuevo enfoque para crear agentes.
Después de instalar el framework Strands Agent, utilicé herramientas para hacerlo capaz de entender diferentes tipos de entrada. Las herramientas son mecanismos que extienden las capacidades del agente, permitiéndoles realizar acciones más allá de la simple generación de texto.
Strands ofrece un paquete opcional de herramientas de ejemplo llamado strands-agents-tools. Para este agente, utilicé dos herramientas del paquete: image_reader y file_read, que están listas para usar desde el primer momento.
🧰 Creando Herramientas Personalizadas de Procesamiento de Video
Como no existía ninguna herramienta para procesamiento de video, y ya tenía código de una de mis aplicaciones anteriores: Processing WhatsApp Multimedia with Amazon Bedrock Agents: Images, Video, and Documents, creé una herramienta personalizada usando mi código existente. Seguí los pasos en Adding Tools to Agents](https://strandsagents.com/latest/user-guide/concepts/tools/tools_overview/#adding-tools-to-agents) y utilicé el Strands Agent Builder para asistencia.
El Strands Agent Builder es un conjunto de herramientas interactivo diseñado para ayudarte a construir, probar y extender tus propios agentes de IA y herramientas personalizadas. Recomiendo altamente instalarlo para tu flujo de trabajo de desarrollo.
La herramienta que creé se llama video_reader, y aquí está el código final para mi agente multimodal:
from strands import Agent from strands.models import BedrockModel from strands_tools import image_reader, file_read # Configurar el modelo bedrock_model = BedrockModel( model_id=bedrock-model-id, temperature=0.3 ) # Crear un agente con capacidades multimodales agent = Agent( system_prompt=MULTIMODAL_SYSTEM_PROMPT, tools=[image_reader, file_read,video_reader], model=bedrock_model )
Esta aplicación usa Amazon Bedrock, pero como Strands Agents es código abierto, puedes hacer modificaciones para usar tu proveedor de modelo preferido.
Esta implementación usa dos modelos diferentes:
- us.anthropic.claude-3-5-sonnet-20241022-v2:0 Claude 3.5 Sonnet para imágenes, documentos y gestión de agentes.
- us.amazon.nova-pro-v1:0 Amazon Nova Pro para la herramienta de análisis de video.
El agente usa el siguiente prompt del sistema para guiar su comportamiento de procesamiento multimodal:
MULTIMODAL_SYSTEM_PROMPT = """ Eres un asistente útil que puede procesar documentos, imágenes y videos. Analiza sus contenidos y proporciona información relevante. Puedes: 1. Para formatos PNG, JPEG/JPG, GIF o WebP usa image_reader para procesar el archivo 2. Para formatos PDF, csv, docx, xls o xlsx usa file_read para procesar el archivo 3. Para formatos MP4, MOV, AVI, MKV, WebM usa video_reader para procesar el archivo 4. Solo entrega la respuesta Al mostrar respuestas: - Formatea los datos de respuesta de manera legible para humanos - Resalta información importante - Maneja errores apropiadamente - Convierte términos técnicos a lenguaje amigable para el usuario - Siempre responde en el idioma original del usuario Siempre responde en el idioma original del usuario. """
El agente determina automáticamente qué herramienta usar basado en tu solicitud y el tipo de archivo. Esta abstracción significa que no necesitas especificar si estás trabajando con una imagen, documento o video—el agente maneja el enrutamiento de manera inteligente.
🤩 Comenzando
Clona el repositorio de GitHub:
git clone https://github.com/elizabethfuentes12/strands-agent-multi-understanding cd notebook
Crea un entorno virtual:
python -m venv .venv source .venv/bin/activate # En Windows: .venv\Scripts\activate
Instala las dependencias requeridas:
pip install -r requirements.txt
Configura las credenciales de AWS y el acceso al modelo de Amazon Bedrock.
👾 Recuerda: Strands Agents es código abierto, puedes hacer modificaciones para usar tu proveedor de modelo preferido.
Ejecuta el notebook multi-understanding.ipynb para ver el agente multimodal en acción
Probando tu Agente Multimodal
Una vez configurado, puedes probar tu agente con varios tipos de contenido:
Procesar una imagen:
response = multimodal_agent("Analiza esta imagen y describe lo que ves: data-sample/image.jpg")
Procesar un documento:
response = multimodal_agent("Resume como json el contenido del documento data-sample/Welcome-Strands-Agents-SDK.pdf")
Procesar un video:
response = multimodal_agent("Resume el contenido de este video: data-sample/video.mp4")
Implementación Avanzada: Despliegue Serverless usando AWS CDK
Para usuarios avanzados, estoy compartiendo el código para desplegar esta misma aplicación en una función AWS Lambda usando AWS CDK. Este enfoque proporciona una solución escalable y serverless para el procesamiento de contenido multimodal.
Pasos de Despliegue
Navega al directorio CDK:
cd my_agent_cdk
Configura el entorno:
python -m venv .venv source .venv/bin/activate # En Windows: .venv\Scripts\activate pip install -r requirements.txt
Instala las dependencias de la capa Lambda:
pip install -r layers/lambda_requirements.txt --python-version 3.12 --platform manylinux2014_aarch64 --target layers/strands/_dependencies --only-binary=:all:
Empaqueta las capas Lambda:
python layers/package_for_lambda.py
Bootstrap y despliega:
cdk bootstrap # Solo necesario una vez por cuenta/región de AWS cdk deploy
Próximos Pasos
¡Esto no es todo lo que tengo para ti! Este es el primero de una serie de 3 blogs donde te mostraré las capacidades de Strands Agents con fragmentos de código para que puedas aprender y desarrollar aplicaciones poderosas con solo unas pocas líneas de código.
En la próxima edición, agregaré gestión de memoria de conversación usando una base de datos, para que las conversaciones puedan recuperarse en cualquier momento o persistir durante toda la sesión. En la tercera parte, agregaré una base de conocimiento y recrearé mi agente de viajes de WhatsApp: Building a Travel Support Agent with RAG and PostgreSQL, Using IaC.
¡Mantente atento para más implementaciones de Strands Agent!
¡Gracias!
🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr
Top comments (1)
Wao, tenia tiempo buscando contenido de excelente nivel, y en español mucho mejor, y de paso de una Venezolana, muchisimoooooooooo mejor, gracias por compartir tus conocimientos...