🇻🇪🇨🇱 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,
)
💾 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)
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)
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)
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)
🔍 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)
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)
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)
🎯 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
- Clona el repositorio:
git clone https://github.com/elizabethfuentes12/strands-agent-samples
cd notebook
- Instala las dependencias:
pip install -r requirements.txt
Configura las credenciales de AWS para acceso a Bedrock
Prueba el notebook:
multi-understanding-with-memory.ipynb
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
- Documentación de Strands Agent
- Parte 1: Procesamiento Multi-Modal Básico
- Ejemplos de Código Completos
- Documentación de AWS Bedrock
¡Mantente al tanto de más implementaciones de Strands Agent!
¡Gracias!
🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr
Top comments (1)
Me encanta! Lo probaré con enfoque en el mundo educativo 🤩