gemini-3.6-flash. Ob andere Modelle Context Cache unterstützen, erfahren Sie in der Modelldokumentation und auf der Preisseite der Plattform.Anwendungsfälle
Wenn mehrere Anfragen wiederholt dieselben umfangreichen Inhalte enthalten, können Sie den stabilen Präfix zwischenspeichern. Beispiele hierfür sind:- Ein sehr langer System-Prompt
- Eine feste Wissensdatenbank oder Produktdokumentation
- Ein stabiler Nachrichtenverlauf über mehrere Gesprächsrunden hinweg
- Wiederverwendete Tool-Definitionen und Anweisungen
Grundlegende Verwendung
Fügen Siecache_control zum Inhaltsblock der letzten Nachricht im stabilen Präfix hinzu:
ttl weggelassen wird, gilt standardmäßig 5m.Nachrichtenstruktur
Wir empfehlen die folgende Struktur:cache_control und alle vorangehenden Nachrichten bilden den Cache-Präfix. Danach muss mindestens eine aktuelle Nachricht folgen.
Beispiel für eine OpenAI-kompatible Anfrage
cache_control legt sowohl die Cache-Grenze als auch die Cache-Gültigkeitsdauer fest.Beispiel für eine native Gemini-Anfrage
Beim nativen Gemini-EndpunktgenerateContent können Sie cache_control ebenfalls in contents[].parts[] einfügen:
cache_control ist eine Plattformerweiterung des Gemini-Anfrageformats. Nachdem die Plattform die Grenze erkannt hat, entfernt sie dieses Feld vor der Weiterleitung und erstellt oder verwendet automatisch zwischengespeicherte Inhalte (cachedContent).
Der Streaming-Endpunkt verwendet denselben Anfragekörper. Sie müssen lediglich die URL wie folgt ändern:
systemInstruction, die contents vor der Grenze, die TTL und tools unverändert. Ändern Sie nur die aktuellen Inhalte nach der Grenze.
Ablauf der Erstellung und Wiederverwendung
Wenn Sie zum ersten Mal eine Anfrage mitcache_control senden:
Cache wiederverwenden
Lassen Sie bei nachfolgenden Anfragen Folgendes unverändert:- Das Modell
- Alle Nachrichten vor
cache_control cache_control.ttl- Tool-Definitionen (falls Sie tools verwenden)
systemInstructionin nativen Gemini-Anfragen
- Text oder Nachrichtenreihenfolge innerhalb des stabilen Präfixes ändern
- Das Modell wechseln
5min1händern- tools oder Definitionen von Tool-Parametern ändern
- Einen anderen API-Benutzer oder Kanal verwenden
Python-Beispiel
stable_messages und ersetzen Sie nur die letzte Benutzernachricht.
Cache-Treffer überprüfen
OpenAI-kompatible Antwort
Prüfen Sie die folgenden Felder in der Antwort:cached_tokens aufweisen, da das System einen Cache erstellen und ihn im selben Modellaufruf referenzieren kann.
Native Gemini-Antwort
Prüfen SieusageMetadata.cachedContentTokenCount in der Antwort:
streamGenerateContent gibt dieselben usageMetadata in einem SSE-Antwort-Frame zurück. Der Client sollte den Frame mit diesem Feld lesen und nicht nur den ersten Text-Frame prüfen.
Empfehlungen
Häufig gestellte Fragen
Kann das native Gemini-Anfrageformat automatisch einen Cache erstellen?
Kann das native Gemini-Anfrageformat automatisch einen Cache erstellen?
generateContent und streamGenerateContent verwenden dieselbe cache_control-Struktur. Die Grenze muss in contents[].parts[] platziert werden, und nach dem Inhaltselement mit der Grenze muss mindestens ein aktuelles Inhaltselement verbleiben.Wenn die Anfrage ausdrücklich den Namen einer nativen cachedContent-Ressource angibt, verwendet die Plattform vorrangig die vom Benutzer angegebene Ressource und erstellt nicht automatisch einen Cache.Warum gab es keinen Cache-Treffer?
Warum gab es keinen Cache-Treffer?
- Der stabile Präfix stimmt nicht exakt mit der vorherigen Anfrage überein
- Die TTL ist abgelaufen
- Das Modell oder die tools wurden geändert
- Der zwischengespeicherte Inhalt erreicht nicht die vom Modell verlangte Mindestanzahl an Tokens
cache_controlwurde in der letzten Nachricht platziert, sodass keine aktuelle Frage danach verbleibt
Kann cache_control in der letzten Nachricht platziert werden?
Kann cache_control in der letzten Nachricht platziert werden?
Kann ich eine andere TTL festlegen?
Kann ich eine andere TTL festlegen?
5m und 1h unterstützt. Jeder andere Wert führt zu HTTP 400.Kann ich mehrere Cache-Grenzen festlegen?
Kann ich mehrere Cache-Grenzen festlegen?
Schlägt die Anfrage fehl, wenn der Cache nicht verfügbar ist?
Schlägt die Anfrage fehl, wenn der Cache nicht verfügbar ist?
Was geschieht, wenn Context Cache für das Modell nicht aktiviert ist?
Was geschieht, wenn Context Cache für das Modell nicht aktiviert ist?
Warum ist cache_write_tokens gleich 0?
Warum ist cache_write_tokens gleich 0?
cache_write_tokens angegeben.Bedeutet cached_tokens größer als 0 immer, dass ein expliziter Cache erstellt wurde?
Bedeutet cached_tokens größer als 0 immer, dass ein expliziter Cache erstellt wurde?
Wie wird das Caching abgerechnet?
Wie wird das Caching abgerechnet?