DEV Community

Cover image for Procesamiento de Contenido Multimodal con Strands Agent: Capacidad de Recordar usando Strands y FAISS
Elizabeth Fuentes L for AWS Español

Posted on • Edited on

Procesamiento de Contenido Multimodal con Strands Agent: Capacidad de Recordar usando Strands y FAISS

🇻🇪🇨🇱 Dev.to LinkedIn GitHub Twitter Instagram YouTube Linktr

Repositorio de GitHub: Strands Agent Samples

Parte 2: Añadiendo Memoria Persistente con FAISS

En nuestro Procesamiento de Contenido Multimodal con Strands Agent y solo unas pocas líneas de código, exploramos cómo construir un agente de IA multi-modal capaz de procesar imágenes, documentos y videos usando el framework Strands Agent. Hoy, vamos un paso más allá añadiendo capacidades de memoria persistente usando FAISS (Facebook AI Similarity Search) para crear un agente que puede recordar y recuperar información entre sesiones.

🧠 Por qué Importa la Memoria

  • Conversaciones contextuales: "¿Recuerdas ese diagrama de arquitectura que te mostré ayer? ¿Cómo se relaciona con este nuevo documento?"
  • Aprendizaje progresivo: Construyendo conocimiento a lo largo del tiempo a partir de múltiples interacciones
  • Respuestas personalizadas: Adaptando respuestas basadas en tus preferencias y contenido previos
  • Continuidad entre sesiones: Manteniendo contexto incluso después de reiniciar tu aplicación

🚀 Lo que Vamos a Construir

Mejoraremos nuestro agente multi-modal con:

  • Almacenamiento de memoria potenciado por FAISS usando la herramienta mem0_memory
  • Almacenamiento persistente de información entre sesiones
  • Recuperación inteligente de memorias relevantes basada en contexto
  • Operaciones de gestión de memoria (almacenar, recuperar, listar)

🛠️ Configurando el Agente Mejorado

Comencemos configurando nuestro agente con capacidades de memoria:

import boto3
from strands.models import BedrockModel
from strands import Agent
from strands_tools import image_reader, file_read, mem0_memory, use_llm
from video_reader import video_reader

# Prompt del sistema mejorado con instrucciones de memoria
MULTIMODAL_SYSTEM_PROMPT = """ Eres un asistente útil que puede procesar documentos, imágenes y videos. 
Analiza sus contenidos y proporciona información relevante. Tienes capacidades de memoria y puedes recordar interacciones previas.

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

Capacidades de memoria:
- Almacenar nueva información usando la herramienta mem0_memory (action="store")
- Recuperar memorias relevantes (action="retrieve")
- Listar todas las memorias (action="list")
- Proporcionar respuestas personalizadas

Reglas clave:
- Siempre incluir user_id={USER_ID} en las llamadas a herramientas
- Ser conversacional y natural en las respuestas
- Formatear la salida claramente
- Reconocer la información almacenada
- Referenciar interacciones pasadas relevantes cuando sea apropiado
"""

# Configurar Amazon Bedrock
session = boto3.Session(region_name='us-west-2')
bedrock_model = BedrockModel(
    model_id="us.anthropic.claude-3-7-sonnet-20250219-v1:0",
    boto_session=session,
    streaming=False
)

# Crear agente mejorado con capacidades de memoria
multimodal_agent = Agent(
    system_prompt=MULTIMODAL_SYSTEM_PROMPT,
    tools=[image_reader, file_read, video_reader, mem0_memory, use_llm],
    model=bedrock_model,
)
Enter fullscreen mode Exit fullscreen mode

💾 Operaciones de Memoria en Acción

1. Almacenando Contexto Inicial del Usuario

Primero, almacenemos información básica sobre nuestro usuario:

USER_ID = "eli_abc"  # Generar un ID de usuario único
content = """Hola, mi nombre es Elizabeth, pero me dicen Eli. Soy developer advocate en AWS, 
y quiero entender qué hay en imágenes, videos y documentos para mejorar mi trabajo diario."""

# Almacenar contexto del usuario en memoria
multimodal_agent.tool.mem0_memory(action="store", content=content, user_id=USER_ID)
Enter fullscreen mode Exit fullscreen mode

2. Análisis de Imagen con Almacenamiento en Memoria

Ahora analicemos una imagen y almacenemos automáticamente los resultados:

print("=== 📸 ANÁLISIS DE IMAGEN CON MEMORIA ===")
image_result = multimodal_agent(
    f"Analiza la imagen data-sample/diagram.jpg en detalle y describe todo lo que observas. "
    f"Recuerda esta información para más tarde. USER_ID: {USER_ID}"
)
print(image_result)
Enter fullscreen mode Exit fullscreen mode

El agente:

  • Procesará la imagen usando image_reader
  • Analizará el diagrama de arquitectura
  • Almacenará automáticamente el análisis en memoria usando mem0_memory
  • Proporcionará una descripción detallada

3. Análisis de Video con Memoria

Procesemos un video y almacenemos su contenido:

print("=== 🎬 ANÁLISIS DE VIDEO CON MEMORIA ===")
video_result = multimodal_agent(
    "Analiza el video data-sample/moderation-video.mp4 y describe en detalle "
    "las acciones y escenas que observas. Almacena esta información en tu memoria."
)
print(video_result)
Enter fullscreen mode Exit fullscreen mode

4. Procesamiento de Documento con Memoria

Procesar y recordar contenido de documentos:

print("=== 📄 ANÁLISIS DE DOCUMENTO CON MEMORIA ===")
doc_result = multimodal_agent(
    "Resume como json el contenido del documento data-sample/Welcome-Strands-Agents-SDK.pdf "
    "y almacena esta información en tu memoria."
)
print(doc_result)
Enter fullscreen mode Exit fullscreen mode

🔍 Recuperación y Gestión de Memoria

Recuperando Memorias Específicas

# Recuperar memorias relacionadas con una consulta específica
retrieved_memories = multimodal_agent.tool.mem0_memory(
    action="retrieve", 
    query="¿Qué servicios están en la imagen?", 
    user_id=USER_ID
)
print("Memorias Recuperadas:", retrieved_memories)
Enter fullscreen mode Exit fullscreen mode

Listando Todas las Memorias Almacenadas

# Listar todas las memorias almacenadas para el usuario
all_memories = multimodal_agent.tool.mem0_memory(
    action="list", 
    user_id=USER_ID
)
print("Todas las Memorias Almacenadas:", all_memories)
Enter fullscreen mode Exit fullscreen mode

Probando la Recuperación de Memoria Multi-Modal

El verdadero poder viene al probar la memoria entre diferentes tipos de medios:

print("=== 🧠 PRUEBA DE RECUPERACIÓN DE MEMORIA ===")
memory_result = multimodal_agent(
    "¿Qué recuerdas sobre la imagen, video y documento que te mostré anteriormente?"
)
print(memory_result)
Enter fullscreen mode Exit fullscreen mode

🎯 Casos de Uso del Mundo Real

Este agente mejorado con memoria abre numerosas aplicaciones prácticas:

1. Asistente de Documentación Técnica

  • Recordar diagramas de arquitectura, fragmentos de código y documentación
  • Proporcionar respuestas contextuales basadas en tu historial de proyecto
  • Rastrear cambios y evolución de tus diseños técnicos

2. Pipeline de Análisis de Contenido

  • Procesar lotes de imágenes, videos y documentos
  • Construir una base de conocimiento de contenido analizado
  • Generar reportes basados en insights acumulados

3. Gestión de Conocimiento Personal

  • Almacenar y recordar información de varios tipos de medios
  • Crear conexiones entre diferentes piezas de contenido
  • Construir un asistente de IA personalizado que crezca con tus necesidades

4. Procesamiento de Contenido Educativo

  • Analizar materiales educativos en diferentes formatos
  • Recordar preferencias y patrones de aprendizaje de estudiantes
  • Proporcionar recomendaciones de aprendizaje personalizadas

🚀 Comenzando

  1. Clona el repositorio:
git clone https://github.com/elizabethfuentes12/strands-agent-samples
cd notebook
Enter fullscreen mode Exit fullscreen mode
  1. Instala las dependencias:
pip install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode
  1. Configura las credenciales de AWS para acceso a Bedrock

  2. Prueba el notebook:

multi-understanding-with-memory.ipynb
Enter fullscreen mode Exit fullscreen mode

La combinación de las capacidades multi-modales de Strands Agent con memoria persistente crea una base para construir aplicaciones inteligentes y conscientes del contexto que pueden verdaderamente entender y recordar tu contenido.

📚 Recursos

¡Mantente al tanto de más implementaciones de Strands Agent!

¡Gracias!


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

Top comments (1)

Collapse
 
camila_hinojosa_anez profile image
Camila Hinojosa Anez

Me encanta! Lo probaré con enfoque en el mundo educativo 🤩