Was this page helpful?
Das Tool-Suchwerkzeug ermöglicht es Claude, mit Hunderten oder Tausenden von Tools zu arbeiten, indem diese dynamisch bei Bedarf entdeckt und geladen werden. Anstatt alle Tool-Definitionen vorab in das Kontextfenster zu laden, durchsucht Claude Ihren Tool-Katalog (einschließlich Tool-Namen, Beschreibungen, Argumentnamen und Argumentbeschreibungen) und lädt nur die benötigten Tools.
Dieser Ansatz löst zwei Probleme, die sich mit zunehmender Skalierung von Tool-Bibliotheken schnell verstärken:
Hintergrundinformationen zu den Skalierungsproblemen, die die Tool-Suche löst, finden Sie unter Advanced tool use. Das bedarfsgesteuerte Laden der Tool-Suche ist auch ein Beispiel für das allgemeinere Just-in-Time-Abrufprinzip, das in Effective context engineering beschrieben wird.
Obwohl dies als serverseitiges Tool bereitgestellt wird, können Sie auch Ihre eigene clientseitige Tool-Suchfunktionalität implementieren. Weitere Informationen finden Sie unter Benutzerdefinierte Tool-Suchimplementierung.
Teilen Sie Feedback zu dieser Funktion über das Feedback-Formular mit.
This feature qualifies for Zero Data Retention (ZDR) with limited technical retention. See the Data retention section for details on what is retained and why.
Auf Amazon Bedrock ist die serverseitige Tool-Suche nur über die invoke API verfügbar, nicht über die converse API.
Sie können auch clientseitige Tool-Suche implementieren, indem Sie tool_reference-Blöcke aus Ihrer eigenen Suchimplementierung zurückgeben.
Es gibt zwei Varianten der Tool-Suche:
tool_search_tool_regex_20251119): Claude erstellt Regex-Muster zur Suche nach Toolstool_search_tool_bm25_20251119): Claude verwendet natürlichsprachliche Abfragen zur Suche nach ToolsWenn Sie das Tool-Suchwerkzeug aktivieren:
tool_search_tool_regex_20251119 oder tool_search_tool_bm25_20251119) in Ihre Tools-Liste eindefer_loading: true für Tools bereit, die nicht sofort geladen werden sollentool_reference-Blöcke zurückDies hält Ihr Kontextfenster effizient und gewährleistet gleichzeitig eine hohe Genauigkeit bei der Tool-Auswahl.
Hier ist ein einfaches Beispiel mit verzögerten Tools:
Das Tool-Suchwerkzeug hat zwei Varianten:
{
"type": "tool_search_tool_regex_20251119",
"name": "tool_search_tool_regex"
}{
"type": "tool_search_tool_bm25_20251119",
"name": "tool_search_tool_bm25"
}Regex-Variante Abfrageformat: Python-Regex, KEINE natürliche Sprache
Bei Verwendung von tool_search_tool_regex_20251119 erstellt Claude Regex-Muster mit der Syntax von Pythons re.search(), keine natürlichsprachlichen Abfragen. Häufige Muster:
"weather" - entspricht Tool-Namen/-Beschreibungen, die "weather" enthalten"get_.*_data" - entspricht Tools wie get_user_data, get_weather_data"database.*query|query.*database" - ODER-Muster für Flexibilität"(?i)slack" - Groß-/Kleinschreibung-unabhängige SucheMaximale Abfragelänge: 200 Zeichen
BM25-Variante Abfrageformat: Natürliche Sprache
Bei Verwendung von tool_search_tool_bm25_20251119 verwendet Claude natürlichsprachliche Abfragen zur Suche nach Tools.
Markieren Sie Tools für das bedarfsgesteuerte Laden, indem Sie defer_loading: true hinzufügen:
{
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {
"location": { "type": "string" },
"unit": { "type": "string", "enum": ["celsius", "fahrenheit"] }
},
"required": ["location"]
},
"defer_loading": true
}Wichtige Punkte:
defer_loading werden sofort in den Kontext geladendefer_loading: true werden nur geladen, wenn Claude sie über die Suche entdecktdefer_loading: true habenBeide Tool-Suchvarianten (regex und bm25) durchsuchen Tool-Namen, Beschreibungen, Argumentnamen und Argumentbeschreibungen.
Wie die Verzögerung intern funktioniert: Verzögerte Tools sind nicht im System-Prompt-Präfix enthalten. Wenn das Modell ein verzögertes Tool durch die Tool-Suche entdeckt, wird die Tool-Definition inline als tool_reference-Block in der Konversation angehängt. Das Präfix bleibt unberührt, sodass das Prompt-Caching erhalten bleibt. Die Grammatik für den strikten Modus wird aus dem vollständigen Toolset aufgebaut, sodass defer_loading und der strikte Modus ohne Grammatik-Neukompilierung zusammenwirken.
Wenn Claude das Tool-Suchwerkzeug verwendet, enthält die Antwort neue Blocktypen:
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "I'll search for tools to help with the weather information."
},
{
"type": "server_tool_use",
"id": "srvtoolu_01ABC123",
"name": "tool_search_tool_regex",
"input": {
"query": "weather"
}
},
{
"type": "tool_search_tool_result",
"tool_use_id": "srvtoolu_01ABC123",
"content": {
"type": "tool_search_tool_search_result",
"tool_references": [{ "type": "tool_reference", "tool_name": "get_weather" }]
}
},
{
"type": "text",
"text": "I found a weather tool. Let me get the weather for San Francisco."
},
{
"type": "tool_use",
"id": "toolu_01XYZ789",
"name": "get_weather",
"input": { "location": "San Francisco", "unit": "fahrenheit" }
}
],
"stop_reason": "tool_use"
}server_tool_use: Zeigt an, dass Claude das Tool-Suchwerkzeug aufrufttool_search_tool_result: Enthält die Suchergebnisse mit einem verschachtelten tool_search_tool_search_result-Objekttool_references: Array von tool_reference-Objekten, die auf entdeckte Tools verweisentool_use: Claude ruft das entdeckte Tool aufDie tool_reference-Blöcke werden automatisch in vollständige Tool-Definitionen erweitert, bevor sie Claude angezeigt werden. Sie müssen diese Erweiterung nicht selbst handhaben. Sie erfolgt automatisch in der API, solange Sie alle passenden Tool-Definitionen im tools-Parameter angeben.
Informationen zur Konfiguration von mcp_toolset mit defer_loading finden Sie unter MCP-Connector.
Sie können Ihre eigene Tool-Suchlogik implementieren (z. B. mit Embeddings oder semantischer Suche), indem Sie tool_reference-Blöcke aus einem benutzerdefinierten Tool zurückgeben. Wenn Claude Ihr benutzerdefiniertes Suchwerkzeug aufruft, geben Sie ein Standard-tool_result mit tool_reference-Blöcken im Inhalts-Array zurück:
{
"type": "tool_result",
"tool_use_id": "toolu_your_tool_id",
"content": [{ "type": "tool_reference", "tool_name": "discovered_tool_name" }]
}Jedes referenzierte Tool muss eine entsprechende Tool-Definition im tools-Parameter der obersten Ebene mit defer_loading: true haben. Dieser Ansatz ermöglicht die Verwendung ausgefeilterer Suchalgorithmen bei gleichzeitiger Kompatibilität mit dem Tool-Suchsystem.
Das in der Antwortformat-Sektion gezeigte tool_search_tool_result-Format ist das serverseitige Format, das intern von Anthropics eingebauter Tool-Suche verwendet wird. Für benutzerdefinierte clientseitige Implementierungen verwenden Sie immer das Standard-tool_result-Format mit tool_reference-Inhaltsblöcken wie oben gezeigt.
Ein vollständiges Beispiel mit Embeddings finden Sie im Tool-Suche mit Embeddings Cookbook.
Das Tool-Suchwerkzeug ist nicht kompatibel mit Tool-Use-Beispielen. Wenn Sie Beispiele für die Tool-Nutzung bereitstellen müssen, verwenden Sie Standard-Tool-Aufrufe ohne Tool-Suche.
Diese Fehler verhindern die Verarbeitung der Anfrage:
Alle Tools verzögert:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "All tools have defer_loading set. At least one tool must be non-deferred."
}
}Fehlende Tool-Definition:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Tool reference 'unknown_tool' has no corresponding tool definition"
}
}Fehler während der Tool-Ausführung geben eine 200-Antwort mit Fehlerinformationen im Body zurück:
{
"type": "tool_result",
"tool_use_id": "srvtoolu_01ABC123",
"content": {
"type": "tool_search_tool_result_error",
"error_code": "invalid_pattern"
}
}Fehlercodes:
too_many_requests: Ratenlimit für Tool-Suchoperationen überschritteninvalid_pattern: Fehlerhaftes Regex-Musterpattern_too_long: Muster überschreitet das Limit von 200 Zeichenunavailable: Tool-Suchdienst vorübergehend nicht verfügbarInformationen dazu, wie defer_loading das Prompt-Caching erhält, finden Sie unter Tool-Nutzung mit Prompt-Caching.
Das System erweitert tool_reference-Blöcke automatisch im gesamten Konversationsverlauf, sodass Claude entdeckte Tools in nachfolgenden Gesprächsrunden wiederverwenden kann, ohne erneut suchen zu müssen.
Mit aktiviertem Streaming erhalten Sie Tool-Suchereignisse als Teil des Streams:
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "tool_search_tool_regex"}}
// Suchabfrage wird gestreamt
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"query\":\"weather\"}"}}
// Pause während die Suche ausgeführt wird
// Suchergebnisse werden gestreamt
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "tool_search_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": {"type": "tool_search_tool_search_result", "tool_references": [{"type": "tool_reference", "tool_name": "get_weather"}]}}}
// Claude fährt mit den entdeckten Tools fortSie können das Tool-Suchwerkzeug in der Messages Batches API verwenden. Tool-Suchoperationen über die Messages Batches API werden zum gleichen Preis wie in regulären Messages API-Anfragen abgerechnet.
Die serverseitige Tool-Suche (tool_search-Tool) indiziert und speichert Tool-Katalogdaten (Tool-Namen, Beschreibungen und Argument-Metadaten) über die unmittelbare API-Antwort hinaus; diese Katalogdaten werden gemäß der Standard-Aufbewahrungsrichtlinie von Anthropic gespeichert. Benutzerdefinierte clientseitige Tool-Suchimplementierungen, die die Standard-Messages-API verwenden, sind vollständig ZDR-fähig.
Informationen zur ZDR-Berechtigung für alle Funktionen finden Sie unter API und Datenspeicherung.
Gute Anwendungsfälle:
Wann herkömmliche Tool-Aufrufe besser sein könnten:
github_, slack_), damit Suchabfragen natürlich die richtige Tool-Gruppe aufzeigenDie Nutzung des Tool-Suchwerkzeugs wird im Nutzungsobjekt der Antwort verfolgt:
{
"usage": {
"input_tokens": 1024,
"output_tokens": 256,
"server_tool_use": {
"tool_search_requests": 2
}
}
}curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-opus-4-6",
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": "What is the weather in San Francisco?"
}
],
"tools": [
{
"type": "tool_search_tool_regex_20251119",
"name": "tool_search_tool_regex"
},
{
"name": "get_weather",
"description": "Get the weather at a specific location",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string"},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
},
"defer_loading": true
},
{
"name": "search_files",
"description": "Search through files in the workspace",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string"},
"file_types": {
"type": "array",
"items": {"type": "string"}
}
},
"required": ["query"]
},
"defer_loading": true
}
]
}'Schritt-für-Schritt-Anleitung zur Definition von Tools.