NapMem: la memoria de un agente no se recupera, se navega

NapMem: la memoria de un agente no se recupera, se navega
62,74de media con un modelo de 9B entrenado (59,85 el de 397B sin entrenar)
4niveles en la pirámide de memoria
5herramientas para moverse por ella
3,97 → 2,15llamadas por pregunta tras entrenar
Tu agente no debería recibir recuerdos: debería navegarlos (NapMem, Alibaba)
También lo cuento en este vídeo, en mi canal Articulator ES.

Un ejemplo: ¿qué tuve antes?enlace

El paper abre con un ejemplo muy claro. Un usuario pregunta: «¿Qué tuve antes, el Samsung Galaxy S22 o el Dell XPS 13?». Un sistema de memoria clásico busca y le pasa al agente dos notas: que el usuario tiene los dos aparatos y que compró el Galaxy S22 el 20 de febrero. Del portátil no hay fecha. Con eso, lo único que puede responder el agente es «no lo sé».

El sistema de memoria le pasa al agente dos notas sobre el Galaxy S22 y el Dell XPS 13, y el agente responde «No lo sé».
Recuperación pasiva: el agente solo ve lo que le traen.

Ahora, el mismo agente con herramientas de memoria. Ya no espera a que le traigan nada: busca él en las conversaciones y encuentra dos mensajes. El Dell lo reservó el 28 de enero, pero le llegó el 25 de febrero; el Galaxy lo tuvo el 20. La respuesta correcta es el Galaxy S22, y la trampa estaba en la fecha de la reserva.

El agente busca en las conversaciones, encuentra la reserva del Dell el 28 de enero con llegada el 25 de febrero y el Galaxy el 20 de febrero, y responde que primero tuvo el Galaxy S22.
Navegación activa: el agente busca hasta tener pruebas suficientes.

Esa diferencia, recibir frente a buscar, es todo el paper.

El problema de la recuperación pasivaenlace

Los agentes ya no viven en una sola conversación: nos acompañan durante semanas en el trabajo, estudiando o en el día a día, y para eso tienen que acordarse de nosotros. Lo difícil es que lo que saben de un usuario es de muchos tipos y cada pregunta futura necesita un recuerdo distinto, así que una forma fija de guardar y de consultar la memoria se queda corta.

Hasta ahora la memoria se ha mejorado por dos lados:

Construcción

Categorías más finas y almacenes de vectores, grafos, híbridos o jerárquicos: Mem0 guarda registros compactos, Zep monta un grafo de conocimiento temporal, MemOS trata la memoria como un recurso del sistema y MemoryOS la divide en corto, medio y largo plazo.

Recuperación

Búsquedas que reflexionan sobre lo encontrado, consultas personalizadas para cada usuario y una mejor reordenación de los resultados, a veces entrenadas con aprendizaje por refuerzo (Search-R1, DeepRetrieval, RMM).

Pero en casi todos, acceder a la memoria es una función del sistema, un proceso diseñado de antemano. Da igual cómo guardes la memoria, en lista, en grafo, en vectores o en jerarquía: al final se reduce a un trozo de contexto que alguien elige y se entrega al agente. Si ese trozo está incompleto, el agente no puede ir a buscar más. Es, como dicen los autores, un consumidor de pruebas seleccionadas por otro.

La memoria como espacio de accionesenlace

La propuesta es darle la vuelta: que la memoria sea un espacio de acciones estructurado. El agente tiene herramientas de memoria y decide tres cosas:

  1. Si necesita la memoria para esta pregunta.
  2. A qué nivel de detalle consultarla.
  3. Si lo que ha encontrado ya basta para responder.
Navegación activa: el agente decide si necesita la memoria, a qué nivel consultarla y si lo que ha encontrado basta para responder.
Navegación activa de la memoria: de ahí el nombre, NapMem.

Lo llaman navegación activa de la memoria, y la diferencia con los trabajos que también entrenan políticas de memoria es dónde ponen el foco: no en qué guardar o cuándo borrar, sino en cómo usar la memoria en el momento de responder, eligiendo el nivel y afinando según lo que va encontrando.

La pirámide de memoriaenlace

NapMem construye una pirámide para cada usuario con cuatro niveles. Todos cuentan la misma historia, cada uno con otro grado de abstracción, como un mapa que puedes ver entero o acercarte hasta una calle.

La pirámide de memoria de NapMem: conversaciones en la base, registros encima, hilos temáticos después y el perfil del usuario en la cima.
Cuatro niveles: del detalle exacto al resumen de quién eres.

1. Conversaciones en bruto

La base guarda cada mensaje tal cual, con su contenido, quién lo dijo, cuándo, la sesión y un identificador único para encontrarlo exacto. Esta capa solo crece: nunca se reescribe. Es la prueba de mayor fidelidad, la que el agente consulta cuando necesita el detalle fino.

2. Registros de memoria

El segundo nivel son frases compactas que quitan la paja de la charla y se quedan con lo útil. Hay cuatro tipos: hechos, eventos, instrucciones y preferencias. Cada registro lleva su identificador, su tipo, su texto, su fecha y los identificadores de los mensajes de los que salió; ese enlace permite volver de un recuerdo resumido a la conversación original.

Un registro de memoria con su tipo, su texto, su fecha y el identificador del mensaje del que salió, enlazado a la conversación original.
Cada registro apunta a los mensajes que lo respaldan.

Se crean en dos pasos. Primero, tras unos turnos de charla (el lote crece de 1 a 2, a 4 y después se queda en 5 turnos), el modelo extrae registros nuevos de los mensajes recientes. Después los compara con los que ya tenía, mediante búsqueda híbrida, y elige qué hacer con cada uno: guardarlo, descartarlo si es redundante, actualizar uno antiguo si algo ha cambiado o fusionarlos si hablan de lo mismo. Al actualizar o fusionar se conserva la unión de las fuentes y de las fechas.

Reconciliar un registro nuevo con los que ya había: guardar, descartar, actualizar o fusionar, conservando todas las fuentes.
Extraer y reconciliar: la memoria no acumula duplicados.

3. Hilos temáticos

Un registro es un dato suelto, pero muchas cosas de una persona evolucionan durante semanas: un proyecto, una afición, una relación. Cada hilo temático es un archivo Markdown con metadatos, un resumen, la historia de ese tema y una sección de pruebas que enlaza los registros que la respaldan. Como mucho hay 20 hilos, y el agente decide si actualizar uno, fusionar dos o abrir otro nuevo. Las escrituras se validan antes de confirmarse; si el formato falla, se deshacen.

Un hilo temático en Markdown con su resumen, su historia y la lista de registros que lo respaldan.
Un hilo sigue un tema a lo largo de varias sesiones.

4. El perfil del usuario

En la cima está el perfil: un resumen global de quién es el usuario, sus preferencias de largo plazo y su forma de interactuar. Tiene un límite de 2.000 caracteres, así que se revisa en vez de crecer. Y solo puede usar lo que dicen los hilos: si no hay pruebas, el campo se queda vacío antes que inventar.

El archivo profile.md con quién es el usuario, sus preferencias y cómo interactuar, con un contador de 2.000 caracteres.
El perfil se revisa, no crece.

Cómo se construyeenlace

La pirámide se levanta de abajo arriba y poco a poco, recorriendo las sesiones del usuario en orden cronológico. Cada sesión nueva se añade a las conversaciones, de ahí salen registros, y los cambios suben: los hilos se revisan antes de una sesión nueva si hay registros pendientes, en los cambios de fecha o cuando se acumulan más de 20 registros nuevos; el perfil, tras actualizar los hilos o cuando hay más de 50.

Los dos niveles inferiores son registros estructurados en JSONL con índices de vectores y de palabras clave, para buscar por significado y encontrar algo exacto por su identificador. Los dos superiores son archivos Markdown que se leen tal cual. Y todos quedan enlazados: del perfil a los hilos, de los hilos a los registros y de los registros a los mensajes.

La pirámide se construye de abajo arriba: los dos niveles inferiores con índices de vectores y palabras clave y los dos superiores en Markdown, todos enlazados.
Todo queda enlazado, como los hilos de un tablero de detective.

Las cinco herramientasenlace

Para moverse por la pirámide, el agente tiene cinco herramientas, cada una pensada para un nivel:

HerramientaEntradaQué hace
search_conversationtexto libreBusca en los mensajes en bruto y devuelve los 5 mejores fragmentos
search_recordstexto libreBusca en los registros y devuelve los 5 mejores
get_conversationlista de ids de mensajeTrae mensajes exactos por su identificador
get_recordslista de ids de registroTrae registros exactos por su identificador
read_filenombre de archivoLee un hilo temático o profile.md

Las dos de búsqueda son híbridas: mezclan palabras clave y vectores con reciprocal rank fusion (RRF, con k = 60), sobre embeddings de Qwen3-Embedding-0.6B. Las de acceso exacto usan los identificadores que devolvieron llamadas anteriores, y la de lectura da acceso a los niveles más abstractos.

Las cinco herramientas de memoria unidas a su nivel de la pirámide: búsquedas, accesos exactos y lectura de archivos.
Dos de búsqueda, dos de acceso exacto y una de lectura.

Con eso, la navegación puede ir de arriba abajo (empezar por el perfil o un hilo, afinar con los registros y bajar a la conversación para comprobar la prueba) o de abajo arriba (buscar un detalle y, si no aparece, subir a un resumen). En cada paso el agente mira lo que ha encontrado y decide su siguiente acción, o si para y responde. Formalmente, en el paso t elige una acción a partir de la pregunta, la pirámide y lo que ha visto hasta entonces, y la trayectoria termina con la respuesta.

Navegación de arriba abajo, del perfil a la conversación, y de abajo arriba, de un detalle que no aparece a un resumen.
Bajar para comprobar, subir para entender.

El ejemplo de la figura 2 del paper: «¿Qué consola tiene Nate?». El agente lee primero Nate-Entertainment.md, que menciona Cyberpunk 2077 y Xenoblade Chronicles. Busca en las conversaciones con search_conversation("Nintendo Switch PS5 Xbox console") y encuentra que Nate es un gran fan de los juegos de Nintendo. Después trae con get_records el registro exacto: está jugando a Xenoblade Chronicles, un RPG de fantasía. Razona y responde: una Nintendo Switch. Tres pasos por tres niveles distintos.

¿Qué consola tiene Nate? read_file, search_conversation y get_records llevan a la respuesta Nintendo Switch.
Tres pasos, tres niveles.

Hay un límite: como mucho cuatro pasos con herramientas por pregunta; si se pasa, la respuesta cuenta como fallo. Y el prompt es claro: no adivines nada sobre el usuario; si dos recuerdos se contradicen, mandan las instrucciones; usa las conversaciones cuando necesites la prueba exacta, y deja de buscar en cuanto tengas pruebas suficientes, sin perseguir detalles marginales. La respuesta final va en JSON con la respuesta y el motivo.

Aprender a navegar: la rúbrica y GRPOenlace

Tener herramientas no basta: hay que saber usarlas. Por eso entrenan al agente con aprendizaje por refuerzo. Cada ejemplo es una pregunta que necesita memoria junto a la pirámide de ese usuario; el agente responde con su cadena de llamadas y solo recibe una nota al final, por el resultado. Esa nota entrena a la vez la respuesta y todas las decisiones de navegación que la llevaron hasta ahí.

La nota sigue una rúbrica de tres criterios binarios: formato válido (F), respuesta correcta (C) y uso de la memoria (U):

CasoFCUNota
Acierta usando la memoria111+1
Acierta sin usarla1100
Falla tras consultarla101−0,5
Falla sin consultarla100−1
Formato roto (o se pasa del presupuesto)0––−1

Así se premia acertar buscando y se castiga más inventar. Como todas las preguntas del entrenamiento necesitan memoria, acertar sin consultarla no puntúa.

La rúbrica de recompensa: +1 si acierta usando la memoria, 0 si acierta sin usarla, −0,5 si falla tras consultarla y −1 si falla sin consultarla o rompe el formato.
Se premia acertar buscando; se castiga más inventar.

El algoritmo es GRPO (Group Relative Policy Optimization). Para cada pregunta se generan cuatro intentos, y la ventaja de cada uno es su nota menos la media del grupo: los intentos mejores que la media se refuerzan y los peores se penalizan. No hace falta un modelo aparte que juzgue cada paso: el propio grupo es la referencia. La ventaja se aplica a todos los tokens del intento, también a los de las llamadas a herramientas, con el objetivo recortado habitual y una penalización KL respecto al modelo de partida.

Cuatro intentos con notas +1, −0,5, −0,5 y +1; la media del grupo es 0,25 y la ventaja de cada uno es su nota menos esa media.
La ventaja de cada intento: su nota menos la media del grupo.

Para quien quiera reproducirlo, los hiperparámetros del apéndice: Qwen3.5-9B como modelo base, lote de 8, grupos de 4 intentos, tasa de aprendizaje 1×10⁻⁶, coeficiente KL de 0,001, sin término de entropía, bfloat16, 5 épocas y hasta 5 turnos del asistente, con el framework verl en GPU NVIDIA H20.

Entrenamiento y evaluaciónenlace

Entrenan con preguntas de dos benchmarks, LoCoMo y PersonaMem-v2, separando a los usuarios (60 % para entrenar, 20 % para validar y 20 % para el test) para que nadie aparezca en dos lados. El tercero, LongMemEval, no se ve nunca durante el entrenamiento: sirve para comprobar si lo aprendido funciona fuera de lo conocido. LoCoMo y LongMemEval miden la memoria de hechos (recordar algo lejano, cambios en el tiempo, razonar entre sesiones); PersonaMem-v2, las preferencias implícitas. Los tests tienen 1.315 preguntas de LoCoMo, 100 de LongMemEval y 911 de PersonaMem-v2.

Lo comparan con cinco sistemas de memoria: Mem0 (memoria plana de vectores), Zep (grafo temporal), MemOS (un sistema operativo de memoria), MemoryOS (memoria jerárquica) y AgeMem (memoria agéntica entrenada con refuerzo), todos sobre el mismo Qwen3.5-9B. NapMem y AgeMem pueden hacer como mucho cuatro pasos con herramientas y cada búsqueda devuelve hasta 5 elementos; a los sistemas no agénticos se les dejan hasta 20 por búsqueda.

En las preguntas abiertas juzga Claude Opus 4.6. Comprobaron su fiabilidad con 100 respuestas anotadas por tres personas: coincide con la mayoría humana en el 99 % de los casos (precisión 1,0, exhaustividad 0,98, κ de Cohen 0,98). El único desacuerdo fue un «0 veces» que el juez dio por malo cuando la respuesta esperada era que nunca se mencionó. Todos los resultados son la media de tres semillas.

Los resultadosenlace

La tabla 1 del paper (L-J es la nota del juez; la media junta la nota del juez de LoCoMo y LongMemEval y la precisión de PersonaMem-v2):

SistemaLoCoMo F1LoCoMo L-JLongMemEval F1LongMemEval L-JPersonaMem-v2Media
Mem041,1960,8653,8678,0038,8959,25
Zep36,0952,2152,6173,3336,3353,96
MemOS35,2255,8239,1654,3337,5849,24
MemoryOS31,4044,2822,6823,6735,8234,59
AgeMem38,0045,0237,8351,3324,1940,18
NapMem-122B (sin entrenar)35,3951,6948,8670,0041,3854,36
NapMem-397B (sin entrenar)38,3154,4253,8578,3346,1059,85
NapMem-9B con RL41,2859,9257,4180,3347,9762,74
Barras con la media de las tres pruebas: NapMem 62,74, Mem0 59,25, Zep 53,96, MemOS 49,24 y MemoryOS 34,59.
La media de las tres pruebas.

NapMem entrenado saca la mejor media, 62,74, frente a 59,25 del mejor rival, Mem0. En LongMemEval, la prueba que no vio al entrenar, llega a 80,33, el mejor de todos; en PersonaMem-v2, a 47,97, también por delante.

En LoCoMo no gana en todo, y conviene decirlo: tiene el mejor F1 (41,28 frente a 41,19), pero en la nota del juez Mem0 le saca un punto (60,86 frente a 59,92). Es decir, en la memoria de hechos de conversaciones largas está a la par del mejor; donde se despega es en la personalización y en lo que no había visto al entrenar.

9B entrenado frente a 397Benlace

Lo más llamativo de la tabla son las dos filas de en medio. Probaron la misma pirámide y las mismas herramientas con modelos mucho más grandes, sin entrenar: Qwen3.5-122B y Qwen3.5-397B. El más grande saca 59,85 de media; el pequeño de 9B, entrenado, 62,74. Aprender a usar la memoria vale más que multiplicar el tamaño por cuarenta.

Círculos proporcionales al número de parámetros: el modelo de 9B entrenado saca 62,74 frente a 54,36 del de 122B y 59,85 del de 397B sin entrenar.
Un modelo 44 veces más pequeño, pero entrenado para buscar.

Cuando no hace falta memoriaenlace

¿Y si la pregunta no necesita memoria? Para comprobar que el entrenamiento no lo convierte en un agente que consulta la memoria por todo, le pusieron tres tareas ajenas (ciencia con GPQA-Diamond, llamadas a funciones con BFCL-v3 y búsqueda visual con V*Bench) con una pirámide cualquiera y todas las herramientas de memoria activas:

PruebaMétricaModelo baseNapMem-9B sin RLNapMem-9B con RL
GPQA-DiamondPrecisión53,0355,7457,58
GPQA-DiamondLlamadas a memoria–34,51 %6,90 %
BFCL-v3Tarea / herramienta / ejecución95,00 / 97,50 / 93,5093,50 / 97,50 / 94,0095,00 / 97,50 / 94,50
BFCL-v3Llamadas a memoria–0 %0 %
V*BenchRespuesta84,8289,5391,10
V*BenchLlamadas a memoria–0 %0 %

Sin entrenar, el modelo miraba la memoria en el 34,51 % de las preguntas de ciencia, sin motivo; entrenado, solo en el 6,90 %. En las otras dos tareas, nunca. Y no pierde nivel: incluso mejora algo en ciencia y en la prueba visual. El refuerzo calibra cuándo usar la memoria, no solo la usa más.

En las preguntas de ciencia, las consultas innecesarias a la memoria bajan del 34,51 % al 6,90 %; en llamadas a funciones y búsqueda visual se quedan en el 0 %.
Entrenado, casi nunca mira tu memoria cuando no hace falta.

El coste: espacio y tiempoenlace

La memoria de un usuario no deja de crecer, así que ocupar poco importa. Sumando los tres benchmarks, NapMem ocupa 4,83 GiB, menos que casi todos pese a guardar cuatro niveles:

SistemaPersonaMem-v2LongMemEvalLoCoMoTotal
NapMem0,694,010,124,83
Mem01,408,900,1410,44 (×2,16)
MemOS3,6118,850,6423,10 (×4,78)
Zep3,5010,000,6014,10 (×2,92)
MemoryOS1,984,300,406,68 (×1,38)
AgeMem0,342,560,092,99 (×0,62)

Solo AgeMem ocupa menos, con su memoria plana y ligera, pero rinde mucho peor (40,18 de media). El tamaño por sí solo no lo dice todo.

Almacenamiento total en GiB: NapMem 4,83, Mem0 10,44, Zep 14,10 y MemOS 23,10; AgeMem ocupa 2,99 pero rinde mucho peor.
Cuatro niveles y, aun así, menos de la mitad que Mem0.

Y el tiempo de respuesta. En cien preguntas de PersonaMem-v2, la latencia crece casi en línea recta con los tokens que genera el modelo: cuanto más escribe, más tarda. Los sistemas pasivos reciben mucho texto y razonan sobre todo él; NapMem busca lo que necesita y para en cuanto tiene pruebas, así que escribe menos y contesta antes, aunque use herramientas.

Diagrama de dispersión de latencia frente a tokens generados: casi una línea recta, con NapMem agrupado abajo a la izquierda y los sistemas pasivos con puntos lejos, arriba a la derecha.
Escribe menos, responde antes. Redibujado de la figura 3.

Qué pieza importaenlace

Para ver qué parte da la ventaja, quitaron piezas una a una (nota del juez en LoCoMo y LongMemEval, precisión en PersonaMem-v2):

VarianteLoCoMoLongMemEvalPersonaMem-v2Media
NapMem completo59,9280,3347,9762,74
Sin aprendizaje por refuerzo52,0972,3320,7548,39
Sin navegación (recuperación pasiva)48,3768,0045,8854,08
Solo herramientas de registros39,7760,0035,0244,93
Sin niveles superiores (sin hilos ni perfil)49,1375,0038,2054,11
Barras de la ablación: completo 62,74, sin navegación 54,08, sin niveles superiores 54,11 y solo registros 44,93.
Quitar cualquier pieza cuesta entre 8 y 18 puntos.

Las tres piezas suman. Navegar es mejor que recibir, aunque la memoria disponible sea la misma. Los resúmenes de arriba completan el detalle de abajo. Y usar bien la memoria se aprende: sin el refuerzo, con la misma pirámide y las mismas herramientas, la media cae a 48,39, y en PersonaMem-v2 se desploma de 47,97 a 20,75. No basta con explicarlo en el prompt.

Cómo navegaenlace

Miraron cuál es la primera herramienta que usa cada modelo. Los de 9B empiezan casi siempre por los registros (92,16 % sin entrenar, 88,84 % entrenado). Los grandes, en cambio, empiezan leyendo archivos en casi la mitad de los casos (44,38 % el de 122B y 46,60 % el de 397B). Una posible explicación de los autores: los modelos grandes digieren mejor un resumen largo, y los pequeños prefieren pruebas cortas y concretas.

Mapa de calor de la primera herramienta: los modelos de 9B empiezan por registros en torno al 90 % de las veces; los de 122B y 397B leen archivos en casi la mitad de los casos.
La primera herramienta de cada modelo. Redibujado de la figura 4.

Y el refuerzo cambia la forma de buscar. Sin entrenar, el modelo de 9B hacía 3,97 llamadas por pregunta; entrenado, 2,15, y aun así acierta más: de cada cien resultados que le devuelven las herramientas, 34,92 son pruebas útiles, frente a 20,66 antes. No se queda en un solo nivel: el 79,63 % de las preguntas siguen usando varios (80,39 % antes de entrenar). Ha aprendido a parar.

Un acierto y un falloenlace

El acierto. Pregunta: «¿Qué estado visitó Nate?». search_conversation("Nate visit state travel") no da nada útil; search_records(...) devuelve registros irrelevantes o vagos. Entonces el agente lee el hilo Nate-Identity-Interests.md y ahí está: Nate viajó a la playa de Tampa el 11 de noviembre de 2022. Respuesta: Florida. Subir a un nivel más abstracto rescató lo que la búsqueda directa no encontraba.

¿Qué estado visitó Nate? La búsqueda en conversaciones y en registros falla; el hilo temático dice que viajó a la playa de Tampa y el agente responde Florida.
Cuando la búsqueda falla, el resumen encuentra.

El fallo. Alguien pide ideas tranquilas para el fin de semana. El agente encuentra un registro: el usuario pensó en poner salsa en una gala benéfica porque el año anterior había funcionado. Encuentra otro: se carga de energía en eventos llenos de gente, pero luego necesita estar a solas. Y elige la opción que da por hecho que le encanta ir a bailar salsa los fines de semana. Ha convertido un evento suelto en una preferencia estable: los recuerdos eran relevantes, pero no bastaban para esa conclusión. Los autores lo señalan como trabajo futuro: calibrar cuánto prueba cada recuerdo.

Un registro de tipo evento sobre la salsa en una gala benéfica se convierte, por error, en la preferencia «le encanta bailar salsa los fines de semana».
Evento ≠ preferencia.

Límitesenlace

Los propios autores señalan tres:

  • Los benchmarks no recogen todas las formas reales de personalización ni de conversación abierta.
  • La privacidad y el olvido, dos requisitos clave en cualquier sistema que recuerda cosas de personas, no están resueltos del todo.
  • El tamaño del modelo: queda por estudiar a fondo cómo cambia la estrategia de acceso a la memoria al escalar.

Una curiosidad: en el apéndice de implementación se les escapa otro nombre, «PyraNav», seguramente el de una versión anterior del método.

En resumenenlace

NapMem guarda la memoria del usuario en una pirámide de cuatro niveles (conversaciones, registros, hilos temáticos y perfil) y entrena al agente con aprendizaje por refuerzo para moverse por ella con cinco herramientas, en vez de recibir lo que otro elige. Así, un modelo de 9B supera a uno de 397B sin entrenar, busca menos, acierta más y casi nunca consulta la memoria cuando no hace falta.

En una frase

La memoria de un agente funciona mejor como un sitio que recorre que como un trozo de contexto que le entregan.

¿Qué te gustaría que tu asistente recordara de ti?

Fuentesenlace

Seguir leyendo

Últimos posts -->

¿Has visto estos proyectos?

Gymnasia

Gymnasia Gymnasia
Expo
React Native
TypeScript
OpenAI
Anthropic

App de fitness con dos agentes que se ejecutan íntegramente en el dispositivo, sin backend, de forma que los datos del usuario nunca salen del móvil. Un coach conversacional BYOK con tools locales y system prompt remoto con fallback offline, y un estimador de comidas que saca los macronutrientes de una foto del plato, con lectura de códigos de barras contra OpenFoodFacts.

LangGraph Deep Researcher

LangGraph Deep Researcher LangGraph Deep Researcher
Python
LangGraph
FastAPI
React
TypeScript
Docker

Sistema multiagente de investigación construido con LangGraph. Un supervisor descompone tu pregunta en temas y lanza subagentes de búsqueda en paralelo; cada uno comprime sus hallazgos antes de pasarlos a un agente redactor que escribe el informe final en markdown con sus fuentes. Streaming en vivo por WebSockets, modelo configurable por rol y claves de API propias que nunca se guardan en el servidor.

Tau

Tau Tau
Python
LangChain

Sistema multiagente de tutoría para estudiantes de secundaria, con un agente por asignatura y material de curso elaborado y validado por un equipo de profesores. Llegó a usarse con alumnos reales en un colegio privado en España y en un instituto en Colombia.

Ver todos los proyectos -->
>_ Disponible para proyectos

¿Tienes un proyecto con IA?

Hablemos.

maximofn@gmail.com

Especialista en Machine Learning e Inteligencia Artificial. Desarrollo soluciones con IA generativa, agentes inteligentes y modelos personalizados.

¿Quieres ver alguna charla?

Últimas charlas -->

¿Quieres mejorar con estos tips?

Últimos tips -->

Usa esto en local

Los espacios de Hugging Face nos permite ejecutar modelos con demos muy sencillas, pero ¿qué pasa si la demo se rompe? O si el usuario la elimina? Por ello he creado contenedores docker con algunos espacios interesantes, para poder usarlos de manera local, pase lo que pase. De hecho, es posible que si pinchas en alún botón de ver proyecto te lleve a un espacio que no funciona.

Flow edit

Flow edit Flow edit

Edita imágenes con este modelo de Flow. Basándose en SD3 o FLUX puedes editar cualquier imagen y generar nuevas

FLUX.1-RealismLora

FLUX.1-RealismLora FLUX.1-RealismLora
Ver todos los contenedores -->
>_ Disponible para proyectos

¿Tienes un proyecto con IA?

Hablemos.

maximofn@gmail.com

Especialista en Machine Learning e Inteligencia Artificial. Desarrollo soluciones con IA generativa, agentes inteligentes y modelos personalizados.

¿Quieres entrenar tu modelo con estos datasets?

short-jokes-dataset

HuggingFace

Dataset de chistes en inglés

Uso: Fine-tuning de modelos de generación de texto humorístico

231K filas 2 columnas 45 MB
Ver en HuggingFace →

opus100

HuggingFace

Dataset con traducciones de inglés a español

Uso: Entrenamiento de modelos de traducción inglés-español

1M filas 2 columnas 210 MB
Ver en HuggingFace →

netflix_titles

HuggingFace

Dataset con películas y series de Netflix

Uso: Análisis de catálogo de Netflix y sistemas de recomendación

8.8K filas 12 columnas 3.5 MB
Ver en HuggingFace →
Ver más datasets -->