View a markdown version of this page

Werkzeugdefinitionen - AWS Präskriptive Leitlinien

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.

Werkzeugdefinitionen

Wenn ein LLM eine Anfrage erhält, die es nicht direkt bearbeiten kann, überprüft es die verfügbaren Tools, um die Anfrage zu bearbeiten. Das LLM wählt Tools auf der Grundlage seines semantischen Verständnisses der Namen und Beschreibungen der bereitgestellten Tools sowie aller in der Aufforderung enthaltenen Anweisungen aus. Es erstellt dann Eingaben auf der Grundlage des definierten Eingabeschemas und erwartet eine Ausgabe auf der Grundlage des Ausgabeschemas. Daher ist die Erstellung beschreibender Werkzeugdefinitionen und validierter Eingabe- und Ausgabeschemas von entscheidender Bedeutung, um dem LLM bei der effektiven Auswahl von Tools zu helfen. Im Allgemeinen gibt es zwei Ansätze für die Erstellung dieser Dokumentation: den Ansatz der Toolspezifikation und den Docstring-Ansatz.

Ansatz zur Werkzeugspezifikation

Der empfohlene Ansatz besteht darin, sich bei der Definition des Tools direkt an die MCP-Werkzeugspezifikation zu halten. Das folgende Beispiel wird mit dem Strands Agent Tool Decorator gezeigt:

@tool( name = "search_website", description = "This tool searches the provided website for semantic matches to the query provided", inputSchema = { "json": { "type": "object", "properties": { "url": { "type": "string", "description": "The url of the website to load and search." }, "query": { "type": "string", "description": "The content you want to try and match in the website." } }, "required": ["url", "query"] }, outputSchema = { "json": { "type": "object", "properties": { "results": { "type": "array", "items": { "type": "string" } } } } } ) def search_website: …

Durch die Verwendung von Standardfeldern wie, namedescription, und wird outputSchema sichergestelltinputSchema, dass jedes Tool über eine konsistente Dokumentation verfügt, die sowohl der LLM als auch die Menschen verstehen können. Jedes Tool sollte diese Felder mindestens definieren und optional einen Titel und Anmerkungen bereitstellen, bei denen es sich um optionale Hinweise zum Verhalten des Tools handelt. Verwenden Sie nach Möglichkeit Enums für Parameterwerte, um es dem LLM zu erleichtern, die richtigen Optionen auszuwählen. Aufzählungen eignen sich am besten für endliche Mengen wie Status- oder Prioritätswerte, eignen sich jedoch nicht für Freiformtext, dynamische Werte, willkürliche Zahlen oder Ressourcenbezeichner. Geben Sie in diesen Fällen stattdessen klare Beschreibungen und Beispiele an. Geben Sie nach Möglichkeit auch einen Standardwert an, damit der LLM nicht erraten muss, was die richtige Option ist. Denken Sie daran, dass Tooldefinitionen bei jedem Aufruf in der LLM-Eingabeaufforderung enthalten sind und neben den Systemanweisungen und dem Konversationsverlauf auch Platz im Kontextfenster beanspruchen.

Docstring-Ansatz

Ein anderer Ansatz, wenn Sie Ihre Werkzeuge in Python schreiben, besteht darin, Docstrings zu verwenden, um die Beschreibung, Verwendung und Ausgabe des Werkzeugs bereitzustellen. Im Folgenden finden Sie ein Beispiel für diesen Ansatz:

def search_website(url: str, query: str) -> list: """ This tool loads the specified website and then attempts to find content that matches the provided query through semantic search. It provides back a list of strings that are the sentences that match the query. Args: url: the website url to load query: the content you want to semantically match in the website """

Docstrings erzwingen weder ein Schema noch ein standardisiertes Format. Die Verwendung dieses Ansatzes kann zu inkonsistenten Ergebnissen führen, je nachdem, wie Toolentwickler die einzelnen Tools dokumentieren. Wenn Sie diesen Ansatz verfolgen, ist es wichtig, einen unternehmensweiten Standard zu definieren und durchzusetzen.

Bewährte Methoden für Definitionen von MCP-Tools

  • Halten Sie sich an die MCP-Werkzeugspezifikation — geben Sie outputSchema Felder namedescription,inputSchema, und für jedes Werkzeug an. Verwenden Sie für Python-Implementierungen Pydantic-Modelle, um Inline-Dokumentation durch Feldbeschreibungen, automatische Typvalidierung und eingeschränkte Werte durch Enums bereitzustellen. Dadurch dokumentieren sich Schemas selbst und das LLM-Verständnis gültiger Parameteroptionen verbessert sich.

  • Schreiben Sie Beschreibungen als Eingabeaufforderungen — Toolbeschreibungen sind Anweisungen, die die LLM-Entscheidungsfindung erleichtern. Geben Sie die wesentlichen Bestandteile des Tools an (was das Tool tut), wann es verwendet werden soll (Muster oder Szenarien der Benutzerabsichten), den Kontext der Ausgabe (wofür die Ausgabe verwendet wird), Parameter und Fehlerbedingungen.

  • Geben Sie konkrete Beispiele an — Die Einbeziehung von Workflow-Beispielen mit tatsächlichen Werten ist die effektivste Methode, um LLMs Hinweise zur korrekten Verwendung des Tools zu geben.

  • Dokumentieren Sie Abhängigkeiten explizit — Geben Sie Voraussetzungen, nummerierte Sequenzen, Statusänderungen und Folgemaßnahmen an.