<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marcos Filipe</title>
    <description>The latest articles on DEV Community by Marcos Filipe (@mffdeo).</description>
    <link>https://dev.to/mffdeo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3844879%2F21f3266c-a7b0-4748-b36c-5609f28ca749.jpeg</url>
      <title>DEV Community: Marcos Filipe</title>
      <link>https://dev.to/mffdeo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mffdeo"/>
    <language>en</language>
    <item>
      <title>Eu achava que Node.js era o “Django do JavaScript”… até entender isso</title>
      <dc:creator>Marcos Filipe</dc:creator>
      <pubDate>Fri, 03 Apr 2026 23:25:52 +0000</pubDate>
      <link>https://dev.to/mffdeo/eu-achava-que-nodejs-era-o-django-do-javascript-ate-entender-isso-4904</link>
      <guid>https://dev.to/mffdeo/eu-achava-que-nodejs-era-o-django-do-javascript-ate-entender-isso-4904</guid>
      <description>&lt;p&gt;Se você está começando no desenvolvimento web, deixa eu tentar adivinhar:&lt;/p&gt;

&lt;p&gt;Em algum momento você pensou algo como:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Se Django é o principal framework do Python… então Node.js deve ser tipo isso pro JavaScript, né?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Eu também pensei assim.&lt;/p&gt;

&lt;p&gt;E foi aí que começou a confusão.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤯 O momento em que tudo não fez sentido
&lt;/h2&gt;

&lt;p&gt;Eu comecei a pesquisar sobre backend e vi coisas como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Express&lt;/li&gt;
&lt;li&gt;NestJS&lt;/li&gt;
&lt;li&gt;Django&lt;/li&gt;
&lt;li&gt;Flask&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E aí veio a dúvida:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Por que Python tem &lt;em&gt;um nome forte&lt;/em&gt; (Django)… mas JavaScript tem vários?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Parecia que eu estava comparando coisas… que não eram comparáveis.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 A virada de chave
&lt;/h2&gt;

&lt;p&gt;Depois de um tempo, caiu a ficha:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Eu estava comparando um ambiente com um framework.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E isso muda tudo.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧱 A base vs a construção
&lt;/h2&gt;

&lt;p&gt;Vamos simplificar ao máximo:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 Node.js
&lt;/h3&gt;

&lt;p&gt;Não é um framework.&lt;/p&gt;

&lt;p&gt;É um &lt;strong&gt;ambiente que permite rodar JavaScript fora do navegador&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;👉 Ele é o &lt;em&gt;terreno&lt;/em&gt; onde você vai construir.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔹 Django
&lt;/h3&gt;

&lt;p&gt;É um &lt;strong&gt;framework completo para aplicações web em Python&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;👉 Ele já é praticamente a &lt;em&gt;casa pronta&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚖️ A comparação correta (agora sim faz sentido)
&lt;/h2&gt;

&lt;p&gt;Quando você ajusta a lente, fica claro:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Python + Django ≈ Node.js + (Express | NestJS | AdonisJS)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ou seja:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js sozinho não compete com Django&lt;/li&gt;
&lt;li&gt;Você precisa de um framework junto&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏗️ Duas filosofias totalmente diferentes
&lt;/h2&gt;

&lt;p&gt;Aqui é onde a escolha realmente importa 👇&lt;/p&gt;




&lt;h3&gt;
  
  
  🟦 Django — “já vem com tudo”
&lt;/h3&gt;

&lt;p&gt;Django segue a ideia de:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Não perca tempo decidindo, só construa.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Você já ganha:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sistema de autenticação&lt;/li&gt;
&lt;li&gt;ORM&lt;/li&gt;
&lt;li&gt;Painel admin&lt;/li&gt;
&lt;li&gt;Segurança pronta&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Sensação: &lt;em&gt;produtividade imediata&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🟨 Node.js — “monte do seu jeito”
&lt;/h3&gt;

&lt;p&gt;No mundo Node:&lt;/p&gt;

&lt;p&gt;Você escolhe tudo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Framework (Express, NestJS…)&lt;/li&gt;
&lt;li&gt;Banco (Mongo, PostgreSQL…)&lt;/li&gt;
&lt;li&gt;ORM (Prisma, Sequelize…)&lt;/li&gt;
&lt;li&gt;Auth (JWT, OAuth…)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Sensação: &lt;em&gt;liberdade total (e um pouco de caos no começo)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 O erro mais comum de iniciantes
&lt;/h2&gt;

&lt;p&gt;Achar que:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Node.js é um framework igual ao Django”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Quando na verdade:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Node.js é só o começo da stack&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🚀 Então… qual é melhor?
&lt;/h2&gt;

&lt;p&gt;Resposta honesta:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Depende do tipo de dor que você quer ter 😂&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Vá de Django se você quer:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Começar rápido&lt;/li&gt;
&lt;li&gt;Menos decisões técnicas&lt;/li&gt;
&lt;li&gt;Estrutura pronta&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Vá de Node.js se você quer:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Flexibilidade&lt;/li&gt;
&lt;li&gt;Trabalhar com JavaScript em tudo&lt;/li&gt;
&lt;li&gt;Entender melhor como as peças se conectam&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔥 Conclusão (a versão que eu gostaria de ter ouvido antes)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Django é um pacote completo. Node.js é uma caixa de ferramentas.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Um te dá tudo pronto.&lt;br&gt;
O outro te dá liberdade pra montar.&lt;/p&gt;

&lt;p&gt;Nenhum é melhor universalmente — só são diferentes.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Agora me conta
&lt;/h2&gt;

&lt;p&gt;Você também já confundiu isso no começo?&lt;/p&gt;

&lt;p&gt;Ou ainda tá tentando decidir qual caminho seguir?&lt;/p&gt;

&lt;p&gt;Comenta aí — sempre tem alguém passando pela mesma dúvida que você 👇&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Construindo minha primeira CLI com Node.js (consumindo a API do GitHub)</title>
      <dc:creator>Marcos Filipe</dc:creator>
      <pubDate>Mon, 30 Mar 2026 17:57:19 +0000</pubDate>
      <link>https://dev.to/mffdeo/construindo-minha-primeira-cli-com-nodejs-consumindo-a-api-do-github-4m41</link>
      <guid>https://dev.to/mffdeo/construindo-minha-primeira-cli-com-nodejs-consumindo-a-api-do-github-4m41</guid>
      <description>&lt;p&gt;Recentemente, desenvolvi uma CLI simples em Node.js para visualizar a atividade recente de usuários do GitHub direto pelo terminal.&lt;/p&gt;

&lt;p&gt;O objetivo foi praticar fundamentos de backend na prática, sem depender de bibliotecas externas, focando em entender cada etapa do processo.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 O que a aplicação faz
&lt;/h2&gt;

&lt;p&gt;A ferramenta permite executar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;github-activity &amp;lt;username&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E retorna algo como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Pushed commits to user/repo
Opened a new issue &lt;span class="k"&gt;in &lt;/span&gt;user/repo
Starred user/repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Os dados são obtidos através da API pública do GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /users/:username/events
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚠️ Desafio encontrado: dados incompletos da API
&lt;/h2&gt;

&lt;p&gt;Inicialmente, a ideia era exibir a quantidade exata de commits em cada push:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Pushed 3 commits to user/repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Porém, durante os testes, observei que a API de eventos do GitHub &lt;strong&gt;nem sempre retorna os dados completos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Em vários &lt;code&gt;PushEvent&lt;/code&gt;, o payload vinha assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ref"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"refs/heads/main"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"head"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"commit_hash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"before"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"commit_hash"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sem os campos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"commits"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"size"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;number&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou seja:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Não há lista de commits&lt;/li&gt;
&lt;li&gt;Não há quantidade (&lt;code&gt;size&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Apenas o intervalo (&lt;code&gt;before&lt;/code&gt; → &lt;code&gt;head&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Análise técnica
&lt;/h2&gt;

&lt;p&gt;Isso mostra que a API de eventos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Funciona como um &lt;strong&gt;feed resumido de atividades&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Não garante consistência nos dados&lt;/li&gt;
&lt;li&gt;Pode omitir informações dependendo do contexto&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Uma alternativa mais precisa seria usar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /repos/:owner/:repo/compare/:before...:head
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Que retorna o número real de commits. Porém, isso exigiria:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;múltiplas requisições por evento&lt;/li&gt;
&lt;li&gt;controle de rate limit&lt;/li&gt;
&lt;li&gt;maior complexidade&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para este projeto, optei por manter a simplicidade.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Solução adotada
&lt;/h2&gt;

&lt;p&gt;Implementei um fallback:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Pushed commits to user/repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando a quantidade de commits não está disponível.&lt;/p&gt;

&lt;p&gt;Isso evita exibir dados incorretos e mantém a saída consistente.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Aprendizados principais
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔹 Entrada via CLI
&lt;/h3&gt;

&lt;p&gt;Uso de &lt;code&gt;process.argv&lt;/code&gt; para capturar argumentos do terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 Consumo de API
&lt;/h3&gt;

&lt;p&gt;Utilização do &lt;code&gt;fetch&lt;/code&gt; nativo do Node.js para requisições HTTP.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 Manipulação de JSON
&lt;/h3&gt;

&lt;p&gt;Filtragem e transformação de dados complexos em uma saída legível.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 Tratamento de erros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;usuário não encontrado&lt;/li&gt;
&lt;li&gt;falhas de requisição&lt;/li&gt;
&lt;li&gt;propriedades indefinidas&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Limitações de sistemas externos
&lt;/h3&gt;

&lt;p&gt;Nem sempre o problema está no código — às vezes está na fonte de dados.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Decisões de implementação
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sem bibliotecas externas&lt;/li&gt;
&lt;li&gt;Código simples e direto&lt;/li&gt;
&lt;li&gt;Foco em aprendizado ao invés de abstrações&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Próximos passos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Adicionar flags (&lt;code&gt;--limit&lt;/code&gt;, &lt;code&gt;--type&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Melhorar a formatação da saída&lt;/li&gt;
&lt;li&gt;Adicionar cores no terminal&lt;/li&gt;
&lt;li&gt;Publicar como pacote global (npm)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 Conclusão
&lt;/h2&gt;

&lt;p&gt;Esse projeto mostrou, na prática, que:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;APIs nem sempre entregam dados completos ou consistentes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E mais importante:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Um bom software não depende de dados perfeitos — ele se adapta a eles.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🔗 Repositório
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/mffdeo/github-activity-cli" rel="noopener noreferrer"&gt;https://github.com/mffdeo/github-activity-cli&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cli</category>
      <category>github</category>
      <category>node</category>
    </item>
    <item>
      <title>Memória Sob Demanda: Como o Engram Está Mudando a Forma como LLMs Pensam</title>
      <dc:creator>Marcos Filipe</dc:creator>
      <pubDate>Thu, 26 Mar 2026 15:31:29 +0000</pubDate>
      <link>https://dev.to/mffdeo/memoria-sob-demanda-como-o-engram-esta-mudando-a-forma-como-llms-pensam-19o7</link>
      <guid>https://dev.to/mffdeo/memoria-sob-demanda-como-o-engram-esta-mudando-a-forma-como-llms-pensam-19o7</guid>
      <description>&lt;p&gt;Você já parou para pensar que os Transformers, a arquitetura por trás de modelos como ChatGPT, Claude e DeepSeek, são ótimos em raciocínio, mas... péssimos em memória?&lt;/p&gt;

&lt;p&gt;É isso que um novo paper da Peking University e DeepSeek-AI propõe resolver. Tentei trazer aqui os principais insights, que acredito serem um grande passo para a próxima geração de modelos de linguagem.&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;O Problema: Transformers Não Sabem "Lembrar"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Um Transformer não tem um mecanismo nativo para recuperar conhecimento. Toda vez que ele precisa de uma informação como "Diana, Princesa de Gales", ele gasta várias camadas computacionais para reconstruir essa informação a partir do contexto.&lt;/p&gt;

&lt;p&gt;É como se, em vez de consultar uma enciclopédia, ele tentasse redescobrir a história inteira a cada pergunta.&lt;/p&gt;

&lt;p&gt;No paper, os autores mostram que, em um modelo tradicional, são necessárias cerca de 6 camadas para formar uma representação completa dessa entidade. Isso é ineficiente: o modelo está usando raciocínio profundo para fazer algo que poderia ser resolvido com uma simples consulta a uma tabela de memória.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;A Solução: Engram (Memória Condicional)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Engram introduz um novo tipo de "órgão" no modelo: um módulo de memória estática que funciona como um banco de dados de padrões linguísticos.&lt;/p&gt;

&lt;p&gt;Como funciona na prática:&lt;/p&gt;

&lt;p&gt;O modelo identifica um padrão local (ex: "Princesa de Gales")&lt;/p&gt;

&lt;p&gt;Ele usa esse padrão como chave para buscar um vetor de memória pré-armazenado (via hashing)&lt;/p&gt;

&lt;p&gt;Esse vetor é injetado diretamente nas camadas profundas do modelo&lt;/p&gt;

&lt;p&gt;O resultado? O modelo não precisa mais gastar camadas iniciais reconstruindo informação. Ele já começa com um "atalho" para o conhecimento.&lt;/p&gt;

&lt;p&gt;📊 &lt;strong&gt;O Resultado na Prática&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Os pesquisadores treinaram um modelo chamado Engram-27B e compararam com um modelo tradicional de mesmo tamanho e mesmo custo computacional (MoE-27B). Os resultados:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;Domínio&lt;/th&gt;
&lt;th&gt;Ganho&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MMLU&lt;/td&gt;
&lt;td&gt;Conhecimento geral&lt;/td&gt;
&lt;td&gt;+3,4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BBH&lt;/td&gt;
&lt;td&gt;Raciocínio complexo&lt;/td&gt;
&lt;td&gt;+5,0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HumanEval&lt;/td&gt;
&lt;td&gt;Geração de código&lt;/td&gt;
&lt;td&gt;+3,0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MATH&lt;/td&gt;
&lt;td&gt;Matemática&lt;/td&gt;
&lt;td&gt;+2,4%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;O mais interessante? O Engram melhorou até tarefas de raciocínio, não só de memorização.&lt;/p&gt;

&lt;p&gt;Isso acontece porque, ao liberar as primeiras camadas do trabalho de reconstrução, o modelo pode usá-las para "pensar" mais profundamente. Os autores chamam isso de "aumento da profundidade efetiva" da rede.&lt;/p&gt;

&lt;p&gt;🧠 &lt;strong&gt;Por Que Isso É uma "Nova Dimensão de Esparsidade"?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Até agora, a principal forma de escalar modelos sem aumentar custo computacional era o &lt;strong&gt;MoE (Mixture of Experts)&lt;/strong&gt;, que ativa apenas alguns "especialistas" por vez.&lt;/p&gt;

&lt;p&gt;O Engram introduz uma segunda dimensão:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Abordagem&lt;/th&gt;
&lt;th&gt;Função&lt;/th&gt;
&lt;th&gt;Como funciona&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MoE&lt;/td&gt;
&lt;td&gt;Processa lógica dinâmica&lt;/td&gt;
&lt;td&gt;Ativa especialistas (cálculo)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Engram&lt;/td&gt;
&lt;td&gt;Recupera conhecimento&lt;/td&gt;
&lt;td&gt;Ativa memórias (busca O(1))&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Juntos, formam uma dupla poderosa. E o melhor: o Engram é tão eficiente que pode armazenar 100 bilhões de parâmetros na memória RAM do computador sem prejudicar a velocidade — algo impossível com MoE puro.&lt;/p&gt;

&lt;p&gt;🔧 &lt;strong&gt;Detalhes Técnicos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se você quer entender melhor a arquitetura:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compressão do tokenizer: Redução de 23% no vocabulário via normalização (NFKC, lowercasing)&lt;/li&gt;
&lt;li&gt;Multi-head hashing: 8 cabeças de hash para cada ordem de N-gram (2 e 3)&lt;/li&gt;
&lt;li&gt;Gating contextual: O estado oculto atual decide quanto da memória recuperada deve ser integrada&lt;/li&gt;
&lt;li&gt;Posicionamento estratégico: Inserido nas camadas 2 e 15 para equilibrar intervenção precoce com riqueza contextual&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O código está disponível no GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/deepseek-ai/Engram" rel="noopener noreferrer"&gt;https://github.com/deepseek-ai/Engram&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧭 &lt;strong&gt;Conclusão&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Engram mostra que, assim como o cérebro humano, os modelos de IA podem se beneficiar de mecanismos especializados. Ter um sistema separado para memória de longo prazo e outro para raciocínio dinâmico não só torna os modelos mais eficientes, como libera capacidade computacional para o que realmente importa: pensar com profundidade.&lt;/p&gt;

&lt;p&gt;Essa pode ser uma das direções mais importantes para os LLMs do futuro: modelos que sabem quando pensar e quando lembrar.&lt;/p&gt;

&lt;p&gt;📚 &lt;strong&gt;Fonte e Créditos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Paper original: "Conditional Memory via Scalable Lookup: A New Axis of Sparsity for Large Language Models"&lt;br&gt;
&lt;em&gt;Autores&lt;/em&gt;: Xin Cheng, Wangding Zeng, Damai Dai, et al. (Peking University &amp;amp; DeepSeek-AI)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Usei ferramentas de IA para me auxiliar na consolidação e organização das ideias.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>deepseek</category>
      <category>machinelearning</category>
      <category>arquitetura</category>
    </item>
  </channel>
</rss>
