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

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

🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube Linktr

{% embed https://dev.to/elizabethfuentes12 %}

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.

Image description

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

Image description

Image description

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

{% embed https://dev.to/elizabethfuentes12 %}