Kontext-Caching

<ph type="x-smartling-placeholder"></ph>

In einem typischen KI-Workflow werden dieselben Eingabetokens Modell zu erstellen. Mit der Gemini API-Funktion für Kontext-Caching können Sie einige Inhalte übergeben. einmal in das Modell ein, speichern Sie die Eingabetokens im Cache und verweisen Sie dann auf die im Cache gespeicherten Tokens. für nachfolgende Anfragen. Bei bestimmten Volumen sind im Cache gespeicherte Tokens günstiger. als wiederholt denselben Korpus von Tokens übergeben.

Wenn Sie eine Reihe von Tokens im Cache speichern, können Sie festlegen, wie lange der Cache vorhanden sind, bevor die Tokens automatisch gelöscht werden. Diese Caching-Dauer beträgt wird als Gültigkeitsdauer (TTL) bezeichnet. Wenn die Richtlinie nicht konfiguriert ist, wird die TTL standardmäßig auf 1 Stunde festgelegt. Die Die Kosten für das Caching hängen von der Größe des Eingabetokens ab und davon, wie lange das die beibehalten werden sollen.

Kontext-Caching unterstützt sowohl Gemini 1.5 Pro als auch Gemini 1.5 Flash.

Wann sollte Kontext-Caching verwendet werden?

Kontext-Caching eignet sich besonders für Szenarien, bei denen in kürzeren Anfragen wiederholt auf eine hohe anfängliche Kontextmenge verwiesen wird. Ziehen Sie die Verwendung von Kontext-Caching für Anwendungsfälle wie diese in Betracht:

  • Chatbots mit ausführlichen Systemanweisungen
  • Wiederholte Analyse langer Videodateien
  • Wiederkehrende Abfragen großer Dokumentgruppen
  • Häufige Analyse oder Behebung von Fehlern im Code-Repository

Wie Caching die Kosten senkt

Kontext-Caching ist eine kostenpflichtige Funktion, mit der die Betriebskosten insgesamt gesenkt werden können. Die Abrechnung erfolgt anhand der folgenden Faktoren:

  1. Anzahl der Cache-Tokens: Die Anzahl der im Cache gespeicherten Eingabetokens, für die ein ermäßigter Tarif für die Nutzung in nachfolgenden Prompts gilt.
  2. Speicherdauer:Die Dauer, für die im Cache gespeicherte Tokens gespeichert werden (TTL) Die Abrechnung erfolgt anhand der TTL-Dauer der im Cache gespeicherten Tokens. Es gibt keine Mindestanzahl oder Obergrenzen für die TTL festlegen.
  3. Andere Faktoren: Es fallen weitere Gebühren an, z. B. für nicht im Cache gespeicherte Eingabe- und Ausgabetokens.

Aktuelle Preisinformationen finden Sie in der Preisübersicht zur Gemini API“ . Informationen zum Zählen von Tokens finden Sie auf der Seite Tokens .

Kontext-Caching verwenden

In diesem Abschnitt wird davon ausgegangen, dass Sie ein Gemini SDK installiert und eine API konfiguriert haben enthalten, wie in der Kurzanleitung gezeigt.

Inhalte mit einem Cache generieren

Das folgende Beispiel zeigt, wie Inhalte mit einem im Cache gespeicherten System generiert werden Anleitung und Videodatei.

import os
import google.generativeai as genai
from google.generativeai import caching
import datetime
import time

# Get your API key from https://aistudio.google.com/app/apikey
# and access your API key as an environment variable.
# To authenticate from a Colab, see
# https://github.com/google-gemini/cookbook/blob/main/quickstarts/Authentication.ipynb
genai.configure(api_key=os.environ['API_KEY'])

# Download video file
# curl -O https://storage.googleapis.com/generativeai-downloads/data/Sherlock_Jr_FullMovie.mp4

path_to_video_file = 'Sherlock_Jr_FullMovie.mp4'

# Upload the video using the Files API
video_file = genai.upload_file(path=path_to_video_file)

# Wait for the file to finish processing
while video_file.state.name == 'PROCESSING':
  print('Waiting for video to be processed.')
  time.sleep(2)
  video_file = genai.get_file(video_file.name)

print(f'Video processing complete: {video_file.uri}')

# Create a cache with a 5 minute TTL
cache = caching.CachedContent.create(
    model='models/gemini-1.5-flash-001',
    display_name='sherlock jr movie', # used to identify the cache
    system_instruction=(
        'You are an expert video analyzer, and your job is to answer '
        'the user\'s query based on the video file you have access to.'
    ),
    contents=[video_file],
    ttl=datetime.timedelta(minutes=5),
)

# Construct a GenerativeModel which uses the created cache.
model = genai.GenerativeModel.from_cached_content(cached_content=cache)

# Query the model
response = model.generate_content([(
    'Introduce different characters in the movie by describing '
    'their personality, looks, and names. Also list the timestamps '
    'they were introduced for the first time.')])

print(response.usage_metadata)

# The output should look something like this:
#
# prompt_token_count: 696219
# cached_content_token_count: 696190
# candidates_token_count: 214
# total_token_count: 696433

print(response.text)

Caches auflisten

Im Cache gespeicherte Inhalte können weder abgerufen noch abgerufen werden, Cache-Metadaten (name, model, display_name, usage_metadata, create_time, update_time und expire_time).

Verwenden Sie CachedContent.list(), um Metadaten für alle hochgeladenen Caches aufzulisten:

for c in caching.CachedContent.list():
  print(c)

Cache aktualisieren

Sie können eine neue ttl oder expire_time für einen Cache festlegen. Sonstige Änderungen Informationen zum Cache wird nicht unterstützt.

Das folgende Beispiel zeigt, wie Sie den ttl eines Cache mithilfe von CachedContent.update().

import datetime

cache.update(ttl=datetime.timedelta(hours=2))

Cache löschen

Der Caching-Dienst bietet einen Löschvorgang zum manuellen Entfernen von Inhalten. aus dem Cache. Das folgende Beispiel zeigt, wie Sie einen Cache mit CachedContent.delete()

cache.delete()

Weitere Überlegungen

Beachten Sie bei der Verwendung von Kontext-Caching die folgenden Überlegungen:

  • Die Mindestanzahl der Eingabetokens für das Kontext-Caching beträgt 32.768 und das Maximum ist mit dem Maximalwert des gegebenen Modells identisch. (Weitere Informationen Tokens zählen, finden Sie im Leitfaden zu Tokens.
  • Das Modell unterscheidet nicht zwischen im Cache gespeicherten Tokens und regulären Tokens. Eingabetokens. Im Cache gespeicherte Inhalte sind einfach ein Präfix für die Aufforderung.
  • Es gibt keine speziellen Raten oder Nutzungslimits für das Kontext-Caching. der Standard Es gelten Ratenbegrenzungen für GenerateContent und Tokenlimits umfassen im Cache gespeicherte Daten Tokens.
  • Die Anzahl der im Cache gespeicherten Tokens wird im usage_metadata von der Vorgänge des Cache-Dienstes erstellen, abrufen und auflisten GenerateContent bei Verwendung des Cache.