Prompt Tutorial Teil #2: Wie schreibe ich Prompts für die Nutzung in der eigenen Anwendung
Einleitung
Willkommen zum zweiten Teil meiner Tutorial-Reihe zum Thema: Wie schreibe ich vernünftige Eingaben für Chat-KIs um die optimalen Ergebnisse zu bekommen?
In diesem Teil wird es etwas technischer. Wir wollen uns anschauen, wie man die Antworten so gestaltet, dass man es in einer Anwendung oder einer App nutzen kann.
Wenn du noch keine oder wenig Erfahrung mit dem Formulieren von Prompts, dann schau dir auf jeden Fall Teil #1 der Reihe an, wo ich die Grundlagen erkläre und wertvolle Tipps gebe, wie man vernünftige Antworten bekommt. Hier geht es zum ersten Teil: Prompt Leitfaden: bessere Ergebnisse aus ChatGPT und Co holen
Exkurs: Die ChatGPT (OpenAI) API nutzen
Hinweis
Für dieses Tutorial brauchst du das nicht, das soll dir nur eine kurze Hilfe sein, falls du das schon mal programmatisch nutzen möchtest. Später wird es ein ausführliches Tutorial zum Thema OpenAI-API geben. Überspringe ruhig das Kapitel, wenn es für dich nicht relevant ist oder wenn es dir bereits alles bekannt ist.
API-Key
Noch ein Hinweis: um die API zu nutzen, brauchst du einen API-Key. Leider ist die Nutzung kostenpflichtig. Aber ich kann dich beruhigen, wenn man bloß ein bisschen probieren möchte, dann bewegen sich die Kosten im Cent-Bereich.
Zunächst musst du dich auf https://platform.openai.com/ registrieren. In deinem Profil findest du den Bereich für die API-Keys: https://platform.openai.com/account/api-keys. Hier wirst du aufgefordert erstmal Zahlungsdaten zu hinterlegen. Wichtig: schau dir alles an, vor allem die Preisinformationen. Du kannst im Menü Billing/Usage limits festlegen, wie viel du maximal ausgeben möchtest. Stelle dort bevor du etwas probierst für dich akzeptable Werte ein.
Danach kannst du dir unter https://platform.openai.com/account/api-keys einen API-Key anlegen. Ich empfehle für jede Anwendung etc. einen eigenen Key zu machen. Die Keys kannst du nämlich als ungültig markieren, z.B. nachdem du deine Tests abgeschlossen hast.
Wichtig: wenn dir der Key angezeigt wird, dann musst du ihn sofort kopieren und irgendwo notieren, denn er wird dir nicht noch einmal angezeigt. Gut, im schlimmsten Fall musst du halt einen neuen anlegen.
Voraussetzungen (Python)
Ich gehe hier nicht darauf ein, wie man Python installiert oder wie Python überhaupt funktioniert. Das mache ich in einem separaten OpenAI-API Tutorial.
Ich empfehle dir die kostenlose Version von Google Colaboratory (kurz Colab) zu nutzen. Dort kannst du Python Notebooks erstellen und das nette dabei ist, meist sind die notwendigen Bibliotheken vorinstalliert. Hier kommst du zu Google Colab: https://colab.research.google.com/
Du brauchst allerdings einen Google-Account.
Als erstes müssen wir die OpenAI-Bibliothek installieren:
$ pip install openai
Nachdem die Bibliothek installiert wurde können wir uns eine Python-Datei erstellen (wenn du ein Python-Notebook verwendest, dann schreibst du einfach direkt den Code in die Zelle).
Wir fangen an und fügen folgendes hinzu:
import openai
openai.api_key = "Füge hier deinen API-Key ein!"
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hallo ChatGPT, wie geht es dir?"}
]
)
print(response.choices[0].message["content"])
Führe das Python-Skript aus und wenn alles gut gegangen ist, dann solltest du eine Ausgabe sehen, die in etwa so aussieht:
Hallo! Als KI habe ich kein Bewusstsein und keine Emotionen, aber ich bin bereit, Ihnen zu helfen und Ihre Fragen zu beantworten. Wie kann ich Ihnen heute behilflich sein?
Mit dem Parameter „model“ kannst du übrigens angeben, welches Modell zum Ausführen verwendet wird. Hier habe ich das Modell „gpt-3.5-turbo“ gewählt, denn zum aktuellen Zeitpunkt ist das neuere 4.0 Modell für mich nicht verfügbar.
In der Liste „messages“ gibst du deinen Prompt an. Details dazu kommen in einem späteren Tutorial. Nur als kurze Anmerkung, man kann auch mehrere Prompts angeben. Die bauen dann aufeinander auf, d.h. das Prompt nutzt quasi die vorherigen Prompts als Kontext. Genauso, wie wenn du in ChatGPT mehrere Anfragen innerhalb eines Chats machst.
Grundlagen
Erstmal ist es wichtig, dass wenn wir nicht einfach die Antwort eins zu eins ausgeben möchten, dass wir die KI bitten nur die nackten Daten auszugeben. Ansonsten neigen die KIs dazu eine Erklärung auszugeben. Das ist zwar oft hilfreich wenn man den Chat nutzt, stört aber bei der maschinellen Verarbeitung.
Die erstmal einfachste Anweisung ist es der KI eine vorgegebene Menge an Antwortmöglichkeiten zu geben. Zum Beispiel möchten wir nur „JA“/“NEIN“ oder „true“/“false“ als Antwort haben. Man könnte auch Prozentangaben anfordern uvm. Alles abhängig davon was die Aufgabe ist.
Nehmen wir als Beispiel an, wir schreiben eine Anwendung, die die Kommentare einer Webseite darauf untersuchen möchte, ob es sich um eine Beschwerde handelt. Wir möchten also als Ergebnis eine Liste mit Kommentar-ID und dem Ergebnis „Beschwerde“ oder „Keine Beschwerde“ haben. Wir würden also über die API eine Liste von Kommentaren in einem für die KI verständlichen Format geben und natürlich mit dem passenden Prompt. Hier zeige ich das als Eingabe in ChatGPT:
Fast perfekt, denn ich hätte natürlich darum bitten sollen, dass nur die Bewertung ausgegeben wird. Aber mit diesem Ergebnis kann man diese einfache Anwendung realisieren.
Trennzeichen
Wenn wir das obige Beispiel uns anschauen, dann könnte sich daraus ein Problem ergeben. Wir haben die Kommentare der Nutzer einfach so in den Prompt eingefügt. Jetzt könnte natürlich sein, dass ein Kommentar scheinbare Anweisungen an die KI enthält.
Das kann man durch die Verwendung von Trennzeichen vermeiden. Man sagt der KI also, dass die zu analysierenden Daten innerhalb (von uns beliebig auswählbaren) Trennzeichen stehen. Am Besten nutzt man dafür nicht unbedingt die gängigen Zeichen wie Anführungszeichen vor und nach dem Text. Schließlich könnten die Kommentare das ja auch enthalten. Besser wären wahrscheinlich so etwas:
Die zu analysierenden Daten sind innerhalb der Trennzeichen """-
"""
id=1,Kommentar="Schön hier!"
"""
Ausgabeformate
Kommen wir nun zu dem eigentlichen Tutorial (ab hier kannst du auch ganz normal mit dem Chat arbeiten, es ist nicht notwendig die API zu nutzen). Damit wir mit der Antwort besser arbeiten können, macht es durchaus Sinn ChatGPT (oder beliebige andere KI) ein bestimmtes Ausgabeformat vorzugeben.
Besonders hilfreich sind Formate wie JSON, CSV usw. Aktuell zum Erstellungszeitpunkt des Tutorials kann man nur Textformate erzeugen. Das liegt daran, dass kein Dateidownload angeboten wird. Ich gehe jedoch jede Wette ein, dass „bald“ etwas in die Richtung angeboten wird.
Lass uns ein Beispiel ansehen:
Ok das ist nicht optimal, denn wir bekommen jede Menge Erklärungen und sonstige Texte drumherum. Das würde uns stören, wenn wir nur den JSON-Inhalt nutzen möchten.
Das Problem ist, dass ich nicht spezifisch genug war (siehe das erste Tutorial zum Thema Prompts schreiben).
Lass uns das besser formulieren:
Damit lässt sich auf jeden Fall viel besser arbeiten. Natürlich hätte ich noch genauer beschreiben müssen, was ich für Informationen haben möchte und in welcher Sprache.
Wir haben in dem vorherigem Beispiel keine Angaben darüber gemacht, welchen Inhalt und welche Struktur die JSON-Datei haben soll. Das kann man aber natürlich machen.
Zum einen kann ich einfach sagen, welche Felder ich haben möchte oder sogar noch besser, ich gebe ein Beispiel für das Format an:
Gar nicht so schlecht. Ok hier hat ChatGPT eine leichte Abweichung eingebaut, indem es das „Thema“ einfach „subject“ genannt hat. Mit noch ausführlicheren Prompt bekommt man das aber in den Griff. Fun-Fact: man findet teilweise Prompts die seitenlang sind um alles aus dem Modell herauszukitzeln… das ist halt manchmal notwendig!
Neben JSON können wir natürlich viele weitere Ausgabeformate anfordern und so könnten wir uns sogar eine HTML Seite erzeugen lassen.
Leider kann man noch keine Bilder oder Grafiken erzeugen lassen. Allerdings kann man wenigstens so etwas ähnliches hinkriegen, wenn man als Ausgabeformat SVG wählt. Das ist schließlich ein Textformat und somit kann man so etwas wie Diagramme erzeugen lassen.
Daten verarbeiten oder analysieren
Wir können nicht nur die Antwort in einem maschinenlesbaren Format ausgeben lassen, wir können auch strukturierte Daten verarbeiten lassen.
So können wir tabellarische Daten, z.B. als CSV-Datei oder andere Formate eingeben. Das geht natürlich etwas bequemer programmatisch über die API, aber wir schauen uns hier mal ein Beispiel an. Und zwar habe ich meinen Gas-Zählerstand in unregelmäßigen Abständen notiert. Mit Datum und aktuellem Zählerstand. Jetzt würde ich gerne sehen, wie sich mein Gasverbrauch entwickelt ansehen. Klar, findige Leute werfen das schnell in Excel rein und zaubern eins, zwei Formeln dahin und schon ist das Problem gelöst. Ich lasse mir lieber die Lösung von der KI erarbeiten.
Hier habe ich den typischen Fehler gemacht und nicht angefordert, dass ich nur die Daten möchte. Für ein noch optimaleres Ergebnis hätte ich auch noch anfordern können, dass die Kalenderwochen, für die ich keine Daten habe, interpoliert werden. Aber ich denke es ist einigermaßen klar wie das funktioniert. Hier die entsprechende Antwort:
Jetzt brauche ich das nur als Datei speichern und kann mir in Excel ein Diagramm z.B. anzeigen lassen. Leider kann zu diesem Zeitpunkt ChatGPT keine Binärdaten erzeugen, ansonsten hätte ich das auch direkt anfordern können.
Fazit
Wir haben hier hilfreiche Prompts gesehen, wenn es darum geht die Antworten maschinell zu verarbeiten. Mit wenigen Worten können wir also etwas erreichen wofür wir mit herkömmlichen Mitteln aufwändige Programme schreiben müssten. Ich finde zumindest, dass das ganz neue Wege bietet!
In einem späteren Tutorial zeige ich dann, wie KIs bei der Programmierung helfen können. Sei es als Eingabehilfen, Erklärer oder um komplette Programme schreiben zu lassen.
Ausblick
Es existiert das sogenannte „Code interpreter Plugin“. Das ist zum jetzigen Zeitpunkt noch im Alpha-Stadium und leider erhalten nur wenige darauf Zugriff. Mit diesem Plugin kannst du ganze Exceldateien oder sonstige Dateiformate mit Daten hochladen und analysieren lassen.
Das beeindruckende dabei ist, dass man noch nicht einmal beschreiben muss um welche Daten es sich handelt. Das analysiert ChatGPT von ganz alleine und erzeugt ohne unser Zutun eine Analyse samt Diagrammen. Dabei greift es auf die Daten von Wolfram Alpha zu.
Inweiweit man das Plugin jedoch über die API nutzen kann, ist mir noch nicht bekannt.
Sobald ich Zugriff auf das Plugin bekomme, erstelle ich einen Blog-Post darüber.