Skip to content
Learning Lab · 6 min read

Construire des Agents IA : Architecture, Appels d’Outils et Gestion de la Mémoire

Apprenez à construire des agents IA prêts pour la production en maîtrisant les contrats d'appel d'outils, en structurant correctement les boucles d'agents et en séparant la mémoire en couches de session, de connaissance et d'exécution. Inclut des exemples de code Python fonctionnels.

AI Agent Architecture: Tool Calling and Memory Patterns

Vous avez créé un chatbot qui répond aux questions. Maintenant, vous avez besoin qu’il fasse quelque chose : récupérer des données, appeler une API, mettre à jour une base de données. La différence entre un chatbot et un agent réside dans une seule contrainte : les agents agissent en fonction de ce qu’ils apprennent.

La plupart des tentatives échouent car les développeurs traitent l’appel d’outils comme un ajout, et non comme le cœur du système. Ils appellent un LLM, attendent une réponse, puis intègrent les outils après coup. Les agents de production nécessitent une architecture différente, qui traite le LLM comme un moteur de décision, et non comme un générateur de texte.

Appel d’Outils : Le Contrat, Pas la Fonctionnalité

L’appel d’outils ne consiste pas à donner à un LLM l’accès à des fonctions. Il s’agit de définir un contrat que le LLM doit respecter.

Lorsque vous définissez un outil, vous ne donnez pas au modèle une boîte noire. Vous spécifiez :

  • Ce que fait l’outil (description)
  • Quels paramètres il requiert (schéma)
  • Quel format il renvoie (spécification de sortie)

La plupart des appels d’outils échouent car les descriptions sont vagues. « Récupérer les données utilisateur » vous fait perdre immédiatement : récupérer quelles données ? À quoi ressemble la signature de la fonction ? Que se passe-t-il si l’utilisateur n’existe pas ?

Voici à quoi ressemble une mauvaise définition d’outil :

{
  "name": "get_user",
  "description": "Get user information",
  "parameters": {
    "type": "object",
    "properties": {
      "user_id": {
        "type": "string"
      }
    }
  }
}

Le LLM ne sait pas ce qui se passe lorsque user_id est invalide. Il ne sait pas si user_id doit être un UUID ou un entier. Il ne sait pas quels champs contient la réponse.

Voici la version améliorée :

{
  "name": "get_user_profile",
  "description": "Retrieve a user's profile by ID. Returns basic account info including name, email, creation date, and account status. Returns null if user not found.",
  "parameters": {
    "type": "object",
    "properties": {
      "user_id": {
        "type": "string",
        "description": "UUID of the user. Format: 550e8400-e29b-41d4-a716-446655440000"
      }
    },
    "required": ["user_id"]
  },
  "returns": {
    "type": "object",
    "properties": {
      "id": {"type": "string"},
      "name": {"type": "string"},
      "email": {"type": "string"},
      "status": {"type": "string", "enum": ["active", "suspended", "deleted"]},
      "created_at": {"type": "string"}
    }
  }
}

Claude Sonnet 4 (sortie janvier 2025) a amélioré la cohérence de l’appel d’outils de 34 % par rapport aux versions précédentes lorsque les schémas sont précis. Les définitions vagues le confondent toujours – ce n’est pas une limitation du modèle, c’est un défaut de conception.

La Boucle : Rendre les Décisions Séquentielles

Une boucle d’agent est simple dans sa structure mais défaillante dans presque toutes les premières implémentations.

Le flux de base : LLM décide → l’outil s’exécute → le résultat revient → le LLM décide à nouveau → répéter jusqu’à la fin.

Voici un exemple Python fonctionnel utilisant Claude :

import anthropic
import json

client = anthropic.Anthropic()
tools = [
    {
        "name": "fetch_order",
        "description": "Get order details by order ID",
        "input_schema": {
            "type": "object",
            "properties": {
                "order_id": {
                    "type": "string",
                    "description": "Unique order identifier"
                }
            },
            "required": ["order_id"]
        }
    },
    {
        "name": "update_order_status",
        "description": "Update an order's status",
        "input_schema": {
            "type": "object",
            "properties": {
                "order_id": {"type": "string"},
                "status": {
                    "type": "string",
                    "enum": ["pending", "shipped", "delivered"]
                }
            },
            "required": ["order_id", "status"]
        }
    }
]

messages = [{"role": "user", "content": "Check order ABC123 and mark it as shipped"}]

while True:
    response = client.messages.create(
        model="claude-3-5-sonnet-20241022",
        max_tokens=1024,
        tools=tools,
        messages=messages
    )
    
    if response.stop_reason == "tool_use":
        # LLM wants to use a tool
        tool_calls = [block for block in response.content if block.type == "tool_use"]
        
        messages.append({"role": "assistant", "content": response.content})
        
        tool_results = []
        for tool_call in tool_calls:
            # Execute tool (stubbed here)
            if tool_call.name == "fetch_order":
                result = {"id": "ABC123", "status": "pending", "total": 99.99}
            elif tool_call.name == "update_order_status":
                result = {"success": True, "new_status": "shipped"}
            
            tool_results.append({
                "type": "tool_result",
                "tool_use_id": tool_call.id,
                "content": json.dumps(result)
            })
        
        messages.append({"role": "user", "content": tool_results})
    else:
        # LLM reached end_turn or max_tokens
        final_response = next(
            (block.text for block in response.content if hasattr(block, "text")),
            None
        )
        print(final_response)
        break

L’erreur critique que font la plupart des développeurs : ils traitent les résultats des outils comme du texte non structuré. Si un outil renvoie du JSON, analysez-le et rendez la structure explicite au LLM. Ne le forcez pas à analyser des chaînes de caractères désordonnées.

Mémoire : Ce dont les Agents Ont Vraiment Besoin de se Souvenir

La mémoire n’est pas l’historique de la conversation. C’est la première chose à désapprendre.

Un agent a besoin de trois types de mémoire :

  • Mémoire de session : Ce qui s’est passé dans cette conversation — objectifs de l’utilisateur, contexte des tours précédents. C’est à court terme et spécifique à la conversation.
  • Mémoire de connaissance : Faits sur l’utilisateur, le domaine ou l’état du système qui persistent d’une conversation à l’autre. C’est à long terme et partagé.
  • Mémoire d’exécution : Ce que l’agent a déjà essayé, ce qui a échoué, ce qui a réussi. Cela évite les boucles et les erreurs répétées.

La plupart des systèmes confondent les trois dans un historique de messages. Cela nuit aux performances.

La mémoire de session doit vivre dans le tableau des messages — mais résumée, pas brute. Après 20 tours, compressez le contexte précédent en un seul message système au lieu de garder les 20 tours en contexte.

La mémoire de connaissance doit être séparée — une base de données vectorielle (Pinecone, Weaviate) ou un magasin clé-valeur structuré. Lorsque vous avez besoin du contexte utilisateur, récupérez-le explicitement avec un appel d’outil, ne le bourrez pas dans l’invite initiale.

La mémoire d’exécution doit être un journal explicite. Avant que l’agent n’essaie un outil, vérifiez s’il a déjà tenté cet outil dans cette session. S’il a échoué la dernière fois, transmettez cet échec au LLM comme contexte.

Exemple de structure :

{
  "session_id": "conv_12345",
  "user_goal": "Update billing address and confirm new payment method",
  "session_context": "User has active subscription. Previously tried to update payment in December but process failed.",
  "execution_log": [
    {"tool": "fetch_user_profile", "status": "success", "timestamp": "2025-01-15T10:22:00Z"},
    {"tool": "validate_address", "status": "failed", "error": "Postal code invalid", "timestamp": "2025-01-15T10:22:15Z"}
  ],
  "knowledge_refs": ["user_payment_history", "subscription_terms"],
  "messages": [
    {"role": "user", "content": "Update my address..."},
    {"role": "assistant", "content": "I'll help with that..."}
  ]
}

Faites-le Aujourd’hui

Choisissez un outil que votre agent doit appeler. Rédigez le schéma avec une description de 3 phrases, listez chaque paramètre avec son format et ses contraintes, et définissez la forme exacte de la réponse. Testez-le manuellement — donnez le schéma à Claude ou GPT-4o et demandez-lui d’appeler l’outil. S’il l’appelle mal, votre schéma est incomplet.

Batikan
· 6 min read
Topics & Keywords
Learning Lab les type string user tool des outils une order
Share

Stay ahead of the AI curve

Weekly digest of the most impactful AI breakthroughs, tools, and strategies.

Related Articles

Cursor vs GitHub Copilot vs Claude Code : Lequel choisir pour la production ?
Learning Lab

Cursor vs GitHub Copilot vs Claude Code : Lequel choisir pour la production ?

Trois assistants de codage IA dominent les environnements de production. Ce n'est pas une liste de fonctionnalités. C'est une analyse de ce que chaque outil fait réellement, où il échoue, et lequel utiliser pour l'architecture, le code répétitif et le débogage.

· 14 min read
Analyser des feuilles de calcul avec Claude et GPT-4o
Learning Lab

Analyser des feuilles de calcul avec Claude et GPT-4o

Claude et GPT-4o peuvent analyser vos feuilles de calcul et CSV, mais seulement si vous structurez correctement les données et posez des questions précises. Apprenez à téléverser des fichiers, rédiger des invites d'analyse et éviter les pièges des hallucinations.

· 3 min read
Hallucinations des LLM : pourquoi elles se produisent et 5 façons d’y mettre fin
Learning Lab

Hallucinations des LLM : pourquoi elles se produisent et 5 façons d’y mettre fin

Pourquoi les modèles de langage inventent-ils des faits avec confiance ? Parce qu'ils prédisent des tokens, pas la vérité. Découvrez comment l'ancrage, le prompting par contrainte et les paramètres de température réduisent les taux d'hallucination de plus de 15 % à moins de 5 % dans les systèmes de production.

· 7 min read
Flux de travail IA pour freelances qui augmentent réellement les heures facturables
Learning Lab

Flux de travail IA pour freelances qui augmentent réellement les heures facturables

L'IA peut doubler votre production en freelance sans remplacer votre jugement. Découvrez quatre flux de travail de production qui compressent les tâches administratives et récupèrent plus de 10 heures facturables par mois.

· 8 min read
Arrêtez les hallucinations : comment le RAG ancre réellement les LLM
Learning Lab

Arrêtez les hallucinations : comment le RAG ancre réellement les LLM

Votre LLM vient de citer avec assurance un article de recherche qui n'existe pas. Cela se produit car les modèles génèrent du texte basé sur des modèles dans les données d'entraînement, et non en interrogeant vos informations réelles. La Génération Augmentée par Récupération (RAG) règle ce problème en donnant aux modèles accès à des données réelles avant qu'ils ne génèrent une réponse.

· 10 min read
Où vont vos prompts : Gestion des données dans ChatGPT, Claude et Gemini
Learning Lab

Où vont vos prompts : Gestion des données dans ChatGPT, Claude et Gemini

ChatGPT stocke vos données et les utilise pour l'entraînement par défaut. Claude n'entraîne pas sur les conversations web sauf si vous optez pour cela. Gemini lie vos chats à l'ensemble de votre compte Google. Voici ce que chaque modèle fait de vos prompts et comment protéger les informations sensibles.

· 6 min read

More from Prompt & Learn

Otter vs Fireflies vs tl;dv : Le Match des Transcriptions de Réunion
AI Tools Directory

Otter vs Fireflies vs tl;dv : Le Match des Transcriptions de Réunion

Trois outils promettent de transcrire vos réunions et d'en extraire les points d'action. Un seul s'intègre parfaitement à votre flux de travail. Voici la comparaison réelle : Otter vs Fireflies vs tl;dv — données de précision, détails des prix et avantages/inconvénients honnêtes pour chacun.

· 5 min read
Gamma vs Beautiful.ai vs Tome : Comparatif des générateurs de diapositives
AI Tools Directory

Gamma vs Beautiful.ai vs Tome : Comparatif des générateurs de diapositives

J'ai testé Gamma, Beautiful.ai et Tome sur des présentations de production. Gamma génère le plus rapidement mais a du mal avec la marque. Beautiful.ai offre une cohérence visuelle et une gestion des données. Tome offre flexibilité et collaboration. Voici ce qui fonctionne réellement en pratique — et quand chaque outil gagne.

· 15 min read
Les lancements sur l’App Store explosent en 2026, l’IA en est le catalyseur
AI News

Les lancements sur l’App Store explosent en 2026, l’IA en est le catalyseur

Appfigures rapporte une augmentation mesurable des lancements d'applications en 2026, grâce aux outils de développement IA qui réduisent les délais de plusieurs semaines à quelques jours. Un développeur solo avec Claude ou Mistral peut désormais livrer ce qui nécessitait une équipe d'ingénieurs complète en 2022.

· 4 min read
Julius AI vs ChatGPT vs Claude pour l’analyse de données
AI Tools Directory

Julius AI vs ChatGPT vs Claude pour l’analyse de données

Julius AI, ChatGPT Advanced Data Analysis et Claude Artifacts gèrent tous des tâches de données, mais la vitesse d'exécution, les prix et le flux de travail diffèrent considérablement. Voici comment choisir le bon pour votre cas d'utilisation.

· 6 min read
Perplexity vs Google AI vs Consensus : Lequel choisir pour la recherche académique ?
AI Tools Directory

Perplexity vs Google AI vs Consensus : Lequel choisir pour la recherche académique ?

Perplexity, Google AI et Consensus excellent chacun dans différentes tâches de recherche. Perplexity l'emporte sur les sujets récents avec une synthèse en temps réel. Consensus offre une précision de citation inégalée pour les travaux évalués par des pairs. Google Scholar fournit une profondeur historique. Cette analyse montre exactement quel outil utiliser pour votre prochain document – et pourquoi.

· 8 min read
Les outils de voyage de Google divisent par deux le temps de planification. Voici ce qui fonctionne vraiment
AI Tools Directory

Les outils de voyage de Google divisent par deux le temps de planification. Voici ce qui fonctionne vraiment

Google a lancé sept outils de voyage intégrés ce printemps. Le suivi des prix prédit les fenêtres de réservation optimales, la disponibilité des restaurants récupère des données en temps réel et les cartes hors ligne fonctionnent sans couverture cellulaire. Voici quelles fonctionnalités inspirent confiance et où fixer vos attentes.

· 5 min read

Stay ahead of the AI curve

Weekly digest of the most impactful AI breakthroughs, tools, and strategies. No noise, only signal.

Follow Prompt Builder Prompt Builder