Ajout d’un intergiciel

La page précédente a montré comment le package de compétences regroupe l'expertise de domaine réutilisable — avec des instructions, des documents de référence et des scripts — dans des unités autonomes que tout agent peut charger à la demande. Toutefois, au fur et à mesure que vous déployez des agents en production, une nouvelle catégorie de problèmes apparaît : les problèmes qui coupent toutes les interactions indépendamment de ce que fait l’agent.

Vous devez consigner chaque demande et réponse. Vous avez besoin de garde-fous qui bloquent le contenu dangereux avant que le modèle ne le voit. Vous devez appliquer des limites de débit, intercepter les exceptions correctement et injecter des données de télémétrie sans toucher la logique principale de l’agent. Copier-coller ces préoccupations dans chaque agent (ou chaque outil, ou chaque compétence) n’est pas évolutif et engendre des problèmes de maintenance.

Middleware résout cela. Middleware vous permet d’encapsuler le pipeline d’exécution de l’agent avec des comportements réutilisables qui interceptent, inspectent et modifient les requêtes et les réponses à des points bien définis. Considérez l’intergiciel comme une série de couches concentriques autour de l’agent : chaque couche peut agir sur l’entrée avant qu’elle atteigne l’agent et sur la sortie avant qu’elle atteigne l’appelant.

Cas d’utilisation :

Ajoutez un intergiciel à votre agent quand :

  • Vous avez besoin de garde-fous pour bloquer le contenu dangereux, hors sujet ou en violation de stratégie avant ou après le traitement du modèle.
  • Vous souhaitez une journalisation centralisée ou une télémétrie pour toutes les interactions de l’agent sans modifier chaque agent individuellement.
  • Vous devez modifier des demandes ou des réponses ( enrichir des invites, transformer des sorties ou remplacer entièrement les résultats) sans modifier la logique de l’agent.
  • Vous souhaitez appliquer des stratégies telles que la limitation de débit, le filtrage de contenu ou les vérifications d’authentification qui s’appliquent à chaque exécution.
  • Vous devez gérer les exceptions de manière cohérente : réessayez en cas d'échecs temporaires, retournez des réponses de secours adaptées, ou journalisez les erreurs pour les diagnostics.
  • Vous souhaitez partager l’état dans le pipeline, par exemple, suivre le minutage des demandes ou accumuler des métriques dont plusieurs composants middleware ont besoin.

Conseil / Astuce

Agent Framework inclut l’instrumentation intégrée pour le suivi et les métriques. Consultez observabilité pour plus d’informations.

Fonctionnement du pipeline d’intergiciel

Lorsque vous appelez la méthode d’exécution de votre agent, la demande ne passe pas directement au modèle. Au lieu de cela, il transite par un pipeline de couches d’intergiciels, chacun pouvant inspecter ou modifier la requête, déléguer à la couche suivante, puis inspecter ou modifier la réponse en arrière.

┌─────────────────────────────────────────────────────────┐
│  Caller: agent.run("What's the weather?")               │
└──────────────┬──────────────────────────────────────────┘
               ▼
┌─────────────────────────────────────────────────────────┐
│  Middleware 1 (Logging)                                  │
│  • Logs the incoming request                            │
│  • Calls next middleware                                │
│  • Logs the outgoing response                           │
└──────────────┬──────────────────────────────────────────┘
               ▼
┌─────────────────────────────────────────────────────────┐
│  Middleware 2 (Guardrails)                               │
│  • Checks input against content policy                  │
│  • If blocked → returns early with rejection message    │
│  • If allowed → calls next middleware                   │
│  • Checks output against content policy                 │
└──────────────┬──────────────────────────────────────────┘
               ▼
┌─────────────────────────────────────────────────────────┐
│  Agent core (model invocation, tool calls, etc.)        │
└─────────────────────────────────────────────────────────┘

Points clés :

  1. Chaque intergiciel détermine s’il faut continuer. Un intergiciel peut appeler la couche suivante de la chaîne pour continuer normalement, ou il peut court-circuiter le pipeline en retournant directement une réponse , par exemple lorsqu’un garde-fou bloque une requête.
  2. Middleware voit les deux directions. Un intergiciel exécute du code avant de déléguer (pour inspecter ou modifier l’entrée) et après le retour de la réponse (pour inspecter ou modifier la sortie). Il s’agit du modèle « oignon » classique.
  3. Chaînage de plusieurs intergiciels. Lorsque vous inscrivez plusieurs composants de middleware, ils imbriquent : le premier intergiciel inscrit est la couche la plus externe et le dernier inscrit est la couche la plus proche de l’agent.

Conseil / Astuce

Pour obtenir une vue détaillée de la façon dont l’intergiciel s’adapte au pipeline d’exécution complet de l’agent, y compris les fournisseurs de contexte et les couches clientes de conversation, consultez l’architecture du pipeline d’agent.

Ce que le middleware peut faire

Agent Framework prend en charge l’intergiciel à trois couches du pipeline ( exécution de l’agent, appel de fonction et client de conversation), ce qui vous donne un contrôle précis sur l’emplacement où vous interceptez l’exécution. Les modèles courants sont les suivants :

Modèle Exemple Référence
Garde-fous et résiliation Bloquer le contenu dangereux, limiter la longueur de la conversation Arrêt et garde-fous
Gestion des exceptions En cas d'échecs temporaires, réessayez et renvoyez des réponses de secours Gestion des exceptions
Remplacements de résultats Réactez les données sensibles, enrichissez ou remplacez la sortie de l’agent Remplacements de résultats
État partagé Passer des ID de requête ou des données de timing entre middlewares État partagé
Contexte d’exécution Varier le comportement en fonction de la session, de l’utilisateur ou de la configuration par exécution Contexte d’exécution
Scoping Appliquer un intergiciel à toutes les exécutions ou simplement à une seule exécution Agent contre champ d'exécution

Pour obtenir une procédure pas à pas complète de définition et d’inscription d’intergiciels, consultez Définition du middleware. Pour obtenir la vue d’ensemble de l’architecture complète, consultez la vue d’ensemble du middleware.

Considérations

Point à considérer Détails
Séparation des responsabilités L’intergiciel maintient la logique transversale en dehors de votre code d’agent, de vos outils et de vos compétences. Chaque composant middleware a une seule responsabilité ( journalisation, garde-fous, gestion des erreurs) que vous pouvez ajouter, supprimer ou réorganiser indépendamment.
Dépendance à l'ordre Middleware forme une chaîne. L’ordre dans lequel vous inscrivez des intergiciels est important : un intergiciel de journalisation qui s’exécute en premier verra l’entrée brute, tandis qu’une entrée qui s’exécute en dernier verra l’entrée déjà modifiée par l’intergiciel antérieur. Planifiez délibérément votre commande de pipeline.
Complexité du débogage Lorsque l’intergiciel modifie les entrées ou sorties, le débogage nécessite la compréhension du pipeline complet. Une réponse peut sembler incorrecte non pas en raison de l’agent, mais parce qu’un intergiciel l’a transformé. Un bon middleware de journalisation (placé au début de la chaîne) permet de diagnostiquer ces cas.
Surcharge des performances Chaque couche d’intergiciels ajoute le temps de traitement à chaque requête. Pour les opérations légères telles que la journalisation, cela est négligeable. Pour les opérations coûteuses telles que l’appel d’une API de modération de contenu externe, la latence s’ajoute, en particulier lorsque plusieurs intergiciels de ce type sont chaînés.

Étapes suivantes

Maintenant que votre agent dispose d’outils, de compétences et d’intergiciels, l’étape suivante est les fournisseurs de contexte : composants qui injectent de la mémoire, des profils utilisateur et des connaissances dynamiques dans la fenêtre de contexte de l’agent avant chaque exécution.

Aller plus loin :