DEV Community

Cover image for Procesamiento de Contenido Multimodal con Strands Agent y solo unas pocas líneas de código
Elizabeth Fuentes L for AWS Español

Posted on

Procesamiento de Contenido Multimodal con Strands Agent y solo unas pocas líneas de código

🇻🇪🇨🇱 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 ) 
Enter fullscreen mode Exit fullscreen mode

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. """ 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Crea un entorno virtual:

python -m venv .venv source .venv/bin/activate # En Windows: .venv\Scripts\activate 
Enter fullscreen mode Exit fullscreen mode

Instala las dependencias requeridas:

pip install -r requirements.txt 
Enter fullscreen mode Exit fullscreen mode

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") 
Enter fullscreen mode Exit fullscreen mode

Procesar un documento:

response = multimodal_agent("Resume como json el contenido del documento data-sample/Welcome-Strands-Agents-SDK.pdf") 
Enter fullscreen mode Exit fullscreen mode

Procesar un video:

response = multimodal_agent("Resume el contenido de este video: data-sample/video.mp4") 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Configura el entorno:

python -m venv .venv source .venv/bin/activate # En Windows: .venv\Scripts\activate pip install -r requirements.txt 
Enter fullscreen mode Exit fullscreen mode

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: 
Enter fullscreen mode Exit fullscreen mode

Empaqueta las capas Lambda:

python layers/package_for_lambda.py 
Enter fullscreen mode Exit fullscreen mode

Bootstrap y despliega:

cdk bootstrap # Solo necesario una vez por cuenta/región de AWS cdk deploy 
Enter fullscreen mode Exit fullscreen mode

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)

Collapse
 
hackhit profile image
Miguel Hernandez

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