Wie lassen sich von einem großen Sprachmodell-Chatbot generierte ophthalmologische Ratschläge mit Ratschlägen vergleichen, die von Augenärzten verfasst wurden?
May 25, 2023Kunstfehler in der Augenheilkunde in Hollywood, Florida: Auge
May 26, 2023VIDEO: Sommersymposium „Women in Ophthalmology“, um Innovationen in der Augenpflege hervorzuheben
May 27, 2023Die FDA-Zulassung von Izervay steht an der Spitze der jüngsten Nachrichten aus der Augenheilkunde
May 28, 2023Bascom Palmer wurde zum 20. Jahr in Folge zur besten Klinik für Augenheilkunde gekürt
May 29, 2023Eine kurze Anleitung zu LangChain für Softwareentwickler
Von Janakiram MSV
InfoWorld |
Wenn Sie ein Softwareentwickler sind, der stets auf dem Laufenden bleiben möchte, wenn es um große Sprachmodelle geht, könnten Sie sich wie ich überfordert oder verwirrt fühlen. Es scheint, als ob wir jeden Tag die Veröffentlichung eines neuen Open-Source-Modells oder die Ankündigung einer bedeutenden neuen Funktion durch einen kommerziellen Modellanbieter sehen.
LLMs werden schnell zu einem integralen Bestandteil des modernen Software-Stacks. Unabhängig davon, ob Sie eine von einem Anbieter wie OpenAI angebotene Modell-API nutzen oder ein Open-Source-Modell in Ihre App einbetten möchten, erfordert die Erstellung LLM-gestützter Anwendungen mehr als nur das Senden einer Eingabeaufforderung und das Warten auf eine Antwort. Es sind zahlreiche Elemente zu berücksichtigen, die von der Optimierung der Parameter über die Erweiterung der Eingabeaufforderung bis hin zur Moderation der Antwort reichen.
LLMs sind zustandslos, das heißt, sie erinnern sich nicht an die vorherigen Nachrichten in der Konversation. Es liegt in der Verantwortung des Entwicklers, den Verlauf zu pflegen und den Kontext an das LLM weiterzuleiten. Diese Konversationen müssen möglicherweise in einer dauerhaften Datenbank gespeichert werden, um den Kontext in eine neue Konversation zurückzubringen. Das Hinzufügen von Kurzzeit- und Langzeitgedächtnissen zu LLMs ist daher eine der Hauptaufgaben der Entwickler.
Die andere Herausforderung besteht darin, dass es keine einheitliche Regel für LLMs gibt. Möglicherweise müssen Sie mehrere Modelle verwenden, die auf unterschiedliche Szenarien wie Stimmungsanalyse, Klassifizierung, Beantwortung von Fragen und Zusammenfassung spezialisiert sind. Der Umgang mit mehreren LLMs ist komplex und erfordert einiges an Klempnerarbeit.
LangChain ist ein SDK, das die Integration von LLMs und Anwendungen vereinfachen soll. Es löst die meisten der oben besprochenen Herausforderungen. LangChain ähnelt einem ODBC- oder JDBC-Treiber, der die zugrunde liegende Datenbank abstrahiert, indem er es Ihnen ermöglicht, sich auf Standard-SQL-Anweisungen zu konzentrieren. LangChain abstrahiert die Implementierungsdetails der zugrunde liegenden LLMs, indem es eine einfache und einheitliche API bereitstellt. Diese API erleichtert Entwicklern das Ein- und Auswechseln von Modellen ohne wesentliche Änderungen am Code.
LangChain erschien etwa zur gleichen Zeit wie ChatGPT. Harrison Chase, sein Gründer, ging die erste Verpflichtung Ende Oktober 2022 ein, kurz bevor die LLM-Welle ihre volle Wucht erreichte. Die Community leistet seitdem einen aktiven Beitrag und macht LangChain zu einem der besten Tools für die Interaktion mit LLMs.
LangChain ist ein leistungsstarkes Framework, das sich mit externen Tools integrieren lässt, um ein Ökosystem zu bilden. Lassen Sie uns verstehen, wie es den Ablauf orchestriert, der erforderlich ist, um mit einem LLM das gewünschte Ergebnis zu erzielen.
Anwendungen müssen Daten aus externen Quellen wie PDFs, Webseiten, CSVs und relationalen Datenbanken abrufen, um den Kontext für das LLM zu erstellen. LangChain lässt sich nahtlos in Module integrieren, die auf Daten aus unterschiedlichen Quellen zugreifen und diese abrufen können.
Die von einigen externen Quellen abgerufenen Daten müssen in Vektoren umgewandelt werden. Dies erfolgt durch Übergabe des Textes an ein Worteinbettungsmodell, das dem LLM zugeordnet ist. Beispielsweise verfügt das GPT-3.5-Modell von OpenAI über ein zugehöriges Worteinbettungsmodell, das zum Senden des Kontexts verwendet werden muss. LangChain wählt das beste Einbettungsmodell basierend auf dem gewählten LLM aus und macht das Rätselraten bei der Paarung der Modelle überflüssig.
Die generierten Einbettungen werden in einer Vektordatenbank gespeichert, um eine Ähnlichkeitssuche durchzuführen. LangChain erleichtert das Speichern und Abrufen von Vektoren aus verschiedenen Quellen, von In-Memory-Arrays bis hin zu gehosteten Vektordatenbanken wie Pinecone.
LangChain unterstützt Mainstream-LLMs von OpenAI, Cohere und AI21 sowie Open-Source-LLMs, die auf Hugging Face verfügbar sind. Die Liste der unterstützten Modelle und API-Endpunkte wächst schnell.
Der obige Ablauf stellt den Kern des LangChain-Frameworks dar. Die Anwendungen oben im Stapel interagieren mit einem der LangChain-Module über das Python- oder JavaScript-SDK. Lassen Sie uns die Rolle dieser Module verstehen.
Das Modul Model I/O befasst sich mit der Interaktion mit dem LLM. Es hilft im Wesentlichen dabei, effektive Eingabeaufforderungen zu erstellen, die Modell-API aufzurufen und die Ausgabe zu analysieren. Prompt Engineering, der Kern der generativen KI, wird von LangChain gut gemeistert. Dieses Modul abstrahiert die Authentifizierung, API-Parameter und Endpunkte, die von LLM-Anbietern bereitgestellt werden. Schließlich kann es die vom Modell gesendete Antwort im gewünschten Format analysieren, das die Anwendung verarbeiten kann.
Stellen Sie sich das Datenverbindungsmodul als die ETL-Pipeline Ihrer LLM-Anwendung vor. Dabei geht es darum, externe Dokumente wie PDF- oder Excel-Dateien zu laden, sie in Blöcke umzuwandeln, um sie stapelweise in Worteinbettungen zu verarbeiten, die Einbettungen in einer Vektordatenbank zu speichern und sie schließlich über Abfragen abzurufen. Wie wir bereits besprochen haben, ist dies der wichtigste Baustein von LangChain.
In vielerlei Hinsicht ähnelt die Interaktion mit LLMs der Verwendung von Unix-Pipelines. Die Ausgabe eines Moduls wird als Eingabe an das andere gesendet. Wir müssen uns oft auf das LLM verlassen, um die Antwort zu klären und zu destillieren, bis wir das gewünschte Ergebnis erhalten. Ketten in LangChain sind darauf ausgelegt, effiziente Pipelines aufzubauen, die die Bausteine und LLMs nutzen, um eine erwartete Reaktion zu erhalten. Eine einfache Kette kann über eine Eingabeaufforderung und ein LLM verfügen, aber es ist auch möglich, hochkomplexe Ketten zu erstellen, die das LLM mehrmals aufrufen, z. B. bei einer Rekursion, um ein Ergebnis zu erzielen. Beispielsweise kann eine Kette eine Aufforderung enthalten, ein Dokument zusammenzufassen und dann eine Stimmungsanalyse für dasselbe durchzuführen.
LLMs sind zustandslos, benötigen jedoch Kontext, um genau reagieren zu können. Mit dem Speichermodul von LangChain ist es einfach, Modellen sowohl Kurzzeit- als auch Langzeitspeicher hinzuzufügen. Das Kurzzeitgedächtnis speichert den Verlauf eines Gesprächs durch einen einfachen Mechanismus. Der Nachrichtenverlauf kann in externen Quellen wie Redis gespeichert werden und stellt so das Langzeitgedächtnis dar.
LangChain stellt Entwicklern ein Callback-System zur Verfügung, das es ihnen ermöglicht, sich in die verschiedenen Phasen einer LLM-Anwendung einzubinden. Dies ist nützlich für Protokollierung, Überwachung, Streaming und andere Aufgaben. Es ist möglich, benutzerdefinierte Callback-Handler zu schreiben, die aufgerufen werden, wenn ein bestimmtes Ereignis innerhalb der Pipeline auftritt. Der Standardrückruf von LangChain verweist auf stdout, das einfach die Ausgabe jeder Stufe auf der Konsole ausgibt.
Agents ist mit Abstand das leistungsstärkste Modul von LangChain. LLMs sind in der Lage, zu argumentieren und zu handeln, was als ReAct-Prompting-Technik bezeichnet wird. Die Agenten von LangChain vereinfachen die Erstellung von ReAct-Eingabeaufforderungen, die mithilfe des LLM die Eingabeaufforderung in einen Aktionsplan umwandeln. Agenten können als dynamische Ketten betrachtet werden. Die Grundidee von Agenten besteht darin, mithilfe eines LLM eine Reihe von Aktionen auszuwählen. Eine Abfolge von Aktionen ist in Ketten (im Code) fest codiert. Ein Sprachmodell wird in Agenten als Argumentationsmaschine verwendet, um zu bestimmen, welche Aktionen in welcher Reihenfolge ausgeführt werden sollen.
LangChain entwickelt sich schnell zur wichtigsten Komponente von GenAI-basierten Anwendungen. Dank seines florierenden Ökosystems, das sich ständig erweitert, kann es eine Vielzahl von Bausteinen unterstützen. Die Unterstützung von Open-Source- und kommerziellen LLMs, Vektordatenbanken, Datenquellen und Einbettungen macht LangChain zu einem unverzichtbaren Werkzeug für Entwickler.
Das Ziel dieses Artikels war es, Entwicklern LangChain vorzustellen. Im nächsten Artikel dieser Serie werden wir LangChain mit der PaLM 2 API von Google verwenden. Bleiben Sie dran.
Lesen Sie als nächstes Folgendes:
Copyright © 2023 IDG Communications, Inc.
Lesen Sie als nächstes Folgendes: