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à.
Scoperta degli strumenti
Esistono tre approcci per scoprire e registrare gli strumenti nell'agente con i server MCP: definizione statica, rilevamento dinamico e funzione di ricerca.
Definizione statica
Innanzitutto, è possibile definire staticamente gli strumenti disponibili direttamente nel codice dell'agente. In questo approccio si definisce uno strumento remoto (un oggetto di riferimento sul lato client in un framework come Strands Agent SDK) per ogni strumento fornito dal server MCP a cui accede un client MCP. L'esempio seguente utilizza un trasporto HTTP ottimizzato:
from mcp.client.streamable_http import streamablehttp_client from strands import Agent from strands.tools.mcp import MCPClient streamable_http_mcp_client = MCPClient( lambda: streamablehttp_client("https://mcp1:8000/mcp") ) reverse_text = RemoteTool( name="reverseText", client=streamable_http_mcp_client ) agent = Agent(tools=[reverse_text])
La registrazione individuale degli strumenti ti aiuta a essere molto selettivo riguardo agli strumenti che metti a disposizione del LLM, il che riduce al minimo la quantità di finestra contestuale utilizzata. Il compromesso è che richiede la conoscenza dei nomi degli strumenti disponibili e può essere fragile se gli strumenti disponibili cambiano nel server MCP.
Scoperta dinamica
L'approccio successivo prevede l'utilizzo del rilevamento dinamico e la registrazione di tutti gli strumenti disponibili con l'agente. Questo approccio utilizza il contesto in modo lineare man mano che vengono aggiunti altri strumenti al server MCP. Di seguito è riportato un esempio di questo approccio:
from mcp.client.streamable_http import streamablehttp_client from strands import Agent from strands.tools.mcp import MCPClient streamable_http_mcp_client = MCPClient( lambda: streamablehttp_client("https://mcp1:8000/mcp") ) with streamable_http_mcp_client: tools = streamable_http_mcp_client.list_tools_sync() agent = Agent(tools=tools)
Consideriamo uno scenario in cui una tipica definizione di utensile utilizza circa 250-500 token (inclusi nome, descrizione e schema). La registrazione di 20 strumenti consumerebbe da 5.000 a 10.000 token della finestra contestuale. Quando si dispone di un numero limitato di server MCP e si ha il controllo sul numero di strumenti, questa opzione è la più semplice da implementare. Tuttavia, se si prevede che l'elenco degli strumenti aumenti, è possibile che si verifichino problemi di gestione silenziosa del contesto negli agenti. Una variante alternativa di questo approccio consiste nell'utilizzare un parametro di filtro degli strumenti durante la chiamatalist_tools, come quello fornito dall'SDK di Strands Agents
Funzione di ricerca
La terza opzione consiste nell'utilizzare una funzione di ricerca per trovare gli strumenti pertinenti durante l'esecuzione. Elenca tutti gli strumenti disponibili dal server MCP e quindi esegue una ricerca semantica su tali strumenti in base al prompt dell'utente. Quindi, gli strumenti risultanti vengono registrati presso il vostro agente. Amazon Bedrock AgentCore Gateway offre una funzionalità di ricerca semantica nativa che può semplificare l'implementazione di questo tipo di soluzione.
Le migliori pratiche per l'individuazione di strumenti MCP
-
Conservazione della finestra contestuale: scegli un approccio di scoperta e registrazione degli strumenti che conservi la maggior parte possibile della finestra contestuale.
-
Utilizza funzionalità di filtraggio degli strumenti o di ricerca semantica: fornisci dinamicamente al LLM un set di strumenti ristretto tra cui scegliere, il che ne migliora la precisione e l'efficacia nella scelta dello strumento giusto. Il filtraggio degli strumenti può operare sui nomi degli strumenti (corrispondenza o modelli esatti), sulle descrizioni degli strumenti (corrispondenza semantica) o sui tag di dominio o di categoria. La ricerca semantica è particolarmente efficace per abbinare le intenzioni degli utenti alle descrizioni degli strumenti. Entrambi gli approcci riducono l'uso delle finestre contestuali.