Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisez l'échantillonnage avec votre AgentCore passerelle
L'échantillonnage est une fonctionnalité MCP qui permet à un serveur MCP de demander une complétion LLM au client lors d'un appel à l'outil. Cela permet aux serveurs de tirer parti des fonctionnalités d'IA sans avoir besoin d'accéder directement à un modèle de langage : le client gère l'appel du modèle et renvoie le résultat. AgentCore Gateway transmet les demandes d'échantillonnage provenant de cibles de serveurs MCP à vos clients, en les remplaçant par un id identifiant généré par la passerelle.
Conditions préalables
Pour utiliser l'échantillonnage avec votre passerelle :
-
Sessions activées (version 2025-11-25 et antérieures) — L'échantillonnage nécessite la prise en charge des sessions. Consultez la section Utiliser des sessions MCP avec votre passerelle. Pour les versions
2026-07-28et les versions ultérieures, vous n'avez pas besoinsessionConfigurationd'ajouter à votre passerelle, car ces versions sont sans état. -
Streaming de réponses activé (version 2025-11-25 et antérieures) : les demandes d'échantillonnage sont envoyées sous forme de segments SSE lors d'une connexion ouverte.
streamingConfiguration.enableResponseStreamingRéglez-letruesur celui de votre passerelleprotocolConfiguration.mcp. Pour les versions2026-07-28et les versions ultérieures, il n'est pas nécessaire d'activer le streaming des réponses. Ces versions fournissent un échantillonnage via le modèle de requêtes multi-aller-retour (MRTR) au lieu d'une demande initiée par le serveur sur le flux de réponse. Pour plus d'informations, consultez la section Demandes aller-retour multiplesdans la documentation du Model Context Protocol. -
Type de cible du serveur MCP : les demandes d'échantillonnage proviennent des cibles du serveur MCP.
-
Le client déclare sa capacité d'échantillonnage — Le client doit déclarer qu'il prend en charge l'échantillonnage pour que la passerelle puisse transmettre les demandes d'échantillonnage. Pour la version
2025-11-25et les versions antérieures, le client déclare cette prise en charge dans lainitializedemande. Pour les versions2026-07-28et les versions ultérieures, le client le déclare pour chaque requête dans le_metachamp (io.modelcontextprotocol/clientCapabilities).
Comment fonctionne l'échantillonnage
Lorsqu'une cible de serveur MCP a besoin d'être complétée par un LLM pendant l'exécution de l'outil, elle envoie une sampling/createMessage requête. La passerelle transmet cette demande au client sous la forme d'un événement SSE, en remplacement de la demandeid. Le client invoque son modèle de langage et renvoie le résultat à la passerelle, qui le transmet à la cible.
Note
Le flux décrit ici s'applique à la version 2025-11-25 et aux versions antérieures, où le serveur envoie sampling/createMessage une requête initiée par le serveur sur le flux SSE ouvert. Pour les versions 2026-07-28 et les versions ultérieures, l'échantillonnage utilise plutôt le modèle MRTR (multi-demandes aller-retour). Le serveur renvoie un résultat provisoire avec resultType défini surinput_required. Le client fournit ensuite l'achèvement de la demande initiale lors d'une nouvelle tentative. Pour plus d'informations, consultez la section Demandes aller-retour multiples
La demande d'échantillonnage comprend :
-
messages— Les messages de conversation à envoyer au modèle. -
modelPreferences— Conseils facultatifs sur les fonctionnalités souhaitées du modèle (intelligence, vitesse, coût). -
systemPrompt— Invite système optionnelle pour le modèle. -
maxTokens— Nombre maximum de jetons à générer.
Le client répond par :
-
model— Le modèle qui a été utilisé. -
role— Toujoursassistant. -
content— Le contenu généré (texte ou image).
Note
Le client a le contrôle total du modèle à utiliser et de la manière de traiter la demande. Les serveurs modelPreferences sont des conseils, pas des exigences. Le client peut également modifier ou rejeter la demande en fonction de ses propres politiques.
Flux d'échantillonnage
-
Le client envoie une
tools/calldemande avec l'Mcp-Session-Iden-tête. -
Gateway transmet l'appel d'outil à la cible du serveur MCP.
-
La cible ouvre un flux SSE et envoie une
sampling/createMessagedemande. -
Gateway transmet la demande d'échantillonnage au client sous la forme d'un événement SSE, en remplacement de la demande
id. -
Le client invoque son modèle de langage avec les messages fournis.
-
Le client envoie une nouvelle demande avec le résultat de l'échantillonnage en utilisant la même requête
Mcp-Session-Idet celleidde la passerelle. -
Gateway transmet le résultat à la cible du serveur MCP.
-
La cible poursuit le traitement et renvoie le résultat final de l'outil.
-
Gateway transmet le résultat final au client et ferme le flux.
Conseils pour les développeurs de cibles de serveurs MCP
Important
Les cibles de serveur MCP qui envoient des demandes d'échantillonnage doivent encapsuler les appels d'échantillonnage dans des blocs trycatch et gérer le cas où le client ne prend pas en charge l'échantillonnage. Si le client de la passerelle n'a pas déclaré de capacité d'échantillonnage, la passerelle ne la déclare pas à la cible. Si la cible envoie quand même une demande d'échantillonnage, la passerelle renvoie une erreur -32601 (Méthode introuvable) à la cible.
Les serveurs doivent implémenter un chemin de secours (par exemple en utilisant un modèle intégré ou en sautant l' AI-assisted étape) lorsque l'échantillonnage n'est pas disponible.
Sécurisation de l'état de la demande (version 2026-07-28 et versions ultérieures)
Sur les versions 2026-07-28 et les versions ultérieures, l'échantillonnage utilise le modèle de requêtes multi-aller-retour (MRTR), qui crée une opacité requestState entre votre client et la cible de votre serveur MCP. La sécurisation de cette valeur est une responsabilité partagée : la passerelle l'autorise et la transmet sans la stocker, tandis que la cible de votre serveur MCP doit la valider et empêcher un utilisateur de rejouer l'état de la demande d'un autre utilisateur. Pour connaître le modèle de responsabilité partagée complet et les directives de protection que votre serveur MCP doit suivre, consultez la section Sécurisation de l'état de la demande pour l'élicitation et l'échantillonnage dans les considérations relatives à la cible du serveur MCP.
Gestion des erreurs
| Scénario | Erreur | Description |
|---|---|---|
|
Le client envoie une réponse d'échantillonnage lorsqu'aucune demande d'échantillonnage n'est en attente |
JSON-RPC |
Aucune demande d'échantillonnage correspondante n'a été trouvée pour cette session. |
|
Le client envoie une réponse d'échantillonnage avec une réponse |
JSON-RPC |
|
|
Le serveur MCP envoie une demande d'échantillonnage mais la passerelle n'a pas déclaré le support |
JSON-RPC |
Retourné à la cible du serveur MCP. Consultez la section Résolution des problèmes. |
Résolution des problèmes
Erreur : « Erreur lors de l'appel de l'outil 'sample_tool' : méthode introuvable : » sampling/createMessage
Cette erreur se produit lorsqu'une cible de serveur MCP envoie une demande d'échantillonnage mais que le client de la passerelle n'a pas déclaré de capacité d'échantillonnage. Pour la version 2025-11-25 et les versions antérieures, le client déclare cette fonctionnalité pendantinitialize. Pour les versions 2026-07-28 et les versions ultérieures, le client le déclare pour chaque demande dans le _meta champ. La passerelle renvoie une erreur -32601 (Méthode introuvable) à la cible. La cible peut renvoyer cette erreur au client sous la forme d'une erreur d'exécution de l'outil.
Pour résoudre le problème :
-
Si vous êtes le développeur du serveur MCP : ajoutez la gestion des erreurs lors de vos appels d'échantillonnage. Implémentez un chemin de repli lorsque l'échantillonnage n'est pas pris en charge :
Important
Vous devez inclure
related_request_id=ctx.request_context.request_iddans votrecreate_messageappel. Cela est nécessaire pour que la passerelle associe correctement la demande d'échantillonnage à l'appel d'outil d'origine. Sans cela, l'échantillonnage ne fonctionnera pas.try: result = await ctx.session.create_message( messages=[{"role": "user", "content": {"type": "text", "text": "Summarize this document"}}], max_tokens=500, related_request_id=ctx.request_context.request_id, ) except Exception as e: # Fallback when client doesn't support sampling logger.warning(f"Sampling not supported: {e}") result = fallback_summarization(document) -
Si vous êtes le développeur du client Gateway : pour la version
2025-11-25et les versions antérieures, assurez-vous que votre client déclare la capacité d'échantillonnage pendantinitialize. Pour la version2026-07-28et les versions ultérieures, déclarez-la pour chaque requête dans le_metachamp (io.modelcontextprotocol/clientCapabilities). L'exemple suivant montre lainitializedéclaration :{ "capabilities": { "sampling": {} } }
Exemples de code
Note
Le client LangGraph MCP (langchain-mcp-adapters) et le client Strands MCP ne prennent pas actuellement en charge l'échantillonnage. Utilisez l'approche MCP Client illustrée ci-dessous pour gérer les demandes d'échantillonnage provenant de votre passerelle.