Business
Lesedauer: 7 Minuten

Kostengünstige LLM-Anwendungen mit dem LangChain Framework erstellen

LLM-Applikationen sollten kein Vermögen kosten. Mit dem LangChain Framework ist es in der Tat möglich, LLMs schnell und kostengünstig zu implementieren. In diesem Artikel gehen wir auf die Herausforderungen ein, die mit der Einführung von LLMs verbunden sind, und wie man ihre Leistung verbessern kann. Außerdem stellen wir die verschiedenen Komponenten und Werkzeuge von LangChain vor, die die Entwicklung und Bereitstellung von LLM-Anwendungen vereinfachen.
Verfasst von
David Schoch
Veröffentlicht am
July 26, 2024
Zeit lesen
Lesedauer: 7 Minuten

Kosten und Zeit sind zwei der Hauptanliegen von Unternehmen bei der Entwicklung von LLM-Anwendungen. Die Implementierung von LLM erfordert mehr Ressourcen als die herkömmliche Anwendungsentwicklung. Mit dem richtigen Ansatz kann die Entwicklung und Bereitstellung von LLM-Anwendungen jedoch schnell und kostengünstig erfolgen.

Wir haben uns bereits mit der besten Strategie für die Implementierung von KI befasst, die auf der Nutzung dessen basiert, was bereits vorhanden ist, und nicht auf der Entwicklung von KI von Grund auf. In diesem Artikel beschreiben wir, wie unser Team bei Modeso KI-fähige Anwendungen erstellt. Dabei verwenden wir grundlegende LLMs wie GPT-4 von OpenAI und das LangChain Framework, das es uns ermöglicht, Sprachmodelle in unsere Lösungen zu integrieren.

Aber lassen Sie uns zunächst kurz darüber sprechen, was LLMs sind und wie sie funktionieren.

Was Sie über LLMs wissen sollten

LLMs, oder Large Language Models, sind Deep Learning Modelle, die auf großen Datenmengen zur Erkennung und Generierung von Text trainiert werden. Von der Textübersetzung bis hin zum Schreiben von Code können LLMs für verschiedene Aufgaben trainiert werden. Über Textnachrichten, auch Prompts genannt, können Benutzer mit den Sprachmodellen interagieren. Hier sehen Sie, was mit einem Prompt im LLM passiert.

Bevor ein LLM einen Prompt (Text) verarbeiten kann, wird dieser Text in kleinere Unterworteinheiten, sogenannte Token, zerlegt. Diese Token werden an den LLM gesendet. Der LLM fungiert als „Black Box“, die jegliche Logik hinter seinen Entscheidungen verbirgt.

Beispiele für LLMs sind GPT-4, Claude 2, Gemini, Jurassic-1, Command, LLaMA 3 und andere.

Nehmen wir zum Beispiel Gemini. Dies ist eine Suite von LLMs von Google. Um Sprachmuster zu verstehen, wurden diese Modelle ursprünglich mit großen Textdaten trainiert. Zur Verbesserung ihrer Fähigkeiten wurde Gemini mit zusätzlichen multimodalen Daten verfeinert, so dass es in der Lage ist, verschiedene Arten von Inhalten wie Text und Bilder zu verarbeiten und darauf zu reagieren.

Ein weiteres Beispiel ist OpenAI. Die Modelle von OpenAI wurden auf öffentlich zugänglichen Daten, auf Daten, die von Dritten lizenziert wurden, und auf Daten, die von Menschen zur Verfügung gestellt wurden, trainiert, aber diese Modelle haben keinen Zugriff auf die ursprünglichen Datensätze. Um Antworten zu generieren, haben sie stattdessen Muster, Strukturen und Assoziationen zwischen Wörtern und Sätzen gelernt. Man stelle sich eine Person vor, die einen Aufsatz schreibt, der auf dem basiert, was sie gelernt hat. Sie zitiert nicht Wort für Wort aus einem Buch.

LLMs können unvorhersehbare oder irrelevante Antworten geben, obwohl sie mit großen Mengen qualitativ hochwertiger Daten trainiert wurden. Es folgen einige Herausforderungen, die Sie berücksichtigen sollten, wenn Sie versuchen, LLMs in Ihre Anwendung zu integrieren.

Herausforderungen bei der Arbeit mit LLMs

Wenn Sie sich einige beliebte Beispiele von LLM-basierenden Lösungen wie ChatGPT anschauen, werden Sie unten einen kleinen Disclaimer finden: „ChatGPT kann Fehler machen. Überprüfen Sie wichtige Informationen“.

LLMs sind so konzipiert, dass sie in jedem Fall Ausgaben erzeugen. Zum Beispiel, wenn das Sprachmodell nicht genug Kontext hat, um dem Benutzer eine genaue Antwort zu geben, wird es immer noch eine Ausgabe erzeugen, die nicht im Einklang mit der Absicht des Benutzers ist.

Die häufigsten Fehler, die ein LLM bei der Erzeugung von Ausgaben machen kann, sind folgende:

  • Falsche Informationen liefern, wenn das Modell die Antwort nicht kennt. Wenn LLMs mit einer Eingabe konfrontiert werden, auf die sie keine Antwort geben können, beginnen sie zu halluzinieren und erzeugen ungenaue oder sogar falsche Antworten.
  • Sie liefern überholte Informationen. Die Wissensbasis von LLMs wird nicht in Echtzeit aktualisiert, so dass sie unter Umständen nicht in der Lage sind, Ergebnisse zu liefern, die sich auf aktuelle Ereignisse beziehen.
  • Sie erzeugen verzerrte Antworten. Da Sprachmodelle auf der Grundlage von öffentlich zugänglichen Daten trainiert werden, können sie versehentlich Antworten generieren, die auf unzuverlässigen oder nicht vertrauenswürdigen Quellen basieren, was zu falschen Informationen oder zu einer verzerrten Sichtweise führen kann.
  • Ungenaue Antworten aufgrund terminologischer Verwirrung. Zum Beispiel kann ein LLM einen bestimmten Begriff falsch interpretieren und ein falsches Ergebnis erzeugen, wenn dieser Begriff für verschiedene Konzepte verwendet wird.

Entwickler verwenden Retrieval-Augmented Generation (RAG), um einige dieser Herausforderungen zu bewältigen. Bei Modeso haben wir praktische Erfahrung mit der Implementierung von RAG. Lesen Sie hier, warum wir glauben, dass diese Technik nicht fehlen darf, um LLM-basierte Lösungen zu entwickeln.

RAG - der beste LLM Begleiter

Durch die Bereitstellung neuer Informationen aus externen Quellen erweitert RAG die bereits leistungsstarken Fähigkeiten von LLMs. Die neuen nutzerspezifischen Daten, die von RAG extrahiert werden, werden in Kombination mit dem Wissen des Modells verwendet, um eine aktuellere und kontextuellere Ausgabe zu erzeugen.

Quelle

RAG ermöglicht es Entwicklern, das LLM mit externen Datenquellen zu verknüpfen, z.B. mit internen Unternehmensdatenbanken oder Multimedia-Repositories. Die Daten aus diesen externen Datenquellen müssen jedoch zunächst in ein einheitliches Format konvertiert werden, damit der LLM sie interpretieren kann. Wie das mit RAG geht, erfahren Sie hier.

Wie RAG funktioniert

Ein typischer RAG-Workflow besteht aus drei Phasen: Indizierung, Retrieval und Generierung. Betrachten wir jede Phase etwas genauer.

Indizierung

Zuerst werden die Daten in kleinere Teile, so genannte Chunks, zerlegt. Bei diesen Chunks kann es sich um Sätze, Absätze oder beliebige logische Datensegmente handeln. Jeder Chunk ist Gegenstand einer Einbettung und einer Speicherung in einer Datenbank. So kann das System in seiner Wissensdatenbank nach relevanten Informationen suchen und genauere Antworten generieren.

Anfrage

Nach der Eingabe einer Anfrage durch den Benutzer wird die Anfrage ebenfalls in eine Einbettung umgewandelt. Um die für die Anfrage des Benutzers relevantesten Teile abzurufen, vergleicht das System die Einbettung der Anfrage mit den Einbettungen in der Datenbank.

Generierung

Die relevantesten Einbettungen werden mit der ursprünglichen Anfrage kombiniert und an das LLM gesendet. Diese erweiterte Eingabe wird vom Modell verarbeitet, um eine kontextbezogenere Ausgabe zu erzeugen.

Quelle

Um das System nicht mit unnötigen Daten zu belasten, wählt RAG nur relevante Informationen aus, die zum Kontext passen. Dies hat eine Verringerung der Anzahl der Token zur Folge, die vom LLM verarbeitet werden müssen, und eine Senkung der Kosten.

Bei der Entwicklung von LLM-basierten Anwendungen implementieren Entwickler häufig RAG-Systeme. Für eine effiziente Implementierung verwenden wir das LangChain Framework, eine Suite von Werkzeugen, die den Entwicklungsprozess vereinfachen.

Warum LangChain für die Implementierung von RAG?

LangChain ist ein Open Source Framework. Es vereinfacht den Entwicklungsprozess von LLM-basierten Anwendungen. Es bietet einen umfassenden Satz von RAG-Bausteinen, wie z.B. Dokumentenlader, Einbettungsmodelle und Retriever. Diese machen die Implementierung von RAG-Systemen für Entwickler schneller und einfacher.

Drei Hauptkomponenten von LangChain sind für die Entwicklung von KI-basierten Anwendungen entscheidend: Model I/O, Retrieval und Composition. Obwohl es möglich ist, den benötigten Code manuell zu schreiben, vereinfachen diese Werkzeuge die Entwicklung und reduzieren den Arbeitsaufwand erheblich. Betrachten wir diese Komponenten von LangChain im Detail.

Model I/O

Model I/O ist ein Satz von Werkzeugen zur Formatierung und Verwaltung der Ein- und Ausgabe von Sprachmodellen. Das Toolset hilft bei der Übersetzung der technischen Elemente der Anwendung, wie Variablen und Datenstrukturen, in eine für den LLM verständliche Form. Nach der Verarbeitung empfängt es die Ausgabe des LLM und formatiert sie neu, um sie an die Anforderungen der Anwendung anzupassen.

Quelle

Abruf

Eine weitere Schlüsselkomponente ist der Retrieval-Mechanismus. Er hilft dabei, relevante Informationen aus einer Wissensdatenbank abzurufen, um das LLM mit zusätzlichem Kontext zu versorgen.

RAG wandelt Daten aus verschiedenen Quellen in ein numerisches Format um, ebenso wie die Benutzeranfrage. Diese Eingabe wird dann mit den Daten verglichen, mit denen das LLM trainiert wurde, um die relevantesten Informationen zu identifizieren. Diese werden dann verwendet, um die Eingabe zu erweitern, bevor sie an das Modell weitergegeben wird.

Sobald die Eingabeaufforderung um relevante Teile aus dem Datenspeicher erweitert wurde, wird sie an den LLM gesendet. Aus dieser erweiterten Benutzereingabe und den ursprünglichen Trainingsdaten des LLM wird dann die endgültige Ausgabe generiert.

Quelle

Komposition

Um die Funktionalität, Flexibilität und Effizienz der RAG-Pipeline zu erhöhen, bietet LangChain Komposition Werkzeuge, um externe Systeme, wie Datenbanken und APIs, mit den Kernprimitiven von LangChain zu verbinden.

Um zu verstehen, wie Komposition funktioniert, hier ein Beispiel. Nehmen wir an: Ein Benutzer muss berechnen, wie viel eins plus eins ist. Die KI identifiziert die Parameter anhand der Eingabeaufforderung des Benutzers („add one plus one“) und ruft dann das Werkzeug auf, das die Addition durchführt. Nachdem die KI das entsprechende Werkzeug aufgerufen hat, empfängt das LLM das Ergebnis und stellt es dem Benutzer zur Verfügung.

Composition ist nicht auf Mathematik und Berechnungen beschränkt. Mit diesem Tool können LLMs auch mit Quellen wie Wikipedia verbunden werden. Dies erweitert ihre Möglichkeiten, Fragen zu beantworten, Informationen bereitzustellen und an komplexeren Konversationen teilzunehmen.

Um dem LLM die Fähigkeiten externer Werkzeuge hinzuzufügen, bietet LangChain Composition drei Komponenten: Agenten, Ketten und Werkzeuge.

Agenten

Bei den Agenten handelt es sich um spezialisierte Komponenten, die die LLM nutzen, um zu entscheiden, welche Aktion als Antwort auf die Anfrage des Benutzers ausgeführt werden soll und in welcher Reihenfolge. Vereinfacht ausgedrückt ist ein Agent für die Entscheidung zuständig, welches Werkzeug auf Basis der Benutzereingabe aufgerufen werden soll. Mit LangChain können Entwickler verschiedene Arten von Agenten erstellen, wie z.B. einen Tool Calling Agent, einen XML Agent, einen Structured Chat Agent und viele mehr.

Quelle

Werkzeuge

Hierbei handelt es sich um Schnittstellen, über die LangChain-Agenten und -Ketten mit Informationen außerhalb der Trainingsdaten des LLM interagieren können. Für die Verbindung zu Google Drive, Bing Search, YouTube und anderen Diensten stehen integrierte Tools zur Verfügung. LangChain bietet auch Sammlungen von Werkzeugen, die zusammenarbeiten, um bestimmte Aufgaben zu erfüllen.

Ketten

Im Gegensatz zu Agenten, bei denen das LLM als Denkmaschine für die Entscheidung über die auszuführenden Aktionen dient, ist die Reihenfolge der Aktionen in Ketten fest codiert. Dies ist eine Reihe von automatisierten Aktionen, wie z.B. das Aufnehmen eines Videos, das Konvertieren in ein anderes Format, das Hinzufügen der Ergebnisse zu einem Speichersystem und das Abrufen verwandter Informationen aus der Datenbank zum Einfügen in die abschließende Eingabeaufforderung.

Wenn Sie eine LLM-basierte Anwendung entwickeln möchten, können Sie den Entwicklungsprozess mit LangChain beschleunigen. Dieses Framework ermöglicht es Entwicklern, ihre Anwendungen in einer Reihe klar definierter Schritte zu erstellen, was Zeit und Budget spart.

Bevor wir uns dem Deployment zuwenden, gibt es noch ein wichtiges Thema zu besprechen. Vektordatenbanken.

Vektordatenbanken als Schlüssel zur schnelleren Ähnlichkeitssuche

Wie bereits erwähnt, werden für die Suche numerische Repräsentationen (eingebettet) von Daten in speziellen Vektordatenbanken gespeichert, die eine effiziente Suche ermöglichen. Diese Datenbanken ermöglichen eine effiziente Suche nach relevanten Informationen. Die numerischen Daten werden in Tabellen organisiert, die nach Ähnlichkeiten durchsucht werden können.

Eine der populärsten Vektordatenbanken ist Pinecone. Für die Verarbeitung von Vektoreinbettungen bietet sie effiziente und skalierbare Speicherlösungen. Pinecone bietet drei verschiedene Pakete für unterschiedliche Anforderungen an: das Starter-Paket (ein kostenfreies Paket für Anfänger oder kleine Projekte), das Standard-Paket (für produktive Anwendungen jeder Größenordnung) und das Enterprise-Paket (für unternehmenskritische produktive Anwendungen). Die Preise für den Standard und Enterprise Plan finden Sie hier.

Sie können auch kostenlose Alternativen wie Chroma verwenden. Chroma ist eine Open-Source-Vektordatenbank. Damit können Sie Vektorgrafiken speichern und verwalten. Während Pinecone aufgrund seiner fortgeschrittenen Funktionen oft die erste Wahl ist, ist Chroma eine flexiblere und kostengünstigere Alternative, die Sie bei der Entwicklung von LLM-Anwendungen in Betracht ziehen sollten.

Unabhängig davon, ob Sie mit Chroma, Pinecone oder einer anderen Datenbank arbeiten, bietet LangChain eine flexible Schnittstelle für den nahtlosen Wechsel zwischen Vektordatenbanken. Ohne den gesamten Code neu schreiben zu müssen, können Sie mit einer kostenlosen Option beginnen und später aufrüsten oder zwischen den Diensten wechseln.

An diesem Punkt haben wir fast alles besprochen, um zu wissen, wie man LLM-basierte Anwendungen entwickelt. Das Einzige, was noch zu besprechen ist, ist die Art und Weise, wie man sie den Benutzern zur Verfügung stellt.

Eine LLM-basierte Lösung bereitstellen

Es gibt mindestens zwei Möglichkeiten, eine LLM-basierte Anwendung bereitzustellen:

  1. Nutzung der LangChain-Dienste (LangServe und LangSmith) oder
  2. Erstellung eines benutzerdefinierten Backends und Bereitstellung auf einer Plattform wie der Google Cloud Platform.

Um Ihnen bei der Abwägung der Vor- und Nachteile der einzelnen Optionen zu helfen, werfen wir einen Blick auf jede der beiden Möglichkeiten.

Nutzung von LangServe und LangSmith

Zusätzlich zu den kostenlosen Tools bietet LangChain die Dienste LangServe und LangSmith an. LangServe ist eine Bibliothek, die den Einsatz von LLM-Anwendungen vereinfacht. Sie hilft Ihnen, Ihre KI-Komponenten als REST-API zur Verfügung zu stellen, während der Rest Ihrer Anwendung nahtlos auf diese KI-Komponenten zugreifen kann. Auf diese Weise verwandelt LangServe Ihre LLM-Anwendung in einen API-Server, ohne dass eine separate Einrichtung erforderlich ist, um die LLM-Anwendung bereitzustellen.

LangSmith ist eine All-in-One-Plattform, um LLM-basierte Anwendungen zu entwickeln, bereitzustellen und zu überwachen. Das Tool bietet ein Überwachungs-Dashboard, mit dem Sie verfolgen können, was in Ihrer Anwendung passiert. Dazu gehören Verbrauchsmetriken für verschiedene Tools und Nutzungsmuster, die Entwicklern helfen, Bereiche zu identifizieren, in denen Verbesserungen erforderlich sind.

Bei LangSmith handelt es sich um einen kostenpflichtigen Dienst, der  Preispläne für verschiedene Teams bietet.

Erstellung eines eigenen Python-Backends

Die zweite Möglichkeit besteht darin, eine Python-Backend-Anwendung zu erstellen und diese auf der Google Cloud Platform (GCP) bereitzustellen. Bei Modeso verwenden wir GCP für die meisten Anwendungen, was uns die Verwaltung von Paketierung, Bereitstellung und Überwachung innerhalb des Cloud-Ökosystems ermöglicht.

Bei einem benutzerdefinierten Ansatz fehlen zwar die speziellen Überwachungswerkzeuge von LangSmith, aber Sie haben die volle Kontrolle über die Bereitstellung und Anpassung.

Abhängig von Ihren Projektanforderungen wählen Sie die passende Bereitstellungsoption. Die Nutzung von LangServe/LangSmith ist mit zusätzlichen Kosten verbunden, aber Sie erhalten die Funktionalität, um den Entwicklungsprozess zu rationalisieren. Andererseits, warum sollten Sie dafür bezahlen, wenn Sie diese Funktionalität im Moment nicht benötigen? Sie können jederzeit mit einem benutzerdefinierten Python-Backend beginnen. Sie können später auf LangServe/LangSmith umsteigen, wenn Sie diese Werkzeuge benötigen.

Fazit

Dies war ein kurzer Überblick über die Erstellung von kontextabhängigen LLM Anwendungen, die dynamisch auf die Anforderungen des Benutzers reagieren. Möchten Sie ein KI-basiertes Projekt entwickeln? Lassen Sie uns über die nächsten Schritte sprechen.

INHALTSVERZEICHNIS
Wöchentlicher Newsletter
Kein Spam. Nur die neuesten Veröffentlichungen und Tipps, interessante Artikel und exklusive Interviews jede Woche in Ihrem Posteingang.
Lesen Sie mehr über unsere Datenschutzrichtlinie.
Danke! Deine Einreichung ist eingegangen!
Hoppla! Beim Absenden des Formulars ist etwas schief gelaufen.
Header image
Präferenzen

Datenschutz ist uns wichtig, daher haben Sie die Möglichkeit, bestimmte Speicherarten zu deaktivieren, die für das grundlegende Funktionieren der Website möglicherweise nicht erforderlich sind. Das Blockieren von Kategorien kann sich auf Ihre Erfahrung auf der Website auswirken. Mehr Informationen

Alle Cookies akzeptieren

Diese Elemente sind erforderlich, um grundlegende Funktionen der Website zu aktivieren.

Immer aktiv

Diese Artikel werden verwendet, um Werbung anzuzeigen, die für Sie und Ihre Interessen relevanter ist.

Diese Elemente ermöglichen es der Website, sich an Ihre Entscheidungen zu erinnern (z. B. Ihren Benutzernamen, Ihre Sprache oder die Region, in der Sie sich befinden), und erweiterte, persönlichere Funktionen bereitzustellen.

Diese Elemente helfen dem Website-Betreiber zu verstehen, wie seine Website funktioniert, wie Besucher mit der Website interagieren und ob möglicherweise technische Probleme vorliegen.

Danke! Deine Einreichung ist eingegangen!
Hoppla! Beim Absenden des Formulars ist etwas schief gelaufen.