Diese Seite behandelt Prompt-Caching für Tool-Definitionen: wo Sie cache_control-Breakpoints platzieren, wie defer_loading Ihren Cache bewahrt, und was ihn ungültig macht. Für allgemeines Prompt-Caching siehe Prompt-Caching.
Platzieren Sie cache_control: {"type": "ephemeral"} auf dem letzten Tool in Ihrem tools-Array. Dies speichert das gesamte Tool-Definitions-Präfix zwischen, vom ersten Tool bis zum markierten Breakpoint:
{
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": {
"location": { "type": "string" }
},
"required": ["location"]
}
},
{
"name": "get_time",
"description": "Get the current time in a given time zone",
"input_schema": {
"type": "object",
"properties": {
"timezone": { "type": "string" }
},
"required": ["timezone"]
},
"cache_control": { "type": "ephemeral" }
}
]
}Für mcp_toolset landet der cache_control-Breakpoint auf dem letzten Tool im Set. Sie kontrollieren die Tool-Reihenfolge innerhalb eines MCP-Toolsets nicht, daher platzieren Sie den Breakpoint auf dem mcp_toolset-Eintrag selbst und die API wendet ihn auf das final erweiterte Tool an.
Aufgeschobene Tools sind nicht im System-Prompt-Präfix enthalten. Wenn das Modell ein aufgeschobenes Tool durch Tool-Suche entdeckt, wird die Definition inline als tool_reference-Block in der Gesprächsverlauf angehängt. Das Präfix bleibt unverändert, daher wird das Prompt-Caching bewahrt.
Dies bedeutet, dass das dynamische Hinzufügen von Tools durch Tool-Suche Ihren Cache nicht bricht. Sie können ein Gespräch mit einem kleinen Satz von immer geladenen Tools (zwischengespeichert) starten, das Modell zusätzliche Tools nach Bedarf entdecken lassen und denselben Cache-Hit über jeden Durchlauf hinweg behalten.
defer_loading funktioniert auch unabhängig von der Grammatikkonstruktion für strikten Modus. Die Grammatik wird aus dem vollständigen Toolset erstellt, unabhängig davon, welche Tools aufgeschoben sind, daher werden sowohl Prompt-Caching als auch Grammatik-Caching bewahrt, wenn Tools dynamisch geladen werden.
Der Cache folgt einer Präfix-Hierarchie (tools → system → messages), daher macht eine Änderung auf einer Ebene diese Ebene und alles danach ungültig:
| Änderung | Macht ungültig |
|---|---|
| Ändern von Tool-Definitionen | Gesamter Cache (Tools, System, Nachrichten) |
| Umschalten von Websuche oder Zitaten | System- und Nachrichten-Caches |
Ändern von tool_choice | Nachrichten-Cache |
Ändern von disable_parallel_tool_use | Nachrichten-Cache |
| Umschalten von Bildern vorhanden/abwesend | Nachrichten-Cache |
| Ändern von Thinking-Parametern | Nachrichten-Cache |
Wenn Sie tool_choice während eines Gesprächs variieren müssen, erwägen Sie, Cache-Breakpoints vor dem Variationspunkt zu platzieren.
| Tool | Caching-Überlegungen |
|---|---|
| Websuche | Das Aktivieren oder Deaktivieren macht die System- und Nachrichten-Caches ungültig |
| Web-Abruf | Das Aktivieren oder Deaktivieren macht die System- und Nachrichten-Caches ungültig |
| Code-Ausführung | Container-Status ist unabhängig vom Prompt-Cache |
| Tool-Suche | Entdeckte Tools werden als tool_reference-Blöcke geladen und bewahren das Präfix-Cache |
| Computernutzung | Screenshot-Präsenz beeinflusst den Nachrichten-Cache |
| Text-Editor | Standard-Client-Tool, keine spezielle Caching-Interaktion |
| Bash | Standard-Client-Tool, keine spezielle Caching-Interaktion |
| Speicher | Standard-Client-Tool, keine spezielle Caching-Interaktion |
Erfahren Sie mehr über das vollständige Prompt-Caching-Modell, einschließlich TTLs und Preisgestaltung.
Laden Sie Tools bei Bedarf, ohne Ihren Cache zu unterbrechen.
Durchsuchen Sie alle verfügbaren Tools und ihre Parameter.
Was this page helpful?