GPT-3 hat diesen Artikel geschrieben – wirklich!?
"GPT-3" von OpenAI ist das derzeit leistungsstärkste Sprach-Modell und damit die beeindruckendste Künstliche Intelligenz für Text-Generation. Auf den ersten (und auch den zweiten) Blick lässt sich nicht unterscheiden, ob der Text generiert oder von einem Menschen verfasst wurde.
Woher GPT-3 kommt und was die KI genau kann, ist schon zigfach in anderen Blog-Artikeln dokumentiert. Anstatt das alles zu wiederholen, möchte ich hier einen praktischen Einblick in die eigentliche Anwendung geben. Denn noch ist GPT-3 in der privaten Beta-Phase und der Zugang erfolgt über eine Warteliste, in welcher man sich mit einer Idee für GPT-3 bewerben muss. Ist die Idee gut, wird der Zugang erteilt.
ERSTMAL LESEN
Ist der Zugang da, lohnt sich ein Blick in die kurze, aber sehr informative Dokumentation. Die Dokumentation zur Funktionsweise von GPT-3 ist auch für weniger KI-affine Menschen leicht verständlich. Mit den dort gegebenen Beispielen lassen sich sofort Ergebnisse erzielen. Die ebenfalls dort dokumentierte API beschränkt sich auf einige wenige Funktionen und Parameter. Letztendlich geht es ja auch nur darum, einen Text als Eingabe zu benutzen und einen anderen als Ausgabe zu bekommen. Zusätzlich erfolgt eine Einladung in einen Slack-Channel, in welchem mit anderen OpenAI-Nutzern diskutiert werden kann.
Nachdem die Dokumentation durchgearbeitet ist, kann direkt zum "Playground" gewechselt werden. In sehr eingängiger Art und Weise können in dieser Sandbox alle Möglichkeiten von GPT-3 ausprobiert werden. Vorlagen mit Beispielen gibt es auch. Im Gegensatz zur Verwendung der API ist die Nutzung des Playgrounds kostenlos. Also perfekt zum Ausprobieren. Zur Preisgestaltung der API gibt es unten im Text ein paar Infos.
DIE SPIELWIESE
Der Playground ist schlicht gehalten und beschränkt sich auf zwei Hauptelemente: ein großes Textfeld und ein Panel für die Parameter-Justierung. In das Textfeld kann der Text eingegeben werden, welcher der KI anhand von Beispielen oder Instruktionen zeigt, was die zu erwartende Ausgabe sein soll. Dies ist der sogenannte "Prompt". Im gleichen Textfeld passiert dann auch die Text-Generation, die "Completion", also die Ausgabe.
Das Anleiten von GPT-3 kann auf zwei Wegen passieren:
- Mehrere Beispiele geben und die KI vervollständigen lassen
- Die KI instruieren, also konkrete Anforderungen geben
Bei der ersten Variante kommt es stark auf die Aussagefähigkeit der Beispiele an. Wie ich gelernt habe, müssen es schon so 5-10 Beispiele sein, damit GPT-3 begreift, was getan werden soll. Die zweite Möglichkeit (in OpenAI unter "Instruct-Series" zusammengefasst) ist erst später dazugekommen und ist für Laien intuitiver. Auch der initiale Arbeitsaufwand ist dabei geringer.
In beiden Fällen darf die Anleitung jedoch nicht zu komplex sein. OpenAI spricht selbst davon, GPT-3 das gewünschte Ergebnis so zu erklären, als wäre die KI ein Kleinkind. Also einfache, kurze Sätze.
Zum besseren Verständnis hier die Eingaben und Ausgaben im direkten Vergleich:
1. Beispiele geben und vervollständigen lassen:
DESCRIPTION
A blue sky with white clouds
COLORS
blue, white
###
DESCRIPTION
A green garden with a brown shed
COLORS
green, brown
###
DESCRIPTION
A red house with a black roof
COLORS
>> red, black // <- generiert von GPT-3
2. "Instruct-Series" - konkrete Instruktion als Befehl:
Extract colors as words from sentence "A red house with a black roof"
>> red, black // <- generiert von GPT-3
Der Unterschied in der Anleitung der KI ist deutlich erkennbar. In meiner Wahrnehmung muss bei den Instruct-Series allerdings damit gerechnet werden, nicht allzu viel Kontrolle über das Ergebnis zu haben, da mehrere Instruktionen auf einmal nicht unbedingt immer umgesetzt oder verstanden werden.
Das Parameter-Panel auf der rechten Seite ermöglicht es, die Completion zu beeinflussen. Die Parameter sind wie folgt:
- Engine: Die Angabe der Engine. „Ada“ ist die schnellste und günstigste, die Ergebnisse sind allerdings je nach Anwendungsfall sehr durchwachsen. „Davinci“ ist die langsamste und teuerste Engine, zerteilt die Eingabe aber in mehr Tokens und ist daher vielfältiger. Oder anders gesagt: Sie wirkt kreativer.
- Response Length: Die Länge der Ausgabe. Die Angabe erfolgt in Tokens (siehe unten).
- Temperature: Kontrolliert die Zufälligkeit der Ausgabe. Ein niedriger Wert führt zu gleichen oder ähnlichen Werten, ein hoher zu nicht reproduzierbaren Ergebnissen.
- Top P: Eine alternative Möglichkeit, die Zufälligkeit und Kreativität des von GPT-3 generierten Textes zu steuern. Es sollte immer nur entweder "Temperature" oder "Top P" verwendet werden. Das jeweils unbenutzte soll auf "1" stehen.
- Frequency Penalty: Steuert den Grad der Wiederholung von Wörtern in der Ausgabe. Ein höherer Wert bedeutet eine geringere Wahrscheinlichkeit der Wiederholung.
- Presence Penalty: Steuert den Grad der Wiederholung von Themen in der Ausgabe. Ein höherer Wert bedeutet eine geringere Wahrscheinlichkeit der Wiederholung.
- Best Of: Hiermit werden mehrere mögliche Ausgaben erstellt, je nach eingestelltem Wert. Es wird automatisch der Beste ausgewählt. Wie das bestimmt wird, bleibt allerdings unklar.
- Stop sequences: Ermöglicht es, die Ausgabe anhand von Stop-Wörtern zu steuern. Sobald das Stop-Wort erreicht wird, stoppt die Ausgabe.
- Inject Start Text (nur im Playground nutzbar): Ergänzt automatisch einen Text oder Schlüsselwort nach der Eingabe in den Playground.
- Inject Restart Text (nur im Playground nutzbar): Ergänzt automatisch einen Text oder Schlüsselwort nach der generierten Ausgabe durch GPT-3.
- Show Probabilities (nur im Playground nutzbar): Hierüber wird ersichtlich, warum bestimmte Wörter für die Ausgabe gewählt wurden. Hilft beim Testen.
Die passenden Einstellungen zu wählen ist wichtig und sie zu finden sehr langwierig. Denn selbst wenn mit dem Prompt klar definiert ist, was man möchte, so kann die Qualität der Ausgabe manchmal sehr frustrierend sein. Hier muss mit den Parametern ausprobiert werden. Irgendwann stellt sich ein Gefühl für die passenden Einstellungen ein.
TOKENS
Wichtiges Prinzip von GPT-3: "Tokens" sind Teile von Wörtern. GPT-3 zerteilt Wörter in Tokens, bevor sie diese verarbeitet. Das ist ein gängiger Trick, um unbekannte Wörter und gleichzeitig mehr auf einmal verarbeiten zu können. Zum Beispiel wird das Wort "Descartes" in die Tokens "Desc", "art" und "es" zerlegt, während ein kurzes und allgemeines Wort wie "und" ein einzelnes Token ist. Logischerweise ergeben sich so bei einem Text immer mehr Tokens als eigentliche Wörter. Im Schnitt besteht ein Wort aus vier Tokens (in der englischen Sprache). Wenn als „Response Length“ in der API zum Beispiel 400 Tokens definiert sind, dann kommen in Wirklichkeit ungefähr 100 Wörter zurück. Anhand der Tokens passiert auch die Preisberechnung.
PREIS
Wie oben erwähnt, ist die Nutzung der API kostenpflichtig. OpenAI rechnet nach Tokens ab. Und zwar nach Anzahl der Tokens der Eingabe UND der Ausgabe. Bei Verwendung der teuersten Engine „Davinci“ ergibt sich ein Preis von 6 Cent pro 1.000 Tokens (Stand: Januar 2021). Das wirkt zunächst günstig, jedoch ergeben sich im Fall einer vielgenutzten Applikation doch schnell ordentliche Summen. Ein valides Geschäftsmodell für die Nutzung von GPT-3 in der eigenen Applikation dürfte für ein Startup bei diesen Preisen schwierig zu finden sein. Für die Nutzung lässt sich eine Budget-Grenze definieren, so dass am Ende eines Nutzungsmonats kein böses Erwachen folgt. Immerhin: zum Start bekommt man ein Volumen von 300.000 Tokens gutgeschrieben.
MEIN BEISPIEL
Mein Anwendungs-Beispiel kombiniert auf Basis eines Node.js-Servers die Bild-Erkennung von Microsoft Azure Cognitive Services mit GPT-3 in einem lässigen 80er-Jahre - Interface. Mit der Web-App "TELLME" können so anhand von der Fotos Geschichten generiert werden. Dazu gibt der Nutzer zunächst den Namen des Haupt-Charakters ein. Dann können beliebig viele Fotos hochgeladen werden, zum Beispiel von einem Haus, einem Tier, einem Stuhl. Dann kann noch bestimmt werden, ob die Geschichte, traurig, mysteriös, lustig oder dramatisch sein sollte. Sind alle Eingaben erfolgt, passiert nun folgendes: Die Fotos werden von Cognitive Services analysiert. Der Dienst erkennt, was auf den Fotos zu sehen, entweder als Begriffe oder als vollständiger Satz. Ich nutze den Satz. Mit den Sätzen stelle ich folgende Anfrage an OpenAI:
"prompt": "Write a sad and long story about John that contains all of the following sentences\n- a knife on a table\n- a stone pillar in a grassy area\n- a dog sitting on a rug\n ",
"temperature": 1,
"max_tokens": 400,
"top_p": 0.8,
"frequency_penalty": 0.5,
"presence_penalty": 0.5
Hier ist nochmal der Ansatz der Instruct-Series zu sehen. In meinem Fall ist das Instruct-Vorgehen effektiver und das Ergebnis nicht schlechter. Als Ausgabe erfolgt dann eine Geschichte, die in einem gewissen Kontext die Sätze, also den Inhalt der Fotos, berücksichtigen. Das klappt meist gut, manchmal nicht zu gut. Auf jeden Fall ist es immer spannend.
ZUSAMMENGEFASST
Während ich in diesem Artikel noch den derzeit regelbasierten Roboter-Journalismus beschrieben habe, ist GPT-3 auf eine gewisse Art technisch kreativ. Nicht nur deswegen ist untersagt, GPT-3 dafür zu benutzen, politische News-Artikel zu produzieren bzw. zu versuchen, mit automatisierten Inhalten die politische Meinung zu beeinflussen. Bei der Qualität der Texte wäre das durchaus denkbar. Denn andersrum müsste ja wiederum eine andere KI, zum Beispiel irgendwas von Google, die mit GPT-3 generierten Texte erkennen und gegebenenfalls in den Suchergebnissen weiter hinten platzieren. Das wird interessant und wird jede Menge technische und moralische Fragen aufwerfen.
Also: Wie auch bei einem autonomen Fahren ist der erste und auch der zweite Eindruck von GPT-3 begeisternd. Wird GPT-3 produktiv verwendet, lassen sich Schwächen schnell erkennen. Dazu gehören sinnlose Sätze und Wiederholungen. Es wird klar: Die KI nutzt vorhandenes Wissen und setzt dieses neu zusammen. Sie denkt sich also keine neuen Inhalte aus. Das ist schnell zu merken, zumindest, wenn man drauf achtet. Dazu kommen Kosten, die es kleinen Software-Buden schwierig macht, Idee umzusetzen. Trotzdem ist es ein Blick in die Zukunft, faszinierend und lässt weitere Fortschritte in diesem Bereich erahnen. Absolut genial finde ich, wie gut GPT-3 aus meiner Eingabe heraus erkennt, was ich als Ausgabe haben möchte. Ich bin sicher: GPT-3 wird ein GPT-4 folgen. Und das wird ziemlich gut.
Ich selbst nutze GPT-3 übrigens in Verbindung mit DeepL und Google Natural Language für meinen Geschichten-Editor "Scribe! AI.IO", den ich in einem anderen Artikel vorstellen werde.