NapMem: a memória de um agente não se recupera, se navega

NapMem: a memória de um agente não se recupera, se navega
62,74de média com um modelo de 9B treinado (59,85 o de 397B sem treino)
4níveis na pirâmide de memória
5ferramentas para se mover por ela
3,97 → 2,15chamadas por pergunta depois do treino
Your agent shouldn't receive memories: it should navigate them (NapMem, Alibaba)
Também explico isso neste vídeo, em inglês, no meu canal Articulator EN. Este vídeo não tem versão em português, mas você pode ativar as legendas traduzidas automaticamente.

Um exemplo: o que veio primeiro?link

O paper começa com um exemplo bem claro. Um usuário pergunta: «O que eu tive primeiro, o Samsung Galaxy S22 ou o Dell XPS 13?». Um sistema de memória clássico faz a busca e entrega ao agente duas notas: o usuário tem os dois aparelhos e comprou o Galaxy S22 em 20 de fevereiro. Do notebook, não há data. Com isso, a única coisa que o agente pode responder é «não sei».

O sistema de memória entrega ao agente duas notas sobre o Galaxy S22 e o Dell XPS 13, e o agente responde «Não sei».
Recuperação passiva: o agente só vê o que trazem para ele.

Agora, o mesmo agente com ferramentas de memória. Ele não espera mais que tragam nada: busca nas conversas por conta própria e encontra duas mensagens. O Dell foi reservado em 28 de janeiro, mas chegou em 25 de fevereiro; o Galaxy chegou no dia 20. A resposta certa é o Galaxy S22, e a pegadinha estava na data da reserva.

O agente busca nas conversas, encontra a reserva do Dell em 28 de janeiro com entrega em 25 de fevereiro e o Galaxy em 20 de fevereiro, e responde que o Galaxy S22 veio primeiro.
Navegação ativa: o agente busca até ter provas suficientes.

Essa diferença, receber contra buscar, é o paper inteiro.

O problema da recuperação passivalink

Os agentes já não vivem em uma única conversa: eles nos acompanham por semanas, no trabalho, nos estudos ou no dia a dia, e para isso precisam se lembrar de nós. O difícil é que o que eles sabem de um usuário é de muitos tipos, e cada pergunta futura precisa de uma lembrança diferente; por isso uma forma fixa de guardar e consultar a memória não dá conta.

Até agora, a memória foi melhorada por dois lados:

Construção

Categorias mais finas e armazenamentos de vetores, grafos, híbridos ou hierárquicos: o Mem0 guarda registros compactos, o Zep monta um grafo de conhecimento temporal, o MemOS trata a memória como um recurso do sistema e o MemoryOS a divide em curto, médio e longo prazo.

Recuperação

Buscas que refletem sobre o que encontraram, consultas personalizadas para cada usuário e uma reordenação melhor dos resultados, às vezes treinadas com aprendizado por reforço (Search-R1, DeepRetrieval, RMM).

Mas em quase todos, acessar a memória é uma função do sistema, um processo desenhado de antemão. Não importa como você guarda a memória, em lista, em grafo, em vetores ou em hierarquia: no fim ela vira um pedaço de contexto que alguém escolhe e entrega ao agente. Se esse pedaço estiver incompleto, o agente não pode ir buscar mais. Ele é, como dizem os autores, um consumidor de provas selecionadas por outro.

A memória como espaço de açõeslink

A proposta é virar isso do avesso: a memória passa a ser um espaço de ações estruturado. O agente ganha ferramentas de memória e decide três coisas:

  1. Se precisa da memória para esta pergunta.
  2. Em que nível de detalhe consultá-la.
  3. Se o que encontrou já basta para responder.
Navegação ativa: o agente decide se precisa da memória, em que nível consultá-la e se o que encontrou basta para responder.
Navegação ativa da memória: daí o nome, NapMem.

Eles chamam isso de navegação ativa da memória, e a diferença em relação a outros trabalhos que também treinam políticas de memória está no foco: não no que guardar ou quando apagar, e sim em como usar a memória na hora de responder, escolhendo o nível e ajustando conforme o que vai encontrando.

A pirâmide de memórialink

O NapMem constrói uma pirâmide para cada usuário, com quatro níveis. Todos contam a mesma história, cada um com outro grau de abstração, como um mapa que você pode ver inteiro ou aproximar até uma rua.

A pirâmide de memória do NapMem: conversas brutas na base, registros acima, depois as trilhas temáticas e o perfil do usuário no topo.
Quatro níveis: do detalhe exato ao resumo de quem você é.

1. Conversas brutas

A base guarda cada mensagem como ela é, com o conteúdo, quem disse, quando, a sessão e um identificador único para encontrá-la com exatidão. Essa camada só cresce: nunca é reescrita. É a prova de maior fidelidade, a que o agente consulta quando precisa do detalhe fino.

2. Registros de memória

O segundo nível são frases compactas que tiram a enrolação da conversa e ficam só com o útil. Há quatro tipos: fatos, eventos, instruções e preferências. Cada registro leva seu identificador, seu tipo, seu texto, sua data e os identificadores das mensagens de onde saiu; esse vínculo permite voltar de uma lembrança resumida para a conversa original.

Um registro de memória com tipo, texto, data e o identificador da mensagem de onde saiu, ligado à conversa original.
Cada registro aponta para as mensagens que o sustentam.

Eles são criados em duas etapas. Primeiro, depois de alguns turnos de conversa (o lote cresce de 1 para 2, para 4 e depois fica em 5 turnos), o modelo extrai registros novos das mensagens recentes. Depois os compara com os que já tinha, por busca híbrida, e escolhe o que fazer com cada um: guardar, descartar se for redundante, atualizar um antigo se algo mudou ou fundir os que falam da mesma coisa. Ao atualizar ou fundir, a união das fontes e das datas é preservada.

Reconciliar um registro novo com os que já existiam: guardar, descartar, atualizar ou fundir, preservando todas as fontes.
Extrair e reconciliar: a memória não acumula duplicados.

3. Trilhas temáticas

Um registro é um dado solto, mas muita coisa de uma pessoa evolui ao longo de semanas: um projeto, um hobby, um relacionamento. Cada trilha temática é um arquivo Markdown com metadados, um resumo, a história desse tema e uma seção de provas que liga os registros que a sustentam. Há no máximo 20 trilhas, e o agente decide se atualiza uma, funde duas ou abre outra nova. As escritas são validadas antes de serem confirmadas; se o formato falhar, elas são desfeitas.

Uma trilha temática em Markdown com resumo, história e a lista de registros que a sustentam.
Uma trilha acompanha um tema ao longo de várias sessões.

4. O perfil do usuário

No topo fica o perfil: um resumo global de quem é o usuário, suas preferências de longo prazo e seu jeito de interagir. Ele tem um limite de 2.000 caracteres, então é revisado em vez de crescer. E só pode usar o que as trilhas dizem: se não houver provas, o campo fica vazio em vez de inventar.

O arquivo profile.md com quem é o usuário, suas preferências e como interagir, com um contador de 2.000 caracteres.
O perfil é revisado, não cresce.

Como ela é construídalink

A pirâmide é construída de baixo para cima, aos poucos, percorrendo as sessões do usuário em ordem cronológica. Cada sessão nova entra nas conversas, dali saem registros, e as mudanças sobem: as trilhas são revisadas antes de uma sessão nova se há registros pendentes, nas mudanças de data ou quando se acumulam mais de 20 registros novos; o perfil, depois de atualizar as trilhas ou quando há mais de 50.

Os dois níveis de baixo são registros estruturados em JSONL com índices de vetores e de palavras-chave, para buscar pelo significado e achar algo exato pelo identificador. Os dois de cima são arquivos Markdown que são lidos como estão. E tudo fica ligado: do perfil às trilhas, das trilhas aos registros e dos registros às mensagens.

A pirâmide é construída de baixo para cima: os dois níveis de baixo com índices de vetores e palavras-chave e os dois de cima em Markdown, todos ligados.
Tudo fica ligado, como os fios de um quadro de detetive.

As cinco ferramentaslink

Para se mover pela pirâmide, o agente tem cinco ferramentas, cada uma pensada para um nível:

FerramentaEntradaO que faz
search_conversationtexto livreBusca nas mensagens brutas e devolve os 5 melhores trechos
search_recordstexto livreBusca nos registros e devolve os 5 melhores
get_conversationlista de ids de mensagemTraz mensagens exatas pelo identificador
get_recordslista de ids de registroTraz registros exatos pelo identificador
read_filenome do arquivoLê uma trilha temática ou o profile.md

As duas de busca são híbridas: misturam palavras-chave e vetores com reciprocal rank fusion (RRF, com k = 60), sobre embeddings do Qwen3-Embedding-0.6B. As de acesso exato usam os identificadores devolvidos por chamadas anteriores, e a de leitura dá acesso aos níveis mais abstratos.

As cinco ferramentas de memória ligadas ao seu nível da pirâmide: buscas, acessos exatos e leitura de arquivos.
Duas de busca, duas de acesso exato e uma de leitura.

Com isso, a navegação pode ir de cima para baixo (começar pelo perfil ou por uma trilha, refinar com os registros e descer até a conversa para conferir a prova) ou de baixo para cima (buscar um detalhe e, se ele não aparecer, subir para um resumo). A cada passo o agente olha o que encontrou e decide a próxima ação, ou se para e responde. Formalmente, no passo t ele escolhe uma ação a partir da pergunta, da pirâmide e do que viu até ali, e a trajetória termina com a resposta.

Navegação de cima para baixo, do perfil até a conversa, e de baixo para cima, de um detalhe que não aparece até um resumo.
Descer para conferir, subir para entender.

O exemplo da figura 2 do paper: «Que console o Nate tem?». O agente lê primeiro o Nate-Entertainment.md, que menciona Cyberpunk 2077 e Xenoblade Chronicles. Busca nas conversas com search_conversation("Nintendo Switch PS5 Xbox console") e descobre que o Nate é muito fã dos jogos da Nintendo. Depois traz com get_records o registro exato: ele está jogando Xenoblade Chronicles, um RPG de fantasia. Raciocina e responde: um Nintendo Switch. Três passos por três níveis diferentes.

Que console o Nate tem? read_file, search_conversation e get_records levam à resposta Nintendo Switch.
Três passos, três níveis.

Há um limite: no máximo quatro passos com ferramentas por pergunta; se passar disso, a resposta conta como erro. E o prompt é claro: não adivinhe nada sobre o usuário; se duas lembranças se contradizem, valem as instruções; use as conversas brutas quando precisar da prova exata; e pare de buscar assim que tiver provas suficientes, sem ir atrás de detalhes marginais. A resposta final vai em JSON, com a resposta e o motivo.

Aprender a navegar: a rubrica e o GRPOlink

Ter ferramentas não basta: é preciso saber usá-las. Por isso eles treinam o agente com aprendizado por reforço. Cada exemplo é uma pergunta que precisa de memória junto com a pirâmide daquele usuário; o agente responde com sua cadeia de chamadas e só recebe uma nota no final, pelo resultado. Essa nota treina ao mesmo tempo a resposta e todas as decisões de navegação que levaram até ela.

A nota segue uma rubrica com três critérios binários: formato válido (F), resposta correta (C) e uso da memória (U):

CasoFCUNota
Acerta usando a memória111+1
Acerta sem usá-la1100
Erra depois de consultá-la101−0,5
Erra sem consultá-la100−1
Formato quebrado (ou estoura o orçamento)0––−1

Assim, acertar buscando é premiado e inventar é punido com mais força. Como todas as perguntas do treino precisam de memória, acertar sem consultá-la não pontua.

A rubrica de recompensa: +1 se acerta usando a memória, 0 se acerta sem usá-la, −0,5 se erra depois de consultá-la e −1 se erra sem consultá-la ou quebra o formato.
Acertar buscando é premiado; inventar é punido com mais força.

O algoritmo é o GRPO (Group Relative Policy Optimization). Para cada pergunta são gerados quatro tentativas, e a vantagem de cada uma é sua nota menos a média do grupo: as tentativas acima da média são reforçadas e as de baixo, penalizadas. Não é preciso um modelo à parte para julgar cada passo: o próprio grupo é a referência. A vantagem se aplica a todos os tokens da tentativa, inclusive os das chamadas a ferramentas, com o objetivo recortado de sempre e uma penalidade KL em relação ao modelo de partida.

Quatro tentativas com notas +1, −0,5, −0,5 e +1; a média do grupo é 0,25 e a vantagem de cada uma é sua nota menos essa média.
A vantagem de cada tentativa: sua nota menos a média do grupo.

Para quem quiser reproduzir, os hiperparâmetros do apêndice: Qwen3.5-9B como modelo base, lote de 8, grupos de 4 tentativas, taxa de aprendizado de 1×10⁻⁶, coeficiente KL de 0,001, sem termo de entropia, bfloat16, 5 épocas e até 5 turnos do assistente, com o framework verl em GPUs NVIDIA H20.

Treinamento e avaliaçãolink

Eles treinam com perguntas de dois benchmarks, LoCoMo e PersonaMem-v2, separando os usuários (60% para treino, 20% para validação e 20% para teste) para que ninguém apareça dos dois lados. O terceiro, LongMemEval, nunca é visto durante o treino: serve para conferir se o aprendido funciona fora do terreno conhecido. LoCoMo e LongMemEval medem a memória de fatos (lembrar algo distante, mudanças ao longo do tempo, raciocinar entre sessões); o PersonaMem-v2, as preferências implícitas. Os testes têm 1.315 perguntas do LoCoMo, 100 do LongMemEval e 911 do PersonaMem-v2.

Eles comparam com cinco sistemas de memória: Mem0 (memória plana de vetores), Zep (grafo temporal), MemOS (um sistema operacional de memória), MemoryOS (memória hierárquica) e AgeMem (memória agêntica treinada com reforço), todos sobre o mesmo Qwen3.5-9B. NapMem e AgeMem podem dar no máximo quatro passos com ferramentas e cada busca devolve até 5 itens; os sistemas não agênticos podem trazer até 20 por busca.

Nas perguntas abertas, o juiz é o Claude Opus 4.6. Eles conferiram a confiabilidade com 100 respostas anotadas por três pessoas: ele concorda com a maioria humana em 99% dos casos (precisão 1,0, revocação 0,98, κ de Cohen 0,98). A única divergência foi um «0 vezes» que o juiz deu como errado quando a resposta esperada era que aquilo nunca foi mencionado. Todos os resultados são a média de três sementes.

Os resultadoslink

A tabela 1 do paper (L-J é a nota do juiz; a média junta a nota do juiz no LoCoMo e no LongMemEval com a precisão no PersonaMem-v2):

SistemaLoCoMo F1LoCoMo L-JLongMemEval F1LongMemEval L-JPersonaMem-v2Média
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 (sem treino)35,3951,6948,8670,0041,3854,36
NapMem-397B (sem treino)38,3154,4253,8578,3346,1059,85
NapMem-9B com RL41,2859,9257,4180,3347,9762,74
Barras com a média dos três testes: NapMem 62,74, Mem0 59,25, Zep 53,96, MemOS 49,24 e MemoryOS 34,59.
A média dos três testes.

O NapMem treinado tem a melhor média, 62,74, contra 59,25 do melhor rival, o Mem0. No LongMemEval, o teste que ele não viu no treino, chega a 80,33, o melhor de todos; no PersonaMem-v2, a 47,97, também na frente.

No LoCoMo ele não vence em tudo, e vale dizer: tem o melhor F1 (41,28 contra 41,19), mas na nota do juiz o Mem0 fica um ponto à frente (60,86 contra 59,92). Ou seja, na memória de fatos de conversas longas ele está no mesmo nível do melhor; onde ele se destaca é na personalização e no que não tinha visto no treino.

9B treinado contra 397Blink

O mais chamativo da tabela são as duas linhas do meio. Eles testaram a mesma pirâmide e as mesmas ferramentas com modelos muito maiores, sem treino: Qwen3.5-122B e Qwen3.5-397B. O maior tira 59,85 de média; o pequeno de 9B, treinado, 62,74. Aprender a usar a memória vale mais do que multiplicar o tamanho por quarenta.

Círculos proporcionais ao número de parâmetros: o modelo de 9B treinado tira 62,74 contra 54,36 do de 122B e 59,85 do de 397B sem treino.
Um modelo 44 vezes menor, mas treinado para buscar.

Quando a memória não é necessárialink

E se a pergunta não precisar de memória? Para conferir que o treino não o transforma em um agente que consulta a memória para tudo, eles deram a ele três tarefas sem relação com o usuário (ciência com GPQA-Diamond, chamadas de funções com BFCL-v3 e busca visual com V*Bench), com uma pirâmide qualquer e todas as ferramentas de memória ativas:

TesteMétricaModelo baseNapMem-9B sem RLNapMem-9B com RL
GPQA-DiamondPrecisão53,0355,7457,58
GPQA-DiamondChamadas à memória–34,51%6,90%
BFCL-v3Tarefa / ferramenta / execução95,00 / 97,50 / 93,5093,50 / 97,50 / 94,0095,00 / 97,50 / 94,50
BFCL-v3Chamadas à memória–0%0%
V*BenchResposta84,8289,5391,10
V*BenchChamadas à memória–0%0%

Sem treino, o modelo olhava a memória em 34,51% das perguntas de ciência, sem motivo; treinado, só em 6,90%. Nas outras duas tarefas, nunca. E ele não perde desempenho: até melhora um pouco em ciência e no teste visual. O reforço calibra quando usar a memória, não apenas faz usar mais.

Nas perguntas de ciência, as consultas desnecessárias à memória caem de 34,51% para 6,90%; em chamadas de funções e busca visual ficam em 0%.
Treinado, ele quase nunca olha a sua memória sem necessidade.

O custo: espaço e tempolink

A memória de um usuário não para de crescer, então ocupar pouco importa. Somando os três benchmarks, o NapMem ocupa 4,83 GiB, menos que quase todos, apesar de guardar quatro níveis:

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)

Só o AgeMem ocupa menos, com sua memória plana e leve, mas rende muito pior (40,18 de média). O tamanho sozinho não diz tudo.

Armazenamento total em GiB: NapMem 4,83, Mem0 10,44, Zep 14,10 e MemOS 23,10; o AgeMem ocupa 2,99, mas rende muito pior.
Quatro níveis e, mesmo assim, menos da metade do Mem0.

E o tempo de resposta. Em cem perguntas do PersonaMem-v2, a latência cresce quase em linha reta com os tokens que o modelo gera: quanto mais ele escreve, mais demora. Os sistemas passivos recebem muito texto e raciocinam sobre tudo; o NapMem busca o que precisa e para assim que tem provas, então escreve menos e responde antes, mesmo usando ferramentas.

Gráfico de dispersão de latência contra tokens gerados: quase uma linha reta, com o NapMem agrupado embaixo à esquerda e os sistemas passivos com pontos longe, em cima à direita.
Escreve menos, responde antes. Redesenhado da figura 3.

Qual peça importalink

Para ver qual parte dá a vantagem, eles tiraram peças uma a uma (nota do juiz no LoCoMo e no LongMemEval, precisão no PersonaMem-v2):

VarianteLoCoMoLongMemEvalPersonaMem-v2Média
NapMem completo59,9280,3347,9762,74
Sem aprendizado por reforço52,0972,3320,7548,39
Sem navegação (recuperação passiva)48,3768,0045,8854,08
Só ferramentas de registros39,7760,0035,0244,93
Sem níveis de cima (sem trilhas nem perfil)49,1375,0038,2054,11
Barras da ablação: completo 62,74, sem navegação 54,08, sem níveis de cima 54,11 e só registros 44,93.
Tirar qualquer peça custa entre 8 e 18 pontos.

As três peças se somam. Navegar é melhor do que receber, mesmo com a mesma memória disponível. Os resumos de cima completam o detalhe de baixo. E usar bem a memória se aprende: sem o reforço, com a mesma pirâmide e as mesmas ferramentas, a média cai para 48,39, e no PersonaMem-v2 despenca de 47,97 para 20,75. Não basta explicar no prompt.

Como ele navegalink

Eles olharam qual é a primeira ferramenta que cada modelo usa. Os de 9B quase sempre começam pelos registros (92,16% sem treino, 88,84% treinado). Já os grandes começam lendo arquivos em quase metade dos casos (44,38% o de 122B e 46,60% o de 397B). Uma possível explicação dos autores: os modelos grandes digerem melhor um resumo longo, e os pequenos preferem provas curtas e concretas.

Mapa de calor da primeira ferramenta: os modelos de 9B começam pelos registros em cerca de 90% das vezes; os de 122B e 397B leem arquivos em quase metade dos casos.
A primeira ferramenta de cada modelo. Redesenhado da figura 4.

E o reforço muda o jeito de buscar. Sem treino, o modelo de 9B fazia 3,97 chamadas por pergunta; treinado, 2,15, e mesmo assim acerta mais: de cada cem resultados que as ferramentas devolvem, 34,92 são provas úteis, contra 20,66 antes. Ele não fica preso a um só nível: 79,63% das perguntas continuam usando vários (80,39% antes do treino). Ele aprendeu a parar.

Um acerto e um errolink

O acerto. Pergunta: «Que estado o Nate visitou?». search_conversation("Nate visit state travel") não traz nada útil; search_records(...) devolve registros irrelevantes ou vagos. Então o agente lê a trilha Nate-Identity-Interests.md e ali está: o Nate viajou para a praia de Tampa em 11 de novembro de 2022. Resposta: Flórida. Subir para um nível mais abstrato resgatou o que a busca direta não encontrava.

Que estado o Nate visitou? A busca nas conversas e nos registros falha; a trilha temática diz que ele viajou para a praia de Tampa e o agente responde Flórida.
Quando a busca falha, o resumo encontra.

O erro. Alguém pede ideias tranquilas para o fim de semana. O agente encontra um registro: o usuário pensou em colocar salsa em uma festa beneficente porque no ano anterior tinha dado certo. Encontra outro: ele se enche de energia em eventos lotados, mas depois precisa ficar sozinho. E escolhe a opção que dá como certo que ele adora sair para dançar salsa nos fins de semana. Ele transformou um evento isolado em uma preferência estável: as lembranças eram relevantes, mas não bastavam para essa conclusão. Os autores apontam isso como trabalho futuro: calibrar quanto cada lembrança realmente prova.

Um registro do tipo evento sobre salsa em uma festa beneficente vira, por engano, a preferência «adora dançar salsa nos fins de semana».
Evento ≠ preferência.

Limitaçõeslink

Os próprios autores apontam três:

  • Os benchmarks não capturam todas as formas reais de personalização nem de conversa aberta.
  • Privacidade e esquecimento, dois requisitos-chave em qualquer sistema que lembra coisas sobre pessoas, não estão totalmente resolvidos.
  • O tamanho do modelo: ainda falta estudar a fundo como a estratégia de acesso à memória muda com a escala.

Uma curiosidade: no apêndice de implementação escapa outro nome, «PyraNav», provavelmente o de uma versão anterior do método.

Resumindolink

O NapMem guarda a memória do usuário em uma pirâmide de quatro níveis (conversas, registros, trilhas temáticas e perfil) e treina o agente com aprendizado por reforço para se mover por ela com cinco ferramentas, em vez de receber o que outro escolhe. Assim, um modelo de 9B supera um de 397B sem treino, busca menos, acerta mais e quase nunca consulta a memória sem necessidade.

Em uma frase

A memória de um agente funciona melhor como um lugar que ele percorre do que como um pedaço de contexto que entregam a ele.

O que você gostaria que o seu assistente lembrasse de você?

Fonteslink

Continuar lendo

Últimos posts -->

Você viu esses projetos?

Gymnasia

Gymnasia Gymnasia
Expo
React Native
TypeScript
OpenAI
Anthropic

App de fitness com dois agentes que são executados integralmente no dispositivo, sem backend, de forma que os dados do usuário nunca saem do celular. Um coach conversacional BYOK com tools locais e system prompt remoto com fallback offline, e um estimador de refeições que tira os macronutrientes de uma foto do prato, com leitura de códigos de barras contra o OpenFoodFacts.

LangGraph Deep Researcher

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

Sistema multiagente de pesquisa construído com LangGraph. Um supervisor decompõe sua pergunta em tópicos e lança subagentes de busca em paralelo; cada um comprime seus achados antes de repassá-los a um agente redator que escreve o relatório final em markdown com suas fontes. Streaming ao vivo por WebSockets, modelo configurável por papel e chaves de API próprias que nunca são armazenadas no servidor.

Tau

Tau Tau
Python
LangChain

Sistema multiagente de tutoria para estudantes do ensino médio, com um agente por disciplina e material de curso elaborado e validado por uma equipe de professores. Chegou a ser usado com alunos reais em um colégio privado na Espanha e em uma escola de ensino médio na Colômbia.

Ver todos os projetos -->
>_ Disponível para projetos

Tem um projeto com IA?

Vamos conversar.

maximofn@gmail.com

Especialista em Machine Learning e Inteligência Artificial. Desenvolvo soluções com IA generativa, agentes inteligentes e modelos personalizados.

Quer assistir alguma palestra?

Últimas palestras -->

Quer melhorar com essas dicas?

Últimos tips -->

Use isso localmente

Os espaços do Hugging Face nos permitem executar modelos com demos muito simples, mas e se a demo quebrar? Ou se o usuário a deletar? Por isso, criei contêineres docker com alguns espaços interessantes, para poder usá-los localmente, aconteça o que acontecer. Na verdade, se você clicar em qualquer botão de visualização de projeto, ele pode levá-lo a um espaço que não funciona.

Flow edit

Flow edit Flow edit

Edite imagens com este modelo de Flow. Baseado em SD3 ou FLUX, você pode editar qualquer imagem e gerar novas

FLUX.1-RealismLora

FLUX.1-RealismLora FLUX.1-RealismLora
Ver todos os contêineres -->
>_ Disponível para projetos

Tem um projeto com IA?

Vamos conversar.

maximofn@gmail.com

Especialista em Machine Learning e Inteligência Artificial. Desenvolvo soluções com IA generativa, agentes inteligentes e modelos personalizados.

Você quer treinar seu modelo com esses datasets?

short-jokes-dataset

HuggingFace

Dataset com piadas em inglês

Uso: Fine-tuning de modelos de geração de texto humorístico

231K linhas 2 colunas 45 MB
Ver no HuggingFace →

opus100

HuggingFace

Dataset com traduções de inglês para espanhol

Uso: Treinamento de modelos de tradução inglês-espanhol

1M linhas 2 colunas 210 MB
Ver no HuggingFace →

netflix_titles

HuggingFace

Dataset com filmes e séries da Netflix

Uso: Análise de catálogo Netflix e sistemas de recomendação

8.8K linhas 12 colunas 3.5 MB
Ver no HuggingFace →
Ver mais datasets -->