ChatGPT

ChatGPT Prompt-Engineering

In diesem Abschnitt behandeln wir die neuesten Techniken des Prompt-Engineerings für ChatGPT, einschließlich Tipps, Anwendungen, Grenzen, wissenschaftlichen Arbeiten und weiterführenden Lesestoffen.

Themen:


Einführung in ChatGPT

ChatGPT ist ein neues Modell, trainiert von OpenAI (opens in a new tab), das die Fähigkeit besitzt, auf konversationelle Weise zu interagieren. Dieses Modell wurde darauf trainiert, Anweisungen in einem Prompt zu folgen, um angemessene Antworten im Kontext eines Dialogs zu liefern. ChatGPT kann dabei helfen, Fragen zu beantworten, Rezeptvorschläge zu machen, Liedtexte in einem bestimmten Stil zu schreiben, Code zu generieren und vieles mehr.

ChatGPT wird mit Reinforcement Learning from Human Feedback (RLHF) trainiert. Obwohl dieses Modell viel leistungsfähiger als die vorhergehenden GPT-Iterationen ist (und auch darauf trainiert wurde, schädliche und unwahre Aussagen zu reduzieren), kommt es dennoch mit Einschränkungen. Lassen Sie uns einige der Fähigkeiten und Grenzen anhand konkreter Beispiele beleuchten.

Sie können die Forschungsvorschau von ChatGPT hier (opens in a new tab) verwenden, aber für die nachfolgenden Beispiele werden wir den Chat-Modus im OpenAI Playground nutzen.


Überprüfung der Konversationsaufgabe

In einem der vorhergehenden Leitfäden haben wir ein wenig über die Konversationsfähigkeiten und das Role Prompting gesprochen. Wir haben erörtert, wie man das LLM anweist, ein Gespräch in einem bestimmten Stil, mit einer bestimmten Absicht, Verhalten und Identität zu führen.

Lassen Sie uns unser vorheriges grundlegendes Beispiel überprüfen, in dem wir ein Konversationssystem erstellt haben, das in der Lage ist, auf Fragen technischere und wissenschaftlichere Antworten zu generieren.

Prompt:

Das Folgende ist ein Gespräch mit einem KI-Forschungsassistenten. Der Assistententen ist technisch und wissenschaftlich.

Mensch: Hallo, wer bist du?
KI: Grüße! Ich bin ein KI-Forschungsassistent. Wie kann ich Ihnen heute helfen?
Mensch: Kannst du mir über die Entstehung von schwarzen Löchern berichten?
KI:

Anhand des obigen Beispiels können Sie zwei wichtige Komponenten erkennen:

  • die Absicht oder Erklärung, was der Chatbot ist
  • die Identität, welche den Stil oder Ton instruiert, den der Chatbot zur Beantwortung verwenden wird

Das einfache Beispiel oben funktioniert gut mit den Text-Completion-APIs, die text-davinci-003 benutzen. Neuerdings hat OpenAI die ChatGPT-APIs angekündigt (opens in a new tab), bei denen es sich um ein leistungsfähigeres und kostengünstigeres Modell handelt, genannt gpt-3.5-turbo, das speziell für diese Art der Funktionalität (Chat-Completion) entwickelt wurde. Tatsächlich empfiehlt OpenAI dies als ihr bestes Modell, auch für Nicht-Chat-Anwendungsfälle. Weitere Vorteile der Nutzung der ChatGPT-APIs sind signifikante Kostenreduktion (90%) und Effizienz.

Große Unternehmen wie Snap Inc. und Instacart integrieren bereits konversationelle Funktionen, die von ChatGPT angetrieben werden, in ihre Produkte, die von personalisierten Empfehlungen bis hin zu offenen Einkaufszielen reichen.


Gespräche mit ChatGPT

Mehrschrittige Konversationen

Um die Fähigkeiten von ChatGPT zu demonstrieren, werden wir das Chatbot-Assistenten-Beispiel von oben verwenden und die Ergebnisse diskutieren. Im Vergleich zu text-davinci-003 verwendet das gpt-3.5-turbo Modell, das ChatGPT antreibt, ein Chat-Format als Eingabe. Das Modell erwartet eine Reihe von Nachrichten als Eingabe und verwendet diese, um eine Antwort zu generieren.

Eingabe:

SYSTEM: Du bist ein KI-Forschungsassistent. Du verwendest einen Ton, der technisch und wissenschaftlich ist.
BENUTZER: Hallo, wer bist du?
ASSISTENT: Grüße! Ich bin ein KI-Forschungsassistent. Wie kann ich Ihnen heute helfen?
BENUTZER: Kannst du mir über die Entstehung von schwarzen Löchern berichten?

Ausgabe:

ASSISTENT: Natürlich! Schwarze Löcher entstehen, wenn ein massiver Stern keinen Treibstoff mehr hat und unter seiner eigenen Gravitation kollabiert. Dieser Kollaps führt dazu, dass der Stern unglaublich dicht wird, mit einem Gravitationsfeld so stark, dass nicht einmal Licht ihm entkommen kann. Dieser Punkt ohne Wiederkehr ist als Ereignishorizont bekannt. Sobald ein Stern den Ereignishorizont überschreitet, wird er als schwarzes Loch betrachtet...

Beachten Sie, dass ich im obigen Beispiel die Eingabe und Ausgabe vereinfacht habe, aber die ChatGPT-Chat-Completion-API erfordert, dass Nachrichten in einem spezifischen Format vorliegen. Untenstehend habe ich eine Momentaufnahme hinzugefügt, wie dieses Beispiel im Chat Mode im OpenAI Playground aussehen würde:

CHATGPT1

Der formellere API-Aufruf für unser Beispiel sähe etwa so aus wie das folgende Beispiel:

import openai
 
openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "Du bist ein KI-Forschungsassistent. Du verwendest einen Ton, der technisch und wissenschaftlich ist."},
        {"role": "user", "content": "Hallo, wer bist du?"},
        {"role": "assistant", "content": "Grüße! Ich bin ein KI-Forschungsassistent. Wie kann ich Ihnen heute helfen?"},
        {"role": "user", "content": "Kannst du mir über die Entstehung von schwarzen Löchern berichten?"}
    ]
)

Tatsächlich wird erwartet, dass die Art und Weise, wie Entwickler in Zukunft mit ChatGPT interagieren, über die Chat Markup Language (opens in a new tab) (kurz ChatML) erfolgen wird.

Einzelschritt-Aufgaben

Das Chat-Format ermöglicht mehrschrittige Konversationen, aber es unterstützt auch Einzelschritt-Aufgaben, ähnlich wie wir es mit text-davinci-003 verwendet haben. Das bedeutet, dass wir ChatGPT für ähnliche Aufgaben verwenden können, wie wir sie für die ursprünglichen GPT-Modelle demonstriert haben. Versuchen wir beispielsweise, die folgende Frage-Antwort-Aufgabe mithilfe von ChatGPT durchzuführen:

Eingabe:

BENUTZER: Beantworte die Frage basierend auf dem Kontext unten. Halte die Antwort kurz und prägnant. Antworte "Unsicher über Antwort", wenn du dir nicht sicher über die Antwort bist.

Kontext: Teplizumab hat seine Wurzeln in einem New Jerseyer Arzneimittelunternehmen namens Ortho Pharmaceutical. Dort erzeugten Wissenschaftler eine frühe Version des Antikörpers, den man OKT3 nannte. Ursprünglich aus Mäusen gewonnen, war das Molekül in der Lage, an die Oberfläche von T-Zellen zu binden und deren Zelltötungspotential zu begrenzen. Im Jahr 1986 wurde es zur Verhinderung der Abstoßung von Organen nach Nierentransplantationen zugelassen und war damit der erste für den Menschen zugelassene therapeutische Antikörper.

Frage: Woraus wurde OKT3 ursprünglich gewonnen?

Antwort:

Ausgabe:

ASSISTENT: Mäuse.

Beachten Sie, dass ich die BENUTZER- und ASSISTENT-Labels hinzugefügt habe, um besser zu demonstrieren, wie die Aufgabe mithilfe von ChatGPT durchgeführt werden kann. Hier ist das Beispiel unter Verwendung des OpenAI Playgrounds:

CHATGPTCLASSIC

Formeller ausgedrückt wäre dies der API-Aufruf (ich habe nur den Nachrichtenteil der Anforderung eingeschlossen):

CONTENT = """Beantworte die Frage basierend auf dem Kontext unten. Halte die Antwort kurz und prägnant. Antworte \"Unsicher über Antwort\", wenn du dir nicht sicher über die Antwort bist.
 
Kontext: Teplizumab hat seine Wurzeln in einem New Jerseyer Arzneimittelunternehmen namens Ortho Pharmaceutical. Dort erzeugten Wissenschaftler eine frühe Version des Antikörpers, den man OKT3 nannte. Ursprünglich aus Mäusen gewonnen, war das Molekül in der Lage, an die Oberfläche von T-Zellen zu binden und deren Zelltötungspotential zu begrenzen. Im Jahr 1986 wurde es zur Verhinderung der Abstoßung von Organen nach Nierentransplantationen zugelassen und war damit der erste für den Menschen zugelassene therapeutische Antikörper.
 
Frage: Woraus wurde OKT3 ursprünglich gewonnen?
 
Antwort:
"""
 
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": CONTENT},
    ],
    temperature=0,
)

Anweisungen für Chat-Modelle

Laut der offiziellen OpenAI-Dokumentation werden auch Snapshots des gpt-3.5-turbo-Modells verfügbar gemacht. Wir können beispielsweise auf den Snapshot vom 1. März gpt-3.5-turbo-0301 zugreifen. Dies erlaubt Entwicklern, spezifische Modellversionen zu wählen. Das bedeutet auch, dass sich die besten Praktiken für das Instruieren von Modellen von Version zu Version ändern können.

Die aktuelle Empfehlung für gpt-3.5-turbo-0301 besteht darin, Anweisungen in der user-Nachricht hinzuzufügen, anstatt in der verfügbaren system-Nachricht.


Referenzen