Nutzung des Kontextcachings zur Optimierung der Verwendung von LLMs mit langen Texten

Erfahren Sie, wie Sie die Kontext-Caching-Funktion von Google in der Gemini-API nutzen können, um die Verwendung von LLM mit langen Texten zu optimieren, die Verarbeitungszeit und Kosten zu reduzieren. Lernen Sie die Implementierungsdetails und möglichen Vorteile für Entwickler, die auf der Gemini-API aufbauen.

20. Februar 2025

party-gif

Erschließen Sie die Kraft von LLMs mit langem Kontext mit Googles Gemini-API und ihrer neuen Kontextcaching-Funktion. Entdecken Sie, wie diese innovative Lösung die Verarbeitungszeit, Latenz und Kosten erheblich reduzieren kann, was es einfacher macht, große Datensätze in Ihren KI-Anwendungen zu nutzen. Erkunden Sie die praktischen Implementierungsdetails und erfahren Sie, wie Sie diese bahnbrechende Technologie effektiv nutzen können.

Verstehen Sie Caching und seine Vorteile

Die jüngste Einführung des Kontextcachings in die Gemini-API von Google zielt darauf ab, einige der Haupteinschränkungen von Sprach-Modellen mit langem Kontext (LLMs) anzugehen. Während LLMs eine erhebliche Menge an Informationen speichern können, leiden sie unter mehreren Problemen:

  • Erhöhte Verarbeitungszeit: Bei jeder Abfrage muss der gesamte Kontext an das LLM gesendet werden, was zu einer Verarbeitung einer großen Datenmenge und einer erhöhten Verarbeitungszeit führt.
  • Hohe Latenz: Die für jede Abfrage erforderlichen großen Datenübertragungen führen zu einer hohen Latenz.
  • Höhere Kosten: Da API-Anbieter basierend auf der Anzahl der Token abrechnen, führt die erhöhte Datenübertragung zu höheren Kosten.

Die Kontextcaching-Funktion von Google versucht, diese Probleme zu mildern. Hier ist, wie es funktioniert:

  1. Initialisierung des Caches: Sie stellen eine Systemanweisung oder einen großen Kontext (z.B. Dokumente, Videodateien, Audiodateien) bereit, den Sie cachen möchten.
  2. Cache-Identifikation: Jeder Cache hat einen eindeutigen Bezeichner, der als Name des Caches angesehen werden kann, und einen "Time-to-Live"-Parameter, um die Gültigkeitsdauer des Caches zu bestimmen.
  3. Cache-Abruf: Wenn die Gemini-API eine Benutzerabfrage erhält, analysiert sie die verfügbaren Cache-Datensätze, ruft den entsprechenden Cache ab und kombiniert ihn mit der Benutzerabfrage für die Verarbeitung.

Dieser Ansatz bietet mehrere Vorteile:

  • Reduzierte Verarbeitungszeit: Durch die Wiederverwendung der gecachten Daten muss das System nur die Benutzerabfrage verarbeiten, was die Gesamtverarbeitungszeit reduziert.
  • Geringere Latenz: Das Senden nur der Benutzerabfrage anstelle des gesamten Kontexts führt zu einer geringeren Latenz.
  • Kosteneinsparungen: Die Reduzierung der mit jeder Abfrage gesendeten Token führt zu niedrigeren Kosten.

Google behauptet, dass die Verwendung von Caching für bis zu 2.128.000 Token fast viermal geringere Kosten im Vergleich zum Senden des gesamten Kontexts mit jeder Abfrage ergeben kann.

Es ist wichtig zu beachten, dass es bei der Verwendung des Kontextcachings einige Einschränkungen und Überlegungen gibt:

  • Minimale Eingabe-Token-Anzahl: Die minimale Eingabe-Token-Anzahl für das Kontextcaching ist derzeit auf 32.000 Token festgelegt.
  • Maximale Token-Anzahl: Die maximale Anzahl der zu cachenden Token ist durch das maximale Kontextfenster des Modells begrenzt, das bei beiden Gemini Pro- und Flash-Modellen etwa 2 Millionen Token beträgt.
  • Speicherkosten: Es fallen Speicherkosten für die gecachten Inhalte an, die 1 $ pro Million Token pro Stunde betragen.

Insgesamt ist die Kontextcaching-Funktion in der Gemini-API von Google eine wertvolle Ergänzung, die die Leistung und Kosteneffizienz von LLM-basierten Anwendungen, insbesondere für diejenigen, die mit großen Mengen an Kontext umgehen, erheblich verbessern kann.

Erkunden Sie den Caching-Prozess

Die jüngste Einführung des Kontextcachings in die Gemini-API von Google zielt darauf ab, die Einschränkungen von Sprach-Modellen mit langem Kontext anzugehen. Durch das Cachen des Kontexts kann das System die mit dem Senden des gesamten Kontexts bei jeder Abfrage verbundene Verarbeitungszeit, Latenz und Kosten reduzieren.

Der Caching-Prozess funktioniert wie folgt:

  1. Initialisierung des Caches: Sie stellen eine Systemanweisung oder einen großen Kontext (z.B. Dokumente, Videodateien, Audiodateien) bereit, den Sie cachen möchten. Jeder Cache hat einen eindeutigen Bezeichner und einen "Time-to-Live"-Parameter, um die Gültigkeitsdauer des Caches zu bestimmen.

  2. Cache-Speicherung: Das interne Speichersystem der Gemini-API, das für einen schnellen Abruf optimiert ist, speichert die gecachten Daten.

  3. Abfrageverarbeitung: Wenn die Gemini-API eine Benutzerabfrage erhält, analysiert sie die verfügbaren Cache-Datensätze, identifiziert den entsprechenden Cache anhand des eindeutigen Bezeichners und überprüft die Gültigkeit des Caches, indem sie den "Time-to-Live"-Parameter überprüft. Die API kombiniert dann die gecachten Daten und die Benutzerabfrage als Eingabe für die Verarbeitung.

  4. Reduzierte Kosten und Latenz: Durch die Verwendung gecachter Daten reduziert das System die Anzahl der mit jeder Abfrage gesendeten Token, was zu einer geringeren Verarbeitungszeit und Kosten führt. Google schätzt, dass die Verwendung von Caching für bis zu 2.128.000 Token fast viermal geringere Kosten im Vergleich zum Senden des gesamten Kontexts mit jeder Abfrage ergeben kann.

  5. Speicherkosten: Die Speicherkosten für die gecachten Inhalte betragen 1 $ pro Million Token pro Stunde. Die Gesamtkosten hängen von Faktoren wie der Cache-Token-Anzahl und dem "Time-to-Live"-Parameter ab.

  6. Unterstützte Modelle: Das Kontextcaching wird derzeit sowohl von den Gemini Pro- als auch von den Gemini Flash-Modellen unterstützt.

  7. Minimale und maximale Token: Die minimale Eingabe-Token-Anzahl für das Kontextcaching beträgt 32.000 Token, und die maximale ist das maximale Kontextfenster des Modells, das bei beiden Gemini Pro- und Gemini Flash-Modellen etwa 2 Millionen Token beträgt.

Durch die Nutzung des Kontextcachings können Entwickler ihre Verwendung der Gemini-API optimieren, Kosten senken und die Leistung verbessern, insbesondere für Anwendungen, die häufige Abfragen auf großen Datensätzen erfordern.

Verstehen Sie Token-Limits und -Kosten

Bei der Verwendung der Kontextcaching-Funktion in der Gemini-API gibt es einige wichtige Überlegungen zu Token-Limits und Kosten:

  1. Minimale Eingabe-Token-Anzahl: Die minimale Eingabe-Token-Anzahl für das Kontextcaching beträgt 32.000 Token. Das bedeutet, dass Sie mindestens 32.000 Token cachen müssen, damit die Funktion funktioniert.

  2. Maximale Token-Anzahl: Die maximale Anzahl der zu cachenden Token ist das maximale Kontextfenster des jeweiligen Modells. Für beide Gemini Pro- und Flash-Modelle beträgt dies etwa 2 Millionen Token.

  3. Speicherkosten: Die Speicherkosten für die gecachten Inhalte betragen 1 $ pro Million Token pro Stunde. Diese Kosten kommen zusätzlich zu den regulären API-Nutzungsgebühren hinzu.

  4. Time-to-Live (TTL): Beim Erstellen eines Caches können Sie einen "Time-to-Live"-Parameter angeben, um zu bestimmen, wie lange der Cache aufbewahrt werden soll. Wenn Sie keinen Wert angeben, beträgt die Standardeinstellung 1 Stunde. Das Minimum für den TTL ist 60 Sekunden.

  5. Token-Anzahl: Bei der Verwendung der gecachten Inhalte umfasst die Gesamttokenzahl sowohl die gecachten Token als auch die neuen Eingabe-Token der Benutzerabfrage. Diese kombinierte Tokenzahl wird für die Abrechnung verwendet.

  6. Caching-Verfügbarkeit: Das Kontextcaching wird derzeit von beiden Gemini Pro- und Flash-Modellen unterstützt.

Durch das Verständnis dieser Token-Limits und Kostenüberlegungen können Sie die Kontextcaching-Funktion effektiv nutzen, um die Verarbeitungszeit und Kosten bei der Verwendung der Gemini-API zu reduzieren.

Implementieren Sie Caching mit Codebeispielen

Um das Caching mit der Gemini-API zu implementieren, müssen wir diese Schritte befolgen:

  1. Installieren Sie die erforderlichen Pakete:

    !pip install google-generative-ai-client pdfplumber
    
  2. Importieren Sie die notwendigen Module:

    from google.generative.v1 import GenerativeAIClient
    from google.generative.v1.types import CachedContent
    import markdown
    import pdfplumber
    
  3. Richten Sie den Gemini-API-Client mit Ihrem Google-API-Schlüssel ein:

    api_key = "your_google_api_key"
    client = GenerativeAIClient(credentials=api_key)
    
  4. Laden Sie den PDF-Inhalt und konvertieren Sie ihn in eine einzelne Zeichenkette:

    with pdfplumber.open("path/to/your/pdf/file.pdf") as pdf:
        pages = [page.extract_text() for page in pdf.pages]
        content = "\n".join(pages)
    print(f"Total pages: {len(pages)}")
    print(f"Total words: {len(content.split())}")
    print(f"Total tokens: {len(content.split())}")
    
  5. Erstellen Sie ein gecachtes Inhaltsobjekt und speichern Sie es:

    cached_content = CachedContent(
        model_name="gemini-1.5-flash",
        system_instruction="You are an expert on rack systems. Answer questions based on the provided text.",
        content=content,
        time_to_live_seconds=7200  # 2 hours
    )
    model = client.from_cached_content(cached_content, name="my-rack-system-cache")
    
  6. Verwenden Sie das gecachte Modell, um Fragen zu beantworten:

    queries = [
        "What is rack? What are the main components?",
        "How to use HuggingFace in LangChain? Provide code examples.",
        "How does routing work in LangChain?"
    ]
    
    for query in queries:
        response = model.generate_text(prompt=query)
        print(markdown.markdown(response.generated_text))
        print(f"Total tokens used: {response.total_tokens}")
    
  7. Verwalten Sie den Cache:

    # Update the cache time-to-live
    model.update_cached_content(time_to_live_seconds=14400)  # 4 hours
    
    # List all cached contents
    cached_contents = client.list_cached_contents()
    for cached_content in cached_contents:
        print(f"Name: {cached_content.name}")
        print(f"Created: {cached_content.created_timestamp}")
        print(f"Expires: {cached_content.expires_timestamp}")
    
    # Delete a cached content
    client.delete_cached_content(name="my-rack-system-cache")
    

Dieses Beispiel zeigt, wie Sie das Caching mit der Gemini-API implementieren, einschließlich des Ladens von Inhalten aus einer PDF-Datei, des Erstellens eines gecachten Inhaltsobjekts, der Verwendung des gecachten Modells zum Beantworten von Fragen und der Verwaltung des Caches (Aktualisieren der Time-to-Live und Löschen von gecachten Inhalten).

Verwalten Sie Cache-Updates und -Ablauf

Um Cache-Updates und -Ablauf zu verwalten, werden die folgenden Schlüsselpunkte behandelt:

  1. Aktualisieren der Cache-Time-to-Live (TTL): Sie können die TTL eines Caches aktualisieren, indem Sie die update()-Funktion auf dem Cache-Objekt aufrufen und einen neuen TTL-Wert angeben. Dadurch können Sie die Ablaufzeit der gecachten Inhalte verlängern.

  2. Anzeigen von Cache-Metadaten: Obwohl Sie den gecachten Inhalt nicht direkt abrufen oder anzeigen können, können Sie auf Metadaten über den Cache zugreifen, wie die Gesamtzahl der verwendeten Token, die Anzahl der Token aus der Eingabeaufforderung und die Anzahl der vom Modell generierten Kandidaten-Token.

  3. Auflisten von gecachten Inhalten: Sie können alle von Ihnen erstellten gecachten Inhalte auflisten, indem Sie auf das cache_contents-Attribut des Gemini-Clients zugreifen. Hier sehen Sie die Namen, Erstellungszeiten und Ablaufzeiten jedes Caches.

  4. Löschen von Caches: Wenn Sie einen Cache vor Ablauf seiner Gültigkeitsdauer löschen möchten, können Sie die delete()-Funktion auf dem Cache-Objekt aufrufen. Dadurch werden die gecachten Inhalte aus dem System entfernt.

Durch das Verwalten von Cache-Updates und -Ablauf können Sie die Nutzung der Caching-Funktion optimieren, um Kosten zu senken und die Leistung bei der Arbeit mit der Gemini-API zu verbessern.

Schlussfolgerung

Die Einführung des Kontextcachings in der Gemini-API von Google ist eine bedeutende Entwicklung, die einige der Haupteinschränkungen von Sprach-Modellen mit langem Kontext angeht. Indem Benutzern ermöglicht wird, große Mengen an Kontextdaten zu cachen, kann die API die Verarbeitungszeit reduzieren, die Latenz senken und die mit der Token-basierten Abrechnung verbundenen Kosten senken.

Das Caching-System funktioniert, indem es Benutzern ermöglicht, einen Cache mit einem großen Dat

FAQ