Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erkennung von Tools
Es gibt drei Ansätze für die Erkennung und Registrierung von Tools in Ihrem Agenten auf MCP-Servern: statische Definition, dynamische Erkennung und Suchfunktion.
Statische Definition
Zunächst können Sie die verfügbaren Tools direkt im Agentencode statisch definieren. Bei diesem Ansatz definieren Sie für jedes vom MCP-Server bereitgestellte Tool, auf das ein MCP-Client zugreift, ein Remote-Tool (ein clientseitiges Referenzobjekt in einem Framework wie dem Strands Agent SDK). Das folgende Beispiel verwendet streambaren HTTP-Transport:
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])
Durch die Registrierung einzelner Tools können Sie bei der Auswahl der Tools, die Sie dem LLM zur Verfügung stellen, sehr selektiv vorgehen, wodurch der Umfang des verwendeten Kontextfensters minimiert wird. Der Nachteil besteht darin, dass die Namen der verfügbaren Tools bekannt sein müssen. Außerdem kann es instabil sein, wenn sich die verfügbaren Tools auf dem MCP-Server ändern.
Dynamische Erkennung
Der nächste Ansatz besteht darin, die dynamische Erkennung zu verwenden und alle verfügbaren Tools beim Agenten zu registrieren. Bei diesem Ansatz wird der Kontext linear verbraucht, wenn dem MCP-Server mehr Tools hinzugefügt werden. Im Folgenden finden Sie ein Beispiel für diesen Ansatz:
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)
Stellen Sie sich ein Szenario vor, in dem eine typische Werkzeugdefinition etwa 250 bis 500 Token (einschließlich Name, Beschreibung und Schema) verbraucht. Die Registrierung von 20 Tools würde 5.000 bis 10.000 Token Ihres Kontextfensters verbrauchen. Wenn Sie über eine kleine Anzahl von MCP-Servern verfügen und die Kontrolle über die Anzahl der Tools haben, ist diese Option am einfachsten zu implementieren. Wenn jedoch erwartet wird, dass die Liste der Tools wächst, kann dies zu unbemerkten Problemen mit der Kontextverwaltung bei Ihren Agenten führen. Eine alternative Variante dieses Ansatzes besteht darin, beim Aufrufen einen Toolfilterparameter zu verwendenlist_tools, wie ihn das Strands Agents SDK bietet
Suchfunktion
Die dritte Möglichkeit besteht darin, eine Suchfunktion zu verwenden, um während der Laufzeit relevante Tools zu finden. Sie listen alle verfügbaren Tools auf Ihrem MCP-Server auf und führen dann basierend auf der Benutzeraufforderung eine semantische Suche über diese Tools durch. Anschließend werden die resultierenden Tools bei Ihrem Agenten registriert. Amazon Bedrock AgentCore Gateway bietet eine native semantische Suchfunktion, die die Implementierung dieser Art von Lösung erleichtern kann.
Bewährte Methoden für die Entdeckung von MCP-Tools
-
Beibehaltung des Kontextfensters — Wählen Sie einen Ansatz zur Erkennung und Registrierung von Tools, bei dem Ihr Kontextfenster so weit wie möglich erhalten bleibt.
-
Nutzen Sie Funktionen zum Filtern von Tools oder zur semantischen Suche — Stellen Sie dem LLM dynamisch eine Reihe von Tools zur Auswahl zur Verfügung, wodurch die Genauigkeit und Effektivität bei der Auswahl des richtigen Tools verbessert wird. Die Toolfilterung kann anhand von Werkzeugnamen (exakte Übereinstimmung oder Muster), Werkzeugbeschreibungen (semantischer Abgleich) oder Domänen- oder Kategorie-Tags erfolgen. Die semantische Suche ist besonders effektiv, wenn es darum geht, die Absicht der Benutzer mit den Werkzeugbeschreibungen abzugleichen. Beide Ansätze reduzieren die Nutzung von Kontextfenstern.