🇻🇪🇨🇱 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 🤩