Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Usa il campionamento con il tuo gateway AgentCore
Il campionamento è una funzionalità MCP che consente a un server MCP di richiedere il completamento di un LLM dal client durante una chiamata allo strumento. Ciò consente ai server di sfruttare le funzionalità di intelligenza artificiale senza la necessità di accedere direttamente a un modello linguistico: il client gestisce l'invocazione del modello e restituisce il risultato. AgentCore Gateway inoltra le richieste di campionamento dalle destinazioni dei server MCP ai tuoi clienti, sostituendo la richiesta con un identificatore generato dal gateway. id
Prerequisiti
Per utilizzare il campionamento con il gateway:
-
Sessioni abilitate (versione 2025-11-25 e precedenti): il campionamento richiede il supporto della sessione. Vedi Usare le sessioni MCP con il tuo gateway. Per
2026-07-28le versioni successive, non è necessario aggiungerlesessionConfigurational gateway, poiché queste versioni sono stateless. -
Streaming di risposta abilitato (versione 2025-11-25 e precedenti): le richieste di campionamento vengono inviate come blocchi SSE durante una connessione aperta.
streamingConfiguration.enableResponseStreamingtrueImposta suprotocolConfiguration.mcpin quello del tuo gateway. Per2026-07-28le versioni successive, non è necessario abilitare lo streaming delle risposte. Queste versioni forniscono il campionamento tramite il modello MRTR (Multi Round-Trip Request) anziché una richiesta avviata dal server nel flusso di risposta. Per ulteriori informazioni, consulta Richieste multiple di andata e ritorno nella documentazione del Model Context Protocol. -
Tipo di destinazione del server MCP: le richieste di campionamento provengono da destinazioni del server MCP.
-
Il client dichiara la capacità di campionamento: il client deve dichiarare il supporto per il campionamento affinché il gateway inoltri le richieste di campionamento. Per le versioni precedenti
2025-11-25e precedenti, il client dichiara questo supporto nella richiesta.initializePer2026-07-28le versioni successive, il client lo dichiara per ogni richiesta nel_metacampo ()io.modelcontextprotocol/clientCapabilities.
Come funziona il campionamento
Quando un server di destinazione MCP necessita di un completamento LLM durante l'esecuzione dello strumento, invia una richiesta. sampling/createMessage Il gateway inoltra questa richiesta al client come evento SSE, sostituendo la richiesta. id Il client richiama il proprio modello linguistico e invia il risultato al gateway, che lo inoltra alla destinazione.
Nota
Il flusso qui descritto si applica alle versioni precedenti 2025-11-25 e alle versioni precedenti, in cui il server invia sampling/createMessage una richiesta avviata dal server sullo stream SSE aperto. Per le versioni 2026-07-28 successive, il campionamento utilizza invece il pattern MRTR (Multi Round-Trip Requests). Il server restituisce un risultato provvisorio con set to. resultType input_required Il client fornisce quindi il completamento in caso di nuovo tentativo della richiesta originale. Per ulteriori informazioni, vedere Richieste multiple di andata e ritorno
La richiesta di campionamento include:
-
messages— I messaggi di conversazione da inviare al modello. -
modelPreferences— Suggerimenti opzionali sulle funzionalità desiderate del modello (intelligenza, velocità, costi). -
systemPrompt— Richiesta di sistema opzionale per il modello. -
maxTokens— Numero massimo di token da generare.
Il cliente risponde con:
-
model— Il modello utilizzato. -
role— Sempreassistant. -
content— Il contenuto generato (testo o immagine).
Nota
Il cliente ha il pieno controllo sul modello da utilizzare e su come gestire la richiesta. I server modelPreferences sono suggerimenti, non requisiti. Il client può anche modificare o rifiutare la richiesta in base alle proprie politiche.
Flusso di campionamento
-
Il cliente invia una
tools/callrichiesta con l'Mcp-Session-Idintestazione. -
Il gateway inoltra la chiamata allo strumento alla destinazione del server MCP.
-
Il target apre un flusso SSE e invia una richiesta.
sampling/createMessage -
Il gateway inoltra la richiesta di campionamento al client come evento SSE, sostituendo la richiesta.
id -
Il client richiama il proprio modello linguistico con i messaggi forniti.
-
Il client invia una nuova richiesta con il risultato del campionamento utilizzando la stessa
Mcp-Session-Ide la richiestaiddel gateway. -
Il gateway inoltra il risultato alla destinazione del server MCP.
-
La destinazione continua l'elaborazione e restituisce il risultato finale dello strumento.
-
Gateway inoltra il risultato finale al client e chiude lo stream.
Linee guida per gli sviluppatori target di server MCP
Importante
I server target MCP che inviano richieste di campionamento devono racchiudere le chiamate di campionamento in blocchi try-catch e gestire il caso in cui il client non supporti il campionamento. Se il client del gateway non dichiara la capacità di campionamento, il gateway non la dichiara alla destinazione. Se il target invia comunque una richiesta di campionamento, il gateway restituisce un errore -32601 (Method not found) al target.
I server devono implementare un percorso alternativo (ad esempio utilizzando un modello integrato o saltando il AI-assisted passaggio) quando il campionamento non è disponibile.
Protezione dello stato della richiesta (versione 2026-07-28 e successive)
Nelle versioni 2026-07-28 successive, il campionamento utilizza lo schema MRTR (Multi Round-Trip Request), che comporta una separazione opaca tra il client e la destinazione del server MCP. requestState La protezione di tale valore è una responsabilità condivisa: il gateway lo autorizza e lo inoltra senza memorizzarlo, mentre la destinazione del server MCP deve convalidarlo e impedire a un utente di riprodurre lo stato della richiesta di un altro utente. Per il modello completo di responsabilità condivisa e le linee guida di protezione che il server MCP deve seguire, vedete Proteggere lo stato della richiesta per l'elicitazione e il campionamento nelle considerazioni sulla destinazione del server MCP.
Gestione degli errori
| Scenario | Errore | Description |
|---|---|---|
|
Il client invia una risposta di campionamento quando nessuna richiesta di campionamento è in sospeso |
JSON-RPC |
Nessuna richiesta di campionamento corrispondente trovata per questa sessione. |
|
Il cliente invia una risposta di campionamento con una risposta |
JSON-RPC |
|
|
Il server MCP invia una richiesta di campionamento ma il gateway non ha dichiarato il supporto |
JSON-RPC |
Ritornato alla destinazione del server MCP. Vedere Risoluzione dei problemi. |
Risoluzione dei problemi
Errore: «Errore durante la chiamata allo strumento 'sample_tool': metodo non trovato:" sampling/createMessage
Questo errore si verifica quando una destinazione del server MCP invia una richiesta di campionamento ma il client del gateway non ha dichiarato la capacità di campionamento. Per le versioni precedenti 2025-11-25 e precedenti, il client dichiara questa funzionalità durante. initialize Per 2026-07-28 le versioni successive, il client la dichiara per ogni richiesta nel _meta campo. Il gateway restituisce un errore -32601 (Metodo non trovato) alla destinazione. La destinazione potrebbe restituirlo al client come errore di esecuzione dello strumento.
Per risolvere:
-
Se sei lo sviluppatore del server MCP: aggiungi la gestione degli errori nelle chiamate di campionamento. Implementa un percorso alternativo quando il campionamento non è supportato:
Importante
È necessario includere
related_request_id=ctx.request_context.request_idnella chiamata.create_messageCiò è necessario affinché il gateway associ correttamente la richiesta di campionamento alla chiamata allo strumento di origine. Senza di esso, il campionamento non funzionerà.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) -
Se sei lo sviluppatore del client gateway: per le versioni precedenti
2025-11-25e precedenti, assicurati che il client dichiari la capacità di campionamento durante.initializePer la versione2026-07-28e le successive, dichiarala per ogni richiesta nel_metacampo ().io.modelcontextprotocol/clientCapabilitiesL'esempio seguente mostra lainitializedichiarazione:{ "capabilities": { "sampling": {} } }
Esempi di codice
Nota
LangGraph MCP Client (langchain-mcp-adapters) e Strands MCP Client non supportano attualmente il campionamento. Utilizzate l'approccio MCP Client mostrato di seguito per gestire le richieste di campionamento dal vostro gateway.