Aller au contenu
Simon Place
FR EN
Réserver un appel Meet

Module 2 sur 10, leçon 1 sur 5

Anatomie : les composants et la mémoire

Nommer les modules d’un agent et choisir les types de mémoire dont il a réellement besoin.

Un agent se décrit comme un cycle de modules. Chacun dépend du précédent : une erreur en entrée se propage à toutes les décisions suivantes.

  1. Perception : recevoir et nettoyer les entrées (requête, API, journaux, capteurs).
  2. Raisonnement : évaluer les options.
  3. Planification : découper l’objectif en étapes et en dépendances.
  4. Action : exécuter, souvent par un appel d’outil.
  5. Communication : rendre compte à un humain ou à un autre agent.
  6. Apprentissage : tirer parti du résultat pour la suite.

Un point mérite d’être nuancé. Dans la plupart des agents LLM actuels, ces modules ne sont pas des composants séparés : raisonnement et planification se passent dans le même appel de modèle. Le découpage sert à penser le système, pas forcément à le coder.

Quatre mémoires

« Mémoire » recouvre des besoins très différents.

Oublier est une fonction

Une mémoire qui ne fait que grossir finit par polluer les décisions. Il faut décider ce qui expire, ce qui est résumé et ce qui est corrigé. Sur des données personnelles, c’est aussi une obligation légale.

Ajoutez une mémoire pour résoudre un problème observé, pas parce que le schéma en compte quatre.

Exemple : Faire tenir des souvenirs dans un budget

La fenêtre de contexte est un budget. Avant chaque appel, l’agent garde les souvenirs les plus utiles qui tiennent, pas tous.

function pickMemories(memories, budget) {
  const sorted = [...memories].sort((a, b) => b.score - a.score);
  const kept = [];
  let used = 0;
  for (const memory of sorted) {
    if (used + memory.tokens > budget) continue;
    kept.push(memory.id);
    used += memory.tokens;
  }
  return kept;
}

const memories = [
  { id: 'refund-policy', score: 0.9, tokens: 300 },
  { id: 'full-transcript', score: 0.8, tokens: 900 },
  { id: 'last-order', score: 0.6, tokens: 100 },
];

pickMemories(memories, 500);

['refund-policy', 'last-order']

La transcription a un bon score mais ne tient pas, alors un souvenir plus petit prend sa place. C’est pour cela qu’une note condensée vaut mieux qu’une conversation sauvegardée.

Essayez dans l’éditeur

// Rough estimate: about 4 characters per token.const countTokens = (message) => Math.ceil(JSON.stringify(message.content).length / 4);function trimContext(messages, maxTokens) {  // TODO  return messages;}module.exports = { trimContext, countTokens };
Donner une compétence à l’agentRéduire le contexte
Ouvrir dans l’éditeur

Mentions légales et confidentialité