Utilisez l'échantillonnage avec votre AgentCore passerelle
L'échantillonnage est une fonctionnalité MCP qui permet à un serveur MCP de demander au client de terminer un LLM lors d'un appel d'outil. Cela permet aux serveurs de tirer parti des capacités de l'IA sans avoir besoin d'un accès direct à un modèle de langage : le client gère l'invocation du modèle et renvoie le résultat. AgentCore Gateway transmet les demandes d'échantillonnage des cibles du serveur MCP à vos clients, en remplaçant la demande par un identifiant id généré par la passerelle.
Conditions préalables
Pour utiliser l'échantillonnage avec votre passerelle :
-
Sessions activées : l'échantillonnage nécessite un support de session. Consultez la section Utiliser des sessions MCP avec votre passerelle.
-
Streaming de réponses activé — Les demandes d'échantillonnage sont envoyées sous forme de fragments SSE lors d'une connexion ouverte.
streamingConfiguration.enableResponseStreamingRéglez surtruecelui de votre passerelleprotocolConfiguration.mcp. -
Type de cible du serveur MCP : les demandes d'échantillonnage proviennent des cibles du serveur MCP.
-
Le client déclare la capacité d'échantillonnage — Le client doit déclarer son soutien à l'échantillonnage lors de la
initializedemande. La passerelle transmet uniquement les demandes d'échantillonnage aux clients qui ont déclaré cette fonctionnalité.
Comment fonctionne l'échantillonnage
Lorsqu'une cible de serveur MCP doit terminer un LLM pendant l'exécution de l'outil, elle envoie une sampling/createMessage demande. La passerelle transmet cette demande au client en tant qu'é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.
La demande d'échantillonnage inclut :
-
messages— Les messages de conversation à envoyer au modèle. -
modelPreferences— Indications facultatives concernant les capacité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 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.
Débit 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 en tant qu'é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 demande
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 cibles de serveurs MCP
Important
Les cibles du serveur MCP qui envoient des demandes d'échantillonnage doivent encapsuler les appels d'échantillonnage dans des blocs try-catch 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.
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 un échantillon de réponse avec un |
JSON-RPC |
Le |
|
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. Voir 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 pendant cette périodeinitialize. La passerelle renvoie une erreur -32601 (méthode introuvable) à la cible, et la cible peut la renvoyer sous forme d'erreur d'exécution de l'outil au client.
Pour résoudre le problème :
-
Si vous êtes le développeur du serveur MCP : ajoutez la gestion des erreurs à vos appels d'échantillonnage. Implémentez un chemin de secours lorsque l'échantillonnage n'est pas pris en charge :
Important
Vous devez l'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 : assurez-vous que votre client déclare la capacité d'échantillonnage pendant
initialize:{ "capabilities": { "sampling": {} } }
Exemples de code
Note
Le client LangGraph MCP (langchain-mcp-adapters) et le client Strands MCP ne prennent actuellement pas en charge l'échantillonnage. Utilisez l'approche client MCP illustrée ci-dessous pour gérer les demandes d'échantillonnage provenant de votre passerelle.