Symptom-zu-Lösung-Tabellen für die häufigsten Fehler bei der Tool-Nutzung. Jede Lösung verweist auf die Seite, die das jeweilige Feature beschreibt.
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Claude ruft Tool A auf, obwohl du Tool B wolltest | Mehrdeutige Beschreibung | Schärfe die Beschreibungen. Unterscheide Tools danach, WANN sie verwendet werden sollen, nicht nur WAS sie tun. Siehe Tools definieren. |
| Claude ruft dein Tool nie auf | Namenskollision bei Tools oder zu generisches Schema | Prüfe auf doppelte Namen in deiner Tool-Liste. Füge input_examples hinzu, um die beabsichtigte Verwendung konkret zu machen. |
| Claude ruft mit falschen Parametertypen auf | Modell rät bei mehrdeutigem Schema | Füge strict: true hinzu (wenn dein Schema in der unterstützten Teilmenge liegt) oder füge input_examples hinzu. |
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Parameter, der in deinem Schema nicht existiert | Übergenerierung durch das Modell ohne Strict-Modus | Füge strict: true hinzu, wenn dein Schema in der unterstützten Teilmenge liegt. |
| Parameterwerte außerhalb deines Enums | Fehlender Strict-Modus oder zu großes Enum | Verkleinere das Enum oder füge input_examples hinzu, die gültige Auswahlmöglichkeiten zeigen. |
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Claude ruft Tools sequenziell auf, obwohl parallel besser wäre | Formatierung des Nachrichtenverlaufs | Sende mehrere tool_result-Blöcke in EINER User-Nachricht, nicht einen pro Turn. Siehe Parallele Tool-Nutzung. |
disable_parallel_tool_use scheint ignoriert zu werden | Zu spät in der Konversation gesetzt | Muss bei der Anfrage gesetzt werden, die tool_use zurückgibt. Das Setzen bei einer späteren Anfrage hat keine Auswirkung auf frühere Tool-Aufrufe. |
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Jede Anfrage ist ein Cache-Miss | tool_choice variiert zwischen Anfragen | Halte tool_choice stabil oder platziere den cache_control-Breakpoint vor dem Variationspunkt. Siehe Tool-Nutzung mit Prompt-Caching. |
| Hinzufügen eines Tools mitten in der Konversation bricht den Cache | Tool wurde dem Tools-Array vorangestellt | Verwende defer_loading: true mit Tool-Suche, um das Tool inline anzuhängen, statt den Anfang des Arrays zu verändern. |
| Fehler | Ursache | Lösung |
|---|---|---|
tool_use ids were found without tool_result blocks immediately after | Fehlendes tool_result für einige tool_use-IDs, oder tool_result ist nicht der erste Content-Block in der User-Nachricht | Gib für jeden tool_use-Block in der Assistant-Antwort ein tool_result zurück. Platziere tool_result-Blöcke vor jeglichem Text. Siehe Tool-Aufrufe verarbeiten und Parallele Tool-Nutzung. |
was found without a corresponding <name>_tool_result block | Der vorherige Assistant-Turn enthält einen server_tool_use-Block ohne Result-Block (meistens, weil Claude ihn zusammen mit einem Client-Tool aufgerufen hat), und entweder hat deine nächste User-Nachricht diesen Turn beendet (zum Beispiel mit Text nach den tool_result-Blöcken) oder die Fortsetzungsanfrage definiert dieses Server-Tool nicht mehr (die Meldung endet dann mit but no <name> tool was provided) | Sende eine User-Nachricht, die nur die tool_result-Blöcke für die Client-tool_use-IDs enthält, und behalte dasselbe tools-Array bei. Siehe Stop-Gründe und Fallback. |
Input schema is not compatible with strict mode: string patterns are not supported | Verwendung von pattern mit strict: true | Entferne das Pattern oder lass strict: true weg. Das Schlüsselwort pattern ist noch nicht in der unterstützten JSON-Schema-Teilmenge enthalten. |
All tools have defer_loading: true | Keine Tools für das Modell sichtbar | Mindestens ein Tool muss sofort geladen sein. Das Tool-Suche-Tool selbst darf niemals defer_loading: true haben. |
Wenn eine Anfrage mit einem 400 invalid_request_error fehlschlägt, dessen Meldung `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified enthält, während du eine Konversation nach einem Tool-Aufruf fortsetzt, verändert deine Anwendung die Thinking-Blöcke des Assistants, bevor sie zurückgesendet werden. Sende die gesamte Assistant-Nachricht unverändert zurück und hänge dann dein tool_result an.
Siehe Thinking-Blöcke können nicht verändert werden für den vollständigen Fehler und die Lösungsschritte.
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Claude weigert sich, auf ein Tool-Ergebnis zu reagieren, oder bittet den Nutzer, Anweisungen zu bestätigen, die daraus stammen | Deine eigenen Anweisungen werden innerhalb des tool_result-Inhalts übermittelt | Claude ist darauf trainiert, Anweisungen innerhalb von Tool-Ergebnissen als potenziell nicht vertrauenswürdigen Inhalt von Dritten zu behandeln. Verschiebe deine Anweisungen aus dem Tool-Ergebnis heraus: Sende sie in einem user-Turn nach dem tool_result-Block oder (ab Claude Opus 4.8) in einer System-Nachricht mitten in der Konversation. Beschränke das Tool-Ergebnis auf die reinen Daten. Siehe Jailbreaks und Prompt-Injections abschwächen. |
| Symptom | Ursache | Lösung |
|---|---|---|
| String-Vergleich bei Tool-Inputs schlägt mit neueren Modellen fehl | Unicode- und Forward-Slash-Escaping unterscheidet sich zwischen Modellversionen | Parse mit json.loads() oder JSON.parse(). Führe niemals rohe String-Vergleiche auf serialisiertem Input durch. |
Schreibe Schemas und Beschreibungen, die Claude zum richtigen Tool lenken.
Führe Tools aus und gib Ergebnisse im erforderlichen Nachrichtenformat zurück.
Vollständiges Verzeichnis der Anthropic-Schema-Tools und ihrer Versionsstrings.
Was this page helpful?