Prompt-Caching ist eine Möglichkeit, die Antworten, die aus ausgeführten Prompts generiert wurden, zu speichern und dann wiederzuverwenden, wenn Sie mit Sprachmodellen wie IBM Granite-Modellen arbeiten. Wenn dieselbe Eingabe (Prompt) noch einmal auftritt, ruft die Anwendung die zuvor gespeicherte Antwort im Prompt-Cache ab, anstatt einen neuen API-Aufruf durchzuführen.
Stellen Sie sich Prompt-Caching als eine Art „Gedächtnis“ für Ihre Anwendung vor. Das System behält Ergebnisse früherer Abfragen bei, um Rechenzeit zu sparen, da keine wiederholten Abfragen für dieselbe Eingabe gestellt werden müssen.
Das Prompt-Caching ist wichtig, weil es wiederholte Aufrufe der Programmierschnittstelle (API) vermeidet, indem vorhandene Antworten für identische wiederholte Prompts wiederverwendet werden. Dies führt zu schnelleren Reaktionszeiten, konstanter Ausgabe und geringerer Nutzung der API, was hilfreich ist, um die Ratengrenzen einzuhalten. Es hilft auch, den Datenfluss zu skalieren und ausfallsicher zu gestalten. Prompt-Caching ist eine kritische Funktion, die einen Mehrwert für jede kostengünstige, effiziente und benutzerfreundliche KI-Anwendung bietet.
Sie benötigen ein IBM Cloud-Konto, um für das Erstellen eines watsonx.ai- Projekts.
Sie benötigen außerdem Python Version 3.12.7
Sie können zwar aus mehreren Tools wählen, aber dieses Tutorial führt Sie durch die Einrichtung eines IBM Kontos für die Verwendung eines Jupyter Notebook.
Melden Sie sich bei watsonx.ai mit Ihrem IBM Cloud-Konto an.
Erstellen Sie ein watsonx.ai-Projekt. Sie können Ihre Projekt-ID in Ihrem Projekt abrufen. Klicken Sie auf die Registerkarte „Verwalten“. Kopieren Sie dann die Projekt-ID aus dem Abschnitt „Details“ der Seite „Allgemein“. Sie benötigen diese ID für dieses Tutorial.
Erstellen Sie ein Jupyter Notebook. Dieser Schritt öffnet eine Jupyter Notebook-Umgebung, in die Sie den Code aus diesem Tutorial kopieren können. Alternativ können Sie dieses Notebook auf Ihr lokales System herunterladen und als Asset in Ihr watsonx.ai-Projekt hochladen. Weitere Granite-Tutorials finden Sie in der IBM Granite-Community.
Erstellen Sie eine Instanz des watsonx.ai Runtime Service (wählen Sie den Lite-Plan als kostenlose Instanz).
Generieren Sie einen API-Schlüssel.
Verknüpfen Sie den watsonx.ai Runtime Service mit dem Projekt, das Sie in watsonx.ai erstellt haben.
Wir benötigen Bibliotheken, um mit dem Langchain-Framework und WatsonxLLM zu arbeiten. Lassen Sie uns zuerst die erforderlichen Pakete installieren. Dieses Tutorial wurde mit Python 3.12.7 erstellt
Hinweis: Wenn Sie eine ältere Version von pip verwenden, können Sie den Befehl pip install --upgrade pip verwenden, um die neuesten Pakete, die möglicherweise nicht mit älteren Versionen kompatibel sind, ganz einfach zu installieren. Wenn Sie jedoch bereits die neueste Version verwenden oder kürzlich ein Upgrade Ihrer Pakete durchgeführt haben, können Sie diesen Befehl überspringen.
Das os-Modul wird verwendet, um auf Umgebungsvariablen zuzugreifen, z. B. auf Projektanmeldeinformationen oder API-Schlüssel.
WatsonxLLM ist ein Modul von langchain_ibm, das IBM Watson LLM für die Generierung von Ausgaben von generativen KI-Modellen integriert.
ChatWatsonx Ermöglicht chatbasierte Interaktionen durch Verwendung von IBM watsonx über LangChain.
SimpleDirectoryReader dient zum Laden und Lesen von Dokumenten aus einem Verzeichnis zur Indizierung mit LlamaIndex.
GenParams enthält Metadatenschlüssel zum Konfigurieren der Parameter der Watsonx-Textgenerierung.
SQLiteCache ermöglicht die Einrichtung einer local.cache.db SQLite-Datenbank, um redundante API-Aufrufe zu vermeiden und die Entwicklung und das Testen zu beschleunigen.
Für dieses Tutorial benötigen wir mehrere Bibliotheken und Module. Stellen Sie sicher, dass Sie die folgenden importieren. Falls sie nicht installiert sind, kann eine schnelle Pip-Installation das Problem beheben.
Dieser Code richtet die Zugangsdaten für den Zugriff auf die IBM Watson Machine Learning (WML) API ein und stellt sicher, dass die Projekt-ID korrekt konfiguriert ist.
Dieser Code initialisiert das IBM Watson LLM zur Verwendung in der Anwendung:
Weitere Informationen zu Modellparametern wie den minimalen und maximalen Token-Grenzwerten finden Sie in der Dokumentation.
SQLiteCache ist ein persistentes Caching-Tool von LangChain, das Antworten von LLM-Aufrufen in einer SQLite-Datenbankdatei speichert. SQLiteCache verkürzt auf intelligente Weise die CPU-Zeit, indem es kostspielige Berechnungen speichert. Das bedeutet, dass es sich auf das Abrufen von Daten konzentriert, anstatt sie neu zu berechnen. Anstatt den gesamten Prozess noch einmal zu durchlaufen, werden einfach die Ergebnisse von der Festplatte abgerufen – das System ist daher effizient, zuverlässig und wiederverwendbar.
Die Abbildung veranschaulicht mit Prompt-Caching, wie Ergebnisse sofort von der Festplatte geladen werden. Ohne sie verschwendet jede Abfrage Zeit mit redundanten Berechnungen.
In diesem Fall arbeitete die CPU nur 22 ms, die tatsächlich verstrichene Zeit betrug jedoch 1,43 Sekunden.
Dieses Beispiel deutet darauf hin, dass die meiste Zeit mit Warten verbracht wurde, wahrscheinlich auf E/A-Vorgängen (z. B. Lesen und Schreiben der Festplatte, Netzwerkzugriff oder API-Aufrufe).
Führen wir das Modell nun ein zweites Mal mit dem Prompt aus und sehen uns die Antwortzeit an.
Mit SQLiteCache wird die CPU eindeutig nur 7,26 ms ausgelastet, die Wall Time jedoch betrug 6,15 Sekunden.
Dies weist eindeutig auf die Blockierung externer Abhängigkeiten hin (z. B. das Warten auf eine Antwort von einem Server).
Prompt-Caching beschleunigt und reduziert die Kosten von API-Anfragen an große Sprachmodelle wie GPT-4o. Prompts speichern Inhalte im Cache, wie z. B. Eingabe-Token, Ausgabe-Token, Einbetten und Nachrichten von Benutzern, ein Prompt oder die Ausgabe einer Funktion, die nun einen zwischengespeicherten Inhalt im Gegensatz zu Netzwerkanfragen für eine neue Revision verwendet. Diese Methode sorgt für niedrigere Preise, eine optimierte Antwortlatenz und verbesserte Leistungsindikatoren (KPIs).
Prompt-Caching kann für Chatbots, RAG-Systeme, Feinabstimmung und Code Assistants von Vorteil sein. Eine robuste Caching-Strategie, die Funktionen wie Cache-Lesen, Cache-Schreiben, Systemnachricht, Cache-Kontrolle und richtige Time-to-Live (TTL) umfasst, verbessert die Cache-Trefferraten und senkt die Cache-Miss-Raten.
Die konstante Verwendung derselben Prompt-Token, Prompt-Präfixe und Systemanweisungen trägt zu einer konstanten Prompt-Leistung bei Multiturn-Konversationen und nachfolgenden Anfragen bei. Unabhängig davon, ob Sie Python, ein SDK oder die Zusammenarbeit mit OpenAI oder einem anderen Anbieter verwenden, können Sie mit einem Verständnis der Funktionsweise von Prompt-Caching dieses für viele Anwendungsfälle besser implementieren.