Prompt Engineering: Effektive Strategien für die Interaktion mit Sprachmodellen

Juni 11, 2024 | Techartikel | Autor: Andreas Schmid & Dr. Matthias Sommer

„Prompt engineering is the art of communicating eloquently to an AI.“ [1] – Greg Brockman, Präsident & Co-Founder OpenAI

In unserem vorletzten Techartikel haben wir erläutert, wie große Sprachmodelle (engl. large language models – LLMs) mit Unternehmensdaten auf Basis der Retrieval Augmented Generation (RAG) angereichert werden können. Dabei ist RAG bereits ein fortgeschrittener Ansatz zur Optimierung von LLMs, der zwingend technisches Knowhow für die Implementierung voraussetzt. Infolgedessen stellt sich die Frage, inwieweit die Leistung von LLMs auch ohne technische Vorkenntnisse verbessert werden kann?

Antworten auf diese Frage liefert die Disziplin des Prompt Engineerings, die zahlreiche Strategien und Techniken zur natürlichsprachlichen Modelloptimierung bereitstellt. Um zu verstehen, wie Prompt-Engineering funktioniert, werden nachfolgend Prompts, Techniken und Risiken des Prompt-Engineerings sowie gängige Prompt-Muster eingeführt.

INHALTSVERZEICHNIS

1. EINFÜHRUNG IN PROMPTS

Ein Prompt ist die natürlichsprachliche Eingabe, die an ein LLM gesendet wird. Im Wesentlichen umfasst ein Prompt eine Reihe von Anweisungen, die das Ziel verfolgen, die Fähigkeiten des Modells zu verbessern, zu verfeinern oder anzupassen [2]. Die Anweisungen können aus Aufgaben, Fragen, Beschreibungen, Regeln oder Richtlinien bestehen, die die nachfolgende Interaktion mit dem LLM als auch dessen Ausgabe maßgeblich beeinflussen [3]. Innerhalb eines Prompts lassen sich mehrere Elemente identifizieren, die analog zum Spielen mit Klemmbausteinen nach dem Baukastenprinzip kombiniert werden können. Abbildung 1 veranschaulicht einen beispielhaften Prompt, der sich aus vier verschiedenen Elementen zusammensetzt.

Abbildung 1: Elemente eines Prompts

Der Prompt besteht aus den Elementen Kontext, Anweisung, Eingabedaten und Ausgabeformat. Der Kontext liefert dem LLM die Hintergrundinformationen und Rahmenbedingungen, in denen die Aktion stattfinden soll. Er hilft dem Modell, die Antwort so zu gestalten, dass sie für das vorgesehene Szenario relevant ist. Die Anweisung bildet den Kernbestandteil des Prompts und gibt dem Modell mit, was von ihm erwartet wird. Die Eingabedaten sind die Informationen, die verwendet werden sollen, um die Ausgabe zu formulieren. Zuletzt wird über das Ausgabeformat definiert, in welcher Form die Antwort erzeugt werden soll [4]. Abbildung 2 verdeutlicht, wie einfach durch geschickte Kombination der Elemente relevante und passende Antworten (zum Beispiel die Formulierung des Titels für diesen Blogartikel 😉) generiert werden können.

Prompt
Ich schreibe einen Blogartikel über Prompt Engineering. Gib mir drei Vorschläge für geeignete Titel, die die Wörter „Interaktion“ und „Sprachmodelle“ beinhalten. Die Titel sollen dieses Format haben: „Prompt Engineering: XYZ“.

Antwort ChatGPT
Natürlich, hier sind drei Vorschläge für geeignete Titel:
„Prompt Engineering: Interaktive Anwendungen von Sprachmodellen“
„Prompt Engineering: Optimierung der Sprachmodell-Interaktion“
„Prompt Engineering: Effektive Strategien für die Interaktion mit Sprachmodellen“

Abbildung 2: Ausführung eines Prompts mit zugehöriger Antwort von ChatGPT

2. TECHNIKEN UND RISIKEN DES PROMPT ENGINEERINGS

Prompt Engineering basiert auf dem Ansatz, dass die Qualität einer Ausgabe unmittelbar mit der Qualität der Benutzereingabe zusammenhängt. Somit verfolgt Prompt Engineering das Ziel, Techniken für die Optimierung von Prompts zu entwickeln sowie Risiken bei der Formulierung von Prompts zu identifizieren [3]. Gängige Techniken zur Verfassung von Prompts werden im Folgenden erläutert:

 

Technik Erklärung
Zero-Shot-Prompting Zero-Shot-Prompting beschreibt die Technik, eine Aufgabe oder Frage ohne zusätzliche Informationen an ein LLM weiterzureichen. Hierbei vertraut man darauf, dass das LLM aufgrund seines Vortrainings ohne weitere Informationen dazu in der Lage ist, eine passende Ausgabe zu generieren.
Few-Shot-Prompting Few-Shot-Prompting beschreibt die Anreicherung eines Prompts mittels exemplarischer Frage-Antwort-Paare, um dem LLM qualitativ hochwertige Beispiele als Eingabe zur Verfügung zu stellen.
Chain-of-Thought-Prompting Chain-of-Thought-Prompting ist die Aufforderung an das LLM, den Lösungsweg einer Aufgabe in die Ausgabe zu integrieren, damit die vermeintliche Gedankenkette des LLMs für den Benutzer sichtbar wird.
Generated-Knowledge-Prompting Generated-Knowledge-Prompting basiert auf der Idee, mittels mehrerer Prompts potenziell nützliche Informationen zu generieren, bevor abschließend eine finale Fragestellung an das LLM gesendet wird. Diese soll mithilfe des zuvor generierten Wissens gelöst werden.

 

Zur Verdeutlichung dieser Techniken wenden wir beispielhaft das Few-Shot- und Chain-of-Thought-Prompting auf das obige Beispiel an:

Prompt
Ich schreibe einen Blogartikel über Prompt Engineering. Gib mir drei Vorschläge für geeignete Titel, die die Wörter „Interaktion“ und „Sprachmodelle“ beinhalten. Die Titel sollen dieses Format haben: „Prompt Engineering: XYZ“. Ein Beispiel wäre „Prompt Engineering: Effektive Strategien für die Interaktion mit Sprachmodellen“. Lege bitte dar, wie du auf den Titel gekommen bist.

Antwort ChatGPT
Natürlich, hier sind drei Titelvorschläge für deinen Blogartikel über Prompt Engineering mit den Wörtern „Interaktion“ und „Sprachmodelle“:

„Prompt Engineering: Optimale Interaktionsmuster mit Sprachmodellen entwickeln“
Dieser Titel betont die Entwicklung von effektiven Interaktionsmustern mit Sprachmodellen, was für Leser:innen besonders relevant sein könnte, die nach praxisorientierten Tipps suchen.

„Prompt Engineering: Die Kunst der präzisen Interaktion mit Sprachmodellen“
Hier wird die präzise Interaktion hervorgehoben, was darauf hinweist, dass es eine Kunst ist, die richtigen Prompts zu verwenden, um gewünschte Ergebnisse von Sprachmodellen zu erhalten.

„Prompt Engineering: Neue Horizonte in der Interaktion mit modernen Sprachmodellen“
Dieser Titel hebt die Idee hervor, dass Prompt Engineering neue Möglichkeiten für die Interaktion mit modernen Sprachmodellen eröffnet und Leser:innen neugierig machen kann, welche Innovationen es gibt.

Diese Titel wurden gewählt, um die Leser:innen auf verschiedene Aspekte von Prompt Engineering und dessen Bedeutung für die Interaktion mit Sprachmodellen aufmerksam zu machen. Es ist wichtig, das Interesse der Leser:innen zu wecken und sie dazu zu bringen, mehr über diese spannenden Themen zu erfahren.

Abbildung 3: Anwendung von Few-Shot- und Chain-of-Thought-Prompting

Neben den erwähnten Techniken sind bei der Formulierung von Prompts zudem einige Risiken zu beachten:

 

Risiko Erklärung
Overfitting Enthält ein Prompt zu viele oder zu spezifische Informationen, kann dies die Ausgabe des LLMs negativ beeinflussen. Hier spricht man vom sog. Overfitting, der Überanpassung des Modells auf den formulierten Prompt.
Verzerrungen Beinhaltet ein Prompt verzerrte Informationen, Vorurteile oder Vermutungen, besteht die Gefahr, dass das LLM ebenfalls verzerrte oder voreingenommene Antworten liefert, die nicht objektiv sind.
Fehlender Kontext Ist ein Prompt zu generisch formuliert, wird die Ausgabe des LLMs ebenfalls generisch ausfallen. Daher ist es notwendig, Prompts in einen Kontext einzuordnen, um konkretere Antworten des LLMs zu erhalten.

3. PROMPT-MUSTER ALS BEWÄHRTE LÖSUNGSSCHABLONEN

Ähnlich wie Software-Entwurfsmuster liefern Prompt-Muster wiederverwendbare Lösungen für spezifische, wiederkehrende Probleme. Während Software-Entwurfsmuster einen programmatischen Ansatz zur Lösung gängiger Herausforderungen bei der Softwareentwicklung bieten, liefern Prompt-Muster einen Ansatz zur Anpassung der Ausgabe von LLMs. Prompt-Muster sind beliebig miteinander kombinierbar und bieten die Möglichkeit, die zuvor erläuterten Techniken des Prompt Engineerings bewusst einzusetzen sowie die bekannten Risiken in der Interaktion mit LLMs zu minimieren. Eine ausführliche Beschreibung zahlreicher Prompt-Muster liefert die Veröffentlichung von White et al. [3], die einen Katalog an Prompt-Mustern in Anlehnung an den Software-Entwurfsmusterkatalog der Gang of Four um Erich Gamma bereitstellen. Abbildung 4 stellt einige Prompt-Muster des Katalogs dar.

Abbildung 4: Prompt-Muster Katalog

Um zu verdeutlichen, wie Prompt-Muster funktionieren, werden nachfolgend drei der populärsten Prompt-Muster vorgestellt.

TEMPLATE-MUSTER

Mit dem Template-Muster kann sichergestellt werden, dass die Ausgabe einer vordefinierten Struktur bzw. Schablone folgt. Dieses Muster ist besonders sinnvoll, wenn die Ausgabe in einem bestimmten Format für weitere Anwendungsfälle benötigt wird, sodass die Ausgabe des LLMs direkt weiterverarbeitet werden kann.

,,Erstelle mir einen dreitägigen Reiseplan für München. Antworte mir, in dem du die folgende Vorlage verwendest:
<TAG>: Besuche <ORT> um <UHRZEIT> für <AKTIVITÄT>

Meine Platzhalter sind:
<TAG> für den Tag des Reiseplans
<ORT> für den zu besuchenden Ort
<UHRZEIT> für die vorgeschlagene Besuchszeit
<AKTIVITÄT> für die Aktivität an diesem Ort“

Abbildung 5: Beispielprompt des Template-Musters

PERSONA-MUSTER

In bestimmten Fällen kann es von Vorteil sein, wenn das LLM die Ausgabe aus einer bestimmten Perspektive oder Sichtweise formuliert. In diesem Fall hilft das Persona-Muster, in dem es sicherstellt, dass das LLM aus der Perspektive einer bestimmten Person antwortet.

,,Antworte von nun an aus der Perspektive eines IT-Sicherheitsexperten. Achte genau auf die sicherheitsrelevanten Aspekte des nachfolgenden Quellcodes und formuliere deine Antwort so, wie es ein IT-Sicherheitsexperte machen würde.“

Abbildung 6: Beispielprompt des Persona-Musters

REFLECTION-MUSTER

Das Ziel des Reflection-Musters ist es, dem Benutzer automatisch die Gründe für die gegebenen Antworten zu erklären. Dies ermöglicht es dem Benutzer, die Validität der Ausgabe zu beurteilen und zu überprüfen.

„Korrigiere den folgenden Quellcode: […]
Liefere mir für jede Zeile, in der du eine Korrektur durchführst, eine Begründung für diese.“

Abbildung 7: Beispielprompt des Reflection-Musters

4. FAZIT

Prompt Engineering bietet zahlreiche Strategien, Techniken und Muster zur geschickten Formulierung effektiver Prompts. Dabei ist der Einstieg in das Thema denkbar einfach und geht mit nahezu keinen technischen Hürden einher. Dennoch ist zu beachten, dass die erfolgreiche Formulierung von Prompts ein gewisses Maß an Anpassung und Iteration erfordert. So kann es sein, dass ein Prompt bei ChatGPT gute und bei Gemini weniger relevante Ergebnisse erzielt. Daher gilt es im Sinne des Trial-and-Error-Prinzips, den geschriebenen Prompt schrittweise zu verfeinern und auf das jeweilige Modell abzustimmen. Dass dieser Prozess durchaus zeitaufwendig sein kann, zeigt sich an ersten Stellenausschreibungen für Prompt Engineers, die sich auf die Entwicklung und Optimierung von Prompts spezialisieren [5].

Abschließend bleibt somit festzuhalten:
1. Prompt Engineering ist ein nützliches Werkzeug zur Verbesserung der Ausgabequalität von LLMs.
2. Die Formulierung guter Prompts wird durch die Verwendung von Prompt-Mustern vereinfacht.
3. All diejenigen, die sich mit dem Thema LLMs auseinandersetzen, sollten sich ebenfalls mit Prompt Engineering befassen.

QUELLEN

  1. Prompt Engineering is the art of communicating eloquently to an AI.
  2. Liu P., Yuan W., Fu J., Jiang Z., Hayashi H., Neubig G. (2023): Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing
  3. White J., Fu Q., Hays S., Sandborn M., Olea C., Gilbert H., Elnashar A., Spencer-Smith J., Schmidt D. C. (2023): A Prompt Pattern Catalog to enhance Prompt Engineering with ChatGPT
  4. Prompt Engineering Guide: Elemente eines Prompts
  5. Was macht ein KI Prompt Engineer?