Anwenden großer Sprachmodelle

May 02 2023
Einführung
OpenAI ChatGPT hat die Welt im Sturm erobert. Die beispiellose Akzeptanzrate bei den Benutzern wurde durch beispiellose Experimente der Entwicklergemeinschaft mit der API ergänzt.

OpenAI ChatGPT hat die Welt im Sturm erobert. Die beispiellose Akzeptanzrate bei den Benutzern wurde durch beispiellose Experimente der Entwicklergemeinschaft mit der API ergänzt. Es vergeht kein einziger Tag, an dem nicht nur ein oder zwei, sondern mehrere PoCs auf Blogs veröffentlicht oder getwittert werden. Diese werden dann von einer anderen Gruppe von Entwicklern verbessert, was den Tech-Rausch anheizt.

Auch die Entwicklung neuer Large Language Models (LLMs) hat sich stark beschleunigt. Neuere Modelle werden von Firmen angekündigt oder als Open-Source-Version bereitgestellt. Viele Open-Source-Projekte sind verfügbar oder wurden gestartet, um verschiedene Facetten der Problemstellung zu lösen, vom Training benutzerdefinierter Modelle bis hin zu Feinabstimmung, Datenkorpus usw.

Gleichzeitig hat die Entwicklergemeinschaft zügig daran gearbeitet, Frameworks zu veröffentlichen, die den Umgang mit LLM erleichtern würden. Frameworks wie LangChain und Llama Index bieten Standardcode und Frameworks, die viele allgemeine und spezifische Fälle lösen. Darüber hinaus kann man damit eigene komplexe Anwendungsfälle erstellen.

Wir sehen also, dass sich die gesamte Landschaft in einem außerordentlich schnellen Tempo entwickelt. Tatsächlich veröffentlichen Frameworks wie LangChain alle paar Tage eine Nebenversion.

Anwendung von OpenAI

Die riesigen Trainingsdaten von OpenAI LLM ermöglichen ihnen den Zugriff auf einen überaus großen Wissenskorpus. Dies macht sie von Natur aus ideal für die Bearbeitung inhaltsbasierter Anwendungsfälle.

Einige Anwendungsfälle, in denen sie bereits angewendet wurden, sind:

  • Zusammenfassung
  • Content-Anreicherung
  • Titelerstellung
  • Umformulierung
  • Erstellen mehrerer Formate wie Kurzform, Tweets, Präsentationspunkte usw.

In den oben genannten Fällen wurden die sprachlichen Fähigkeiten des LLM genutzt, um inhaltliche Arbeiten zu lösen oder zu unterstützen.

Weitere Anwendungsfälle, bei denen das inhärente Wissen des LLM genutzt wird, sind:

  • Generierung von Quizinhalten
  • Umfragen oder Umfragefragebogen.

Das Übergeben eines Eingabekontexts und das Beantworten von Fragen dazu ist eine Aufgabe, mit der sich LLMs sehr gut auskennen. Diese Funktion wird für viele Inhalte verwendet, beispielsweise für die Beantwortung von Fragen zu Langformartikeln oder PDF-Dokumenten.

Die Gesamtlösung besteht darin, eine Eingabeaufforderung im folgenden allgemeinen Format zu erstellen:

Kontext:

Das Ziro-Tal in Arunachal Pradesh ist die Heimat des Apatani-Stammes und bekannt für seine malerischen Talblicke. Ziro liegt etwa 167 km von der Hauptstadt Itanagar entfernt und die Fahrt dorthin ist eine der landschaftlich schönsten Fahrten, die Sie in Arunachal Pradesh erleben werden. Das Tal ist von üppigen grünen Wäldern und Terrassenhöfen umgeben, die zu jeder Jahreszeit atemberaubend aussehen. Wenn man die sanften Bäche am Straßenrand betrachtet, spürt man in Ziro ein Gefühl der Ruhe. Kein Wunder, ist das Tal doch einer der meistbesuchten Orte in Arunachal Pradesh.

Diese idyllische Umgebung des Ziro-Tals ist einer der Hauptgründe, warum das jährliche Ziro-Musikfestival hier inmitten der grünen Wiesen stattfindet. Der Veranstaltungsort des Festivals ist einer der schönsten Veranstaltungsorte in Indien. Musikliebhaber aus ganz Indien und der ganzen Welt kommen wegen des Festivals und der tollen Stimmung hierher.

Sofortige Anweisungen: Beantworten Sie die folgende Frage in 100 Wörtern aus dem oben angegebenen Kontext

Frage: Wie weit ist Ziro von der Hauptstadt entfernt?

Antworten:

Das LLM liefert die Antwort auf die Anfrage aus dem bereitgestellten Kontext. Um das gewünschte Ergebnis zu erhalten, muss man an der Eingabeaufforderung herumfummeln.

Dieser Gesamtansatz eröffnet die Möglichkeit, Benutzeranfragen auf der Grundlage eines Inhaltskorpus zu beantworten. Beispielsweise kann ein Korpus aus Nachrichten und Artikeln zum Thema Budget einfach zur Beantwortung von Leseranfragen verwendet werden. Dadurch wird das traditionelle Modell umgangen, bei dem der Benutzer eine Suchzeichenfolge eingibt und dann eine Reihe von Artikellinks angezeigt wird, die der Benutzer durchlesen muss, um die gewünschte Antwort zu erhalten. Dies sorgt für ein viel besseres Benutzererlebnis und spart ihnen viel Zeit.

Der Ansatz dreht sich darum, dem LLM den richtigen Kontext bereitzustellen, damit er die Anfrage beantworten kann. Das Problem besteht nun darin, den richtigen Satz von Snippets aus dem Korpus zu identifizieren, die für die Abfrage relevant sind, da die LLM-App Einschränkungen hinsichtlich der Menge der Eingaben hat, die gesendet werden können.

Das ist jetzt in erster Linie ein Suchproblem. Inhalte können in Snippets zerlegt und indiziert werden. Hierzu kann eine Vektordatenbank wie Pinecone oder Milvus verwendet werden. Der Inhalt wird vektorisiert und in der Datenbank gespeichert. Wenn der Benutzer eine Frage stellt, vektorisieren Sie die Anfrage einfach und führen Sie eine Ähnlichkeitssuche durch, um die relevanten Snippets zu erhalten.

Intelligentere Freitextsuche

Die Freitextsuche ist aus UX-Perspektive einfacher als die herkömmliche filterbasierte Suche. Es erfordert jedoch die Entwicklung einer komplexen Parsing-Logik, um die Suchfilter anhand der vom Benutzer bereitgestellten Texteingabe zu identifizieren. Daher ist es anfällig für Fehler oder einen kleinen Satz fester Texteingabeformate.

Die Sprachfähigkeit von LLM kann hier genutzt werden, um den Suchtext zu analysieren und die Suchparameter zu identifizieren.

Die Gesamtlösung besteht darin, eine Eingabeaufforderung im folgenden allgemeinen Format zu erstellen:

Eingabeaufforderungsanweisungen: Analysieren Sie die bereitgestellte Eingabeabfrage in das folgende JSON-Format.

JSON-Format:

{„Ort“: „Platz eins ist zu Besuch. Obligatorisch“, „checkInDate“: „Das Check-in-Datum für die Reservierung. Obligatorisch. Format TT/MM/JJJJ“, „checkOutDate“: „Das Check-out-Datum für die Reservierung. Obligatorisch. Standard-Check-In plus 2 Tage. Format TT/MM/JJJJ“, „minimumRating“: „Mindestbewertung für das Hotel erforderlich. Optional“, „maximumPricePerNight“: „Maximaler Preis pro Nacht, den man zu zahlen bereit ist. Optional" }

Beispiele:

Frage: Ich suche Zimmer vom 23. bis 28. Juli in Shimla mit einer Bewertung von 4 und höher.

Antwort: {„place“: „Shimla“, „checkInDate“: „23/07/2023“, „checkOutDate“: „28/07/2023“, „minimumRating“: „4“}

Frage: Suche nach Zimmern ab dem 15. August für 3 Tage in Darjeeling.

Antwort: {„Ort“: „Darjeeling“, „checkInDate“: „15.08.2023“, „checkOutDate“: „17.08.2023“}

Frage: Ich mache ab dem 3. September fünf Tage lang Urlaub in Pondicherry.

Antworten:

In diesem Fall haben wir eine Funktion des LLM namens Zero Shot Learning genutzt. Neben den Anweisungen haben wir auch einige Beispielbeispiele gegeben, um die erwartete Ausgabe für eine Reihe von Fragen zu zeigen. LLM haben große Fähigkeiten bei der Feinabstimmung ihres Verhaltens bewiesen, indem sie aus kleinen Stichproben gelernt haben.

Der LLM würde die Benutzerabfrage analysieren und einen JSON in einem festen Format bereitstellen. Dasselbe kann dann einfach verwendet werden, um die eigentliche Suchfunktionalität einzuschalten.

In diesem Fall ist der LLM im Wesentlichen ein intelligenter Textparser.

Support-Bot

Nehmen wir ein Beispiel einer Reisebuchungsanwendung, um diesen Anwendungsfall zu untersuchen.

Ein Benutzer interagiert mit einem Support-Bot, um Antworten auf Fragen zur Verwendung einer Anwendung, zu allgemeinen Vorteilen usw. zu erhalten. Oder er möchte Antworten zu seinen Transaktionen erhalten, die er mit der Anwendung durchgeführt hat.

Ein Korpus der allgemeinen Verwendung der Anwendungen und mit der Anwendung verbundene Inhalte können erstellt werden, um Anfragen zu derselben zu beantworten.

Ebenso kann ein intelligenter LLM-basierter Abfrageparser verwendet werden, um Benutzeranfragen rund um ihre Buchungen zu analysieren und dann die Buchungsdatensätze abzurufen. Da eine Anwendung über mehrere Arten von Benutzertransaktionen verfügen kann, kann der LLM-Parser so optimiert werden, dass er sowohl den Transaktionstyp als auch die Parameter für die jeweilige Transaktion bereitstellt.

Die Integration beider Funktionen zusammen in einem einzigen Frontend-Bot würde auch einen Schritt erfordern, bei dem wir die Absicht des Benutzers identifizieren müssen, ob es bei der Abfrage um die Durchführung einer Transaktion oder den Status der letzten Transaktion geht. Hierzu kann das LLM verwendet werden, um die Absicht des Benutzers korrekt zu identifizieren.

Die Gesamtlösung umfasst also:

  • Identifizieren der Absicht: Korpusabfrage oder Buchungsabfrage
  • Korpusabfrage wird verarbeitet
  • Korpus durchsuchen
  • Identifizieren relevanter Snippets
  • Aufrufen von LLM, Übergeben relevanter Snippets und Benutzerabfragen.
  • Buchungsanfrage wird bearbeitet
  • Aufrufen von LLM zur Identifizierung des Typs und der Parameter
  • LLM-Antwort-JSON analysieren.
  • Aufruf geeigneter Funktionen.
  • Abb. 1: Support-Bot für einen Reiseantrag.

LLM bringt einige Herausforderungen mit sich.

Traditionell sind Entwickler daran gewöhnt, in einer deterministischen Welt zu arbeiten. Antworten von Funktionsaufrufen sind deterministischer Natur, selbst wenn sie fehlschlagen und Fehler auslösen.

LLM arbeitet jedoch auf probabilistische Weise. Ihre Reaktionen entsprechen nicht unbedingt immer unseren Vorhersagen. Dies bedeutet, dass sich Entwickler bei der Entwicklung von Anwendungen, die sie verwenden, stets darüber im Klaren sein und die entsprechende Widerstandsfähigkeit aufbauen müssen, um mit dem Unerwarteten umzugehen.

Die Antwortzeiten der OpenAI-API sind von Natur aus sehr empfindlich. Sie liegen zwischen 2 und 12 Sekunden. Viel hängt von der Menge des Inhalts ab. Beispielsweise würde das Senden eines großen Kontexts und das Erwarten einer detaillierten Antwort auf eine Anfrage einen hohen Rechenaufwand für das LLM erfordern, sodass die Antwortzeiten höher wären. Einiges davon lässt sich wahrnehmungsmäßig durch die Umstellung auf Streaming-APIs bewältigen, aber das würde immer noch bedeuten, dass die endgültige Antwort im Vergleich zu herkömmlichen API-Antwortzeit-SLAs nach relativ langer Zeit abgeschlossen wird.

Eingabeaufforderungen sind die wichtigste Möglichkeit, LLMs darüber zu informieren, was sie tun sollen. Daher ist es von entscheidender Bedeutung, die Eingabeaufforderungen richtig zu machen. Allerdings ist damit eine Lernkurve verbunden. Darüber hinaus funktionieren Eingabeaufforderungen, die mit einer Version von LLM funktionieren, mit einer anderen etwas anders, sodass Anpassungen erforderlich sind, um dasselbe zu bewirken.

LLM als Technologie hat die Möglichkeit eröffnet, neue Wege zur Problemlösung zu finden. Wir stehen immer noch an der Schwelle, sein wahres Potenzial zu verstehen. Die neuen Ideen, die das Internet jeden Tag überschwemmen, sind ein Beweis dafür, dass aufregende Zeiten vor uns liegen.