Ich mag all diese GenAI-Sachen. Es gibt jede Menge ausgezeichneter Dinge, die man damit machen kann. Aber ein spezielles Angebot, OpenAIs benutzerdefinierte GPTs, lässt mich unbeeindruckt zurück.
Keine Sorge. Es gibt viele andere AI-Geschenke zu öffnen als GPTs.
GPTs sind einfach nur in Ordnung. Sie sind wie Socken zum Geburtstag bekommen. Lassen Sie mich die Gründe erläutern, warum ich unbeeindruckt bin.
Ein dummer Name
Erstens hasse ich den Namen – „GPT“ (Singular) oder „GPTs“ (Plural). Der Name ist verwirrend, und ich schäme mich ein wenig, ihn überhaupt zu benutzen.
Vor den GPTs hatten wir bereits das Modell, das „GPT-x“ genannt wird („GPT-3.5“, „GPT-4“ und so weiter).
Und jetzt haben wir diese benutzerdefinierten Anpassungen, die wir „GPTs“ nennen.
Wenn ich sage, dass ich an einem „GPT“ arbeite oder ein „GPT“ veröffentlicht habe, wissen die Leute nicht genau, was ich meine, bis ich es klarstelle. Und selbst dann denken sie vielleicht, dass ich ein LLM-Modell feinabgestimmt oder etwas sehr Raffiniertes gemacht habe.
Was ich tue, um ein GPT zu erstellen, ist nicht raffiniert. Wenn ich ein GPT mit dem OpenAI-Portal erstelle, spezifiziere ich im Wesentlichen eine zusätzliche Eingabeaufforderung.
Beispielanweisungen für ein GPT – dieses führt spanische Gespräche durch.
Wenn Sie den GPT-Builder verwenden, können Sie etwas sagen wie „Mach mir ein GPT, das wie ein zwölfjähriger Junge mit Schnupfen spricht“. Und der GPT-Builder schreibt die Anweisungen für Sie. Wenn Sie sich ansehen, was der GPT-Builder geschrieben hat, wird es wahrscheinlich etwas sehr Ähnliches zu dem sagen, was Sie gefragt haben, z.B. „Unterhalte dich im Stil eines zwölfjährigen Jungen mit einer negativen und boshaften Einstellung“.
Die Anweisungen, die Sie eingeben (oder über den GPT-Builder generieren) um das GPT zu konfigurieren, könnten auch einfach als erste Eingabeaufforderung am Anfang einer ChatGPT-Sitzung eingegeben werden. Daher ist das Verhalten eines GPT nur geringfügig anders als das einer normalen ChatGPT-Sitzung. Aber der Name „GPT“ impliziert, dass Sie eine neue Version des LLM-Modells erstellen. Das ist so, als würde ich behaupten, ich hätte ein neues Auto erfunden, indem ich einen Aufkleber auf einen Toyota Prius geklebt habe.
Er hat ein neues Auto erfunden. Genial!
„GPT“ ist also ein irreführender und anbiedernder Name. Aber das ist das Geringste meiner Beschwerden.
Es ist ein Token-Ofen
GPTs sind gerade sehr beliebt.
Die GPTs erfordern die Verwendung von GPT-4. Das sollte an sich kein Problem für einen Nutzer mit einem kostenpflichtigen Konto wie mich sein. Aber es gibt etwas zusätzliches bei den GPTs, das dazu führt, dass sie meine tägliche Zuteilung von GPT-4-Nutzung im kostenpflichtigen Tarif extrem schnell aufbrauchen.
Mein GPT verhält sich wie eine kostenlose App ohne Bezahlfunktion. Dabei zahle ich doch.
Ich habe alle meine Änderungen direkt im OpenAI-Portal im Tab „Konfiguration“ vorgenommen und Werkzeuge wie den GPT-Builder vermieden, die selbst Tokens verbrauchen, um Eingabeaufforderungen für Sie zu erstellen. Das scheint ein wenig zu helfen, aber nicht viel.
Auch will ich nicht, dass meine potenziellen GPT-Nutzer innerhalb von 15 Minuten alle ihre Tokens auf meinem GPT verbrauchen.
Zum Zeitpunkt der Erstellung dieses Artikels gibt es keine Unterstützung für die Ausführung von GPTs unter dem günstigeren GPT-3.5-Modell. Das hätte diese Bedenken beseitigt.
Eine weitere Sache, die sehr hilfreich wäre, ist, dass keine LLM zur Verarbeitung der Anwendungslogik erforderlich ist. Dazu kommen wir als Nächstes.
Die Verwendung von Eingabeaufforderungs-Engineering zur Verarbeitung der Anwendungslogik ist janky
Sie können einem GPT detaillierte Anweisungen geben, die dazu führen, dass es sich wie eine konventionelle Software verhält. GPTs können Menüsysteme, Hilfebefehle oder einfache Zustandsautomaten haben.
In einem meiner GPTs verwende ich einige Anwendungslogik, um den Nutzer dazu zu führen, eine Eingabe für eine spanische Rollenspielübung bereitzustellen. Nachdem der Nutzer angegeben hat, welche Art von Situation er gerne durchspielen möchte, kann er dann das Stichwort „empecemos“ („Los geht’s“ auf Spanisch) sagen, um das GPT dazu zu bringen, in einen anderen Modus zu wechseln – das Rollenspiel selbst.
In der konventionellen Softwareentwicklung könnte man das Gleiche ohne die Verwendung von LLMs tun. Man hätte vielleicht eine „Modus“-Variable und eine „if-then“-Steuerungsanweisung irgendwo. Das ist eine triviale Sache zu tun. Die grundlegende Zustandsverwaltung wie diese würde auf einem Commodore VIC-20 sofort und ohne Halluzinationen laufen.
Ich bekomme MidJourney nicht dazu, ein gutes VIC-20 zu zeichnen. Wissen Sie einfach, dass es ein sehr schwacher Computer nach heutigen Maßstäben ist.
LLMs sind auch in der Lage, Anwendungslogik über ihre Funktion der Texterkennung zu verarbeiten. Statt den Zustand in Variablen zu speichern, wird er in der Chat-Sitzung selbst (Kontextfenster) gespeichert. Jedes Mal, wenn ein GPT-Nutzer eine neue Eingabeaufforderung eingibt, verarbeitet die LLM Ihre gesamte Chat-Historie zusammen mit der ursprünglichen Grundlage der GPT-Anweisungen.
Wir verwenden die leistungsfähigste Technologie, um einfache Dinge zu tun. Beeindruckt?
Die Fähigkeit, eine LLM als Ausführungsumgebung für die Anwendungslogik zu verwenden, ist erstaunlich. Es ist wirklich so.
Aber aus der Sicht der Softwarearchitektur ist die Verwendung einer LLM zur Verarbeitung der Anwendungslogik tragisch dumm.
- Es ist rechentechnisch verschwenderisch.
- Es ist langsam.
- Es ist unzuverlässig.
Rechentechnisch verschwenderisch: Wir verwenden Zeit auf GPUs in Rechenzentren, um Anwendungslogik in Form von Sprachtext in ein Kontextfenster zu laden, zu kodieren, zu transformieren, auf einem neuronalen Netz auszuführen und zu dekodieren. Dies erfordert mehrere Größenordnungen mehr Berechnungen als eigentlich benötigt werden.
Langsam: Der Charme, dem Text zuzusehen, wie er langsam auf den Bildschirm wie bei einem Online-Bulletin-Board-System aus den 80er Jahren gezeichnet wird, verfliegt schnell. Diese Verzögerung ist akzeptabel, wenn das GPT etwas tut, das nur mit einer LLM gemacht werden kann, wie z.B. die Simulation eines spanischen Gesprächs mit einem Taxifahrer. Aber nicht für grundlegende Benutzeroberflächen- und Anwendungsfunktionen.
Unzuverlässig: Die zufällige Natur von generativer KI bedeutet, dass jede Eingabeauffehrrung eine zu große Wahrscheinlichkeit hat, die Anwendungslogik falsch zu machen. „Halluzinieren“ nennt man das. Und wieder einmal ist diese Unzuverlässigkeit akzeptabel, wenn man etwas tut, das nur mit einer LLM gemacht werden kann. Aber wenn Sie eine Aufgabe wie „Zeige mir verfügbare Befehle für dieses GPT“ ausführen, ist die konventionelle, nicht-LLM-basierte Art, sie zu codieren, zu 100% deterministisch und bei weitem vorzuziehen.
Die guten Dinge
Ich sollte meine Kritik wahrscheinlich ausgleichen, indem ich die GPT-Funktionen anerkenne, die interessant oder nützlich sind.
Aktionen: Ich habe „Aktionen“ noch nicht ausprobiert, aber ich verstehe, wie sie funktionieren sollten, und ich sehe das Potenzial. Sie können mit diesen Aktionen in GPTs eine Abruf-gesteuerte-Generierung (RAG) durchführen. Das ist keine kleine Sache.
Bequeme Wiederverwendung von Eingabeaufforderungsgrundlagen: Ich habe auch festgestellt, dass bestimmte Eingabeaufforderungsgrundlagen gut sind, um sie wiederzuverwenden. Und eine Funktion wie GPTs, um sie einfach im ChatGPT-Portal zu erreichen, ist willkommen. Ich habe einige benutzerdefinierte GPTs für meine eigene Nutzung eingerichtet. Man könnte argumentieren, dass ich meine Eingabeaufforderungsgrundlagen einfach in einem Word-Dokument aufbewahren und einfügen könnte. Aber ich mag es, stattdessen auf ein schnelles Symbol klicken zu können.
GPT-Shop: Einige Entwickler haben es ernst gemeint, mit ihren GPTs aus dem GPT-Shop Geld zu verdienen. Ich habe Zweifel, ob das ein guter Ansatz im Vergleich zu anderen ist. Aber vielleicht gibt es die Möglichkeit, mit kleinen GPTs schnell Geld zu verdienen – schwer zu sagen.
Teilbarkeit: Eine teilbare Verknüpfung zu einem GPT ist auch gut. Tatsächlich ist das vielleicht die beste Funktion von GPTs. Denn es ermöglicht einem Entwickler, eine auf OpenAI basierende Software zu veröffentlichen, ohne die Kosten für die Hostinggebühren tragen zu müssen. Das war der Aspekt von GPTs, der mich dazu gebracht hat, sie auszuprobieren.
Aber am Ende sind GPTs einfach zu spielzeugartig für mich, um sie ernst zu nehmen.
Was wäre großartig zu haben
Ich spüre, wie jemand das hier in die Kommentare tippt…
Mann, hol dir einfach eine API-Schlüssel und rufe den REST-Endpunkt von OpenAI auf. Dann kannst du deine Steuerungslogik so schreiben, wie du es magst. Verwende deine bevorzugte Sprache, deinen Hosting-Anbieter usw.
Absolut. Tatsächlich habe ich das schon gemacht.
Aber ich wollte eine Möglichkeit, eine auf LLM basierende App zu veröffentlichen, bei der ich mir keine Sorgen um die Hostingkosten machen muss. Es gibt all diese Leute, die bereits OpenAI-Konten haben, viele von ihnen kostenpflichtig. Warum kann ich nicht einfach eine Möglichkeit haben, ihnen meine nicht-stupid-engineered LLM-basierte App zu geben? Die Nutzer haben die Hostingkosten bereits abgedeckt. Und aus der Sicht von OpenAI sollte meine App als Anreiz dienen, dass die Leute sich OpenAI-Konten besorgen und sie behalten.
Eine weitere mögliche Lösung ist, diese Nutzer zu bitten, einen API-Schlüssel einzugeben. Aber das ist umständlich und potenziell unsicher. Umständlich, weil die Nutzer die Option in ihrem Einstellungsbildschirm finden müssen, um einen API-Schlüssel zu generieren. Potenziell unsicher, weil der API-Schlüssel mit bösartigem Code, der in der Webanwendung und an anderen Stellen ausgeführt wird, kompromittiert werden kann.
Ich kann immer spüren, wenn ein gereizter Mensch im Internet etwas an mich tippt.
Das ist ein gelöstes Problem für viele andere Unternehmen. Sie bieten einfach eine OAuth-basierte API an.
Wenn ich also beispielsweise eine brandneue Webanwendung erstellen möchte, die die Spotify-API verwendet, kann ich die OAuth-Workflow implementieren. Ein Nutzer mit einem Spotify-Konto besucht meine Webanwendung, und meine App kann ihn kurz zu Spotify umleiten, um sich zu authentifizieren/autorisieren. Die Anmeldedaten des Nutzers werden nie mit mir geteilt, weil Spotify die Anmelde-UI von seiner Website aus handhabt. Nach einer erfolgreichen Authentifizierung sendet Spotify den Nutzer zurück zu meiner Website zusammen mit einem Zugriffstoken. Dieses Zugriffstoken kann von meiner Webanwendung an Spotify-APIs übergeben werden.
Ich spüre, wie jemand anderes dies hier in die Kommentare tippt…
Tatsächlich unterstützt OpenAI OAuth.
Ja, zum Zeitpunkt der Erstellung dieses Artikels haben sie OAuth-Consumer-Unterstützung für GPTs, die über Aktionen ausgehen. (Cool!) Aber ich spreche von OAuth-Provider-Unterstützung, die es Code ermöglichen würde, der außerhalb des OpenAI-Portals ausgeführt wird, die API von OpenAI mit den Konten von OpenAI-Nutzern aufzurufen.
Rant beendet
Es ist April 2024, während ich das schreibe. Die Dinge werden sich ändern. Die Relevanz meiner Beobachtungen wird verrotten.
Am Ende komme ich zu dem Schluss, dass GPTs für die persönliche Nutzung in einigen Fällen in Ordnung sind, aber eine schlechte Wahl, um ernsthafte Apps oder sogar nur Demos zu erstellen, die man mit anderen Menschen teilen möchte. Es lohnt sich, ein wenig mit GPTs zu spielen. Aber ich würde diese Plattform nicht wählen, um mehr als einen Sonntagnachmittag zu investieren.
Ich habe eine andere Möglichkeit, eine LLM-App ohne Hostingkosten zu erstellen – lokale LLMs. Ich spiele mit Ollama und WebLLM. Die Modelle sind nicht so gut wie GPT-4. Aber ich liebe die Kontrolle, die ich über die App habe. Die Privatsphäre für den Nutzer ist wunderbar. Und ein Browser ist eine schöne Sandbox, um Agenten sicher aufzubewahren.
Und ich muss meine App nicht als … (seufz) „GPT“ bezeichnen.