Zum Inhalt

Bessere Chatbot-Antworten mit Prompt-Engineering

Bessere Chatbot-Antworten mit Prompt-Engineering
Einleitende Fragen

An wen richtet sich dieser Guide?
Dieser Guide richtet sich an alle, insbesondere an diejenigen, die Anregungen für einen effizienteren Umgang mit Chatbots (wie ChatGPT) suchen.

Was findest du hier?
Hier findest du Tipps, wie du deine Prompts optimieren kannst, um bessere Chatbot-Antworten zu erhalten. Generell gilt für Chatbots: Je besser die Prompts, desto besser die Antworten.

Wie kannst du die Inhalte hier nutzen?
Wir haben hier einige Strategien und Taktiken aus dem Bereich "Prompt Engineering" zusammengestellt. Die Strategien sind eher nur allgemeine Hinweise und dienen vor allem als Aufhänger für die Taktiken. Unter den Taktiken findest du konkrete Vorschläge und Beispiele.

Du kannst auch gerne die ganzen Erklärungen überspringen und nur die einzelnen Promptbeispiele "copy-pasten", um selbst damit zu experimentieren.

Woher stammen die hier gezeigten Inhalte?
Die Idee, die Tipps in Strategien und Taktiken zu unterteilen, haben wir teilweise aus den "Best Practices" der OpenAI-Dokumentation zur ChatGPT-API (GPT-4) übernommen und stellenweise ergänzt.

Ganz unten findest du Links, die u.a. zu den verwendeten Quellen führen.

Funktionieren die gezeigten Inhalte?
Die meisten Beispiele wurden im September 2023 mit ChatGPT-3.5 getestet. Allerdings funktionieren sie mit anderen Chatbots (wie Bard von Google) möglicherweise nicht so gut. Auch kann es sein, dass die hier vorgestellten Inhalte mit jeder neuen Version von ChatGPT an Aktualität verlieren bzw. nicht mehr effizient sind.

Tipp: Bevor du aufgibst, versuche beim Ausprobieren der Beispiele einen neuen Chat-Dialog zu öffnen oder benutze den "Regenerate"-Button in ChatGPT, um eine von mehreren Antworten auszuwählen.

Über Prompts

Prompts sind textbasierte Anfragen oder Befehle, die bei der Interaktion mit Large Language Models (LLMs) wie GPT-3.5 oder GPT-4 verwendet werden. Sie dienen als Eingabeaufforderungen, um eine bestimmte Ausgabe oder Antwort vom Modell zu erhalten. Während der Entwicklung oder des Trainings eines LLM werden Prompts verwendet, um das Verhalten des Modells zu testen und zu optimieren.

Für Endbenutzer:innen sind Prompts das wichtigste Mittel, um mit Systemen wie ChatGPT zu kommunizieren, Fragen zu stellen, Text zu generieren oder bestimmte Aufgaben auszuführen. Prompts sind relevant, da sie die Qualität und Relevanz der Antworten des Modells beeinflussen können. Gut formulierte Prompts ermöglichen präzise, kontextbezogene und nuancierte Antworten.

Um effektive Prompts zu schreiben, sollten diese z.B. klar und eindeutig formuliert sein, den Kontext berücksichtigen und ggf. mehrere Versuche erfordern, um die optimale Formulierung zu finden.

Was ChatGPT-3.5 zur Formulierung von Prompts sagt:

Diese Punkte können dazu beitragen, die Interaktion mit ChatGPT effizienter und informativer zu gestalten:

Klarheit und Präzision: Formulieren Sie Ihre Fragen oder Anweisungen klar und eindeutig. Vagheit oder Mehrdeutigkeit kann zu ungenauen oder nicht hilfreichen Antworten führen.

Kontext bieten: Wenn Ihre Frage auf vorherige Informationen aufbaut oder spezifisch ist, geben Sie ausreichend Kontext. Dies hilft dem Modell, Ihre Anfrage besser zu verstehen.

Frageform: Überlegen Sie, ob eine offene oder geschlossene Frage angebracht ist. Offene Fragen fördern ausführlichere Antworten, während geschlossene Fragen kurze, direkte Antworten hervorbringen.

Zielformat definieren: Wenn Sie eine bestimmte Art von Antwort möchten (z.B. eine Liste, ein Absatz, etc.), geben Sie dies in Ihrer Anfrage an.

Anzahl der gewünschten Punkte oder Beispiele: Wenn Sie eine Liste von Punkten oder Beispielen wollen, geben Sie die gewünschte Anzahl an. Zum Beispiel: "Nenne mir drei Vorteile von…"

Begrenzung der Antwortlänge: Wenn Sie eine kurze Antwort möchten, können Sie das explizit angeben, etwa "Bitte fasse die Antwort in einem Satz zusammen."

Fachspezifische Anfragen: Wenn Ihre Frage fachspezifisch ist, versuchen Sie, die relevante Terminologie zu verwenden, damit das Modell den Kontext besser versteht.

Überprüfung der Informationen: Denken Sie daran, dass ChatGPT zwar viele Informationen bereithält, aber nicht immer 100% akkurat ist. Für kritische Anwendungen sollten Sie die bereitgestellten Informationen überprüfen.

Anpassungen und Nachfragen: Zögern Sie nicht, Nachfragen zu stellen oder das Modell um Klarstellungen zu bitten, wenn die erste Antwort nicht ausreichend oder klar ist.

Explizite ethische oder praktische Einschränkungen: Wenn es ethische oder praktische Grenzen für Ihre Anfrage gibt, geben Sie diese an. Zum Beispiel: "Geben Sie mir Vorschläge, die umweltfreundlich sind."

Allgemeingültige Prinzipen

Bevor wir zu den Strategien, Taktiken und Beispiel überhehen, hier noch ein paar allgemeingültige Tipps:

  • Formuliere deine Prompts klar und spezifisch
  • Sag dem Chatbot, was er tun soll, anstatt ihm vorzugeben, was er nicht tun soll
  • Reichere deine Prompts mit Details an
  • Überprüfe ggf. die Antworten
  • Experimentiere: schreibe um, kombiniere verschiedene "Taktiken", vergleiche deine Ergebnisse

Mit dem Gebrauch einer klaren und spezifischen Sprache lässt sich der Chatbot quasi in die korrekte Richtung lenken.

Strategie: Schreibe klare Instruktionen

Mit klar und spezifisch formulierten Anweisungen lässt sich vermeiden, dass dem LLM hinter dem Chatbot zu viel Interpretationsspielraum zugelassen wird.

Taktik: Details und Kontext angeben

Um eine relevante Antwort zu erhalten, solltest du sicherstellen, dass die Anfragen alle wichtigen Details oder den Kontext enthalten. Andernfalls überlasst man es dem Modell, zu erraten, was du meinst (1).

Beispiele mit optimierten Prompts. Quelle: GPT Best Practises (OpenAI API), von OpenAI

Schlecht Besser
Wie kann ich in Excel Zahlen hinzufügen?

Wie addiere ich eine Reihe von Dollarbeträgen in Excel? Ich möchte dies automatisch für ein ganzes Blatt von Zeilen tun, wobei alle Summen rechts in einer Spalte mit der Bezeichnung "Total" enden.

Wer ist Präsident?

Wer war 2021 der Präsident Mexikos, und wie häufig werden Wahlen abgehalten?

Schreibe einen Code zur Berechnung der Fibonacci-Folge.

Schreibe eine TypeScript-Funktion zur effizienten Berechnung der Fibonacci-Folge. Kommentiere den Code grosszügig, um zu erklären, was jeder Teil tut und warum er so geschrieben ist.

Fasse die Besprechungsnotizen zusammen.

Fasse die Besprechungsnotizen in einem einzigen Absatz zusammen. Erstelle dann eine Liste der Redner und ihrer wichtigsten Punkte. Führe abschliessend die von den Rednern vorgeschlagenen nächsten Schritte oder Massnahmen auf, falls vorhanden.

Taktik: Role Prompting

Weist man dem Chatbot eine bestimmte Rolle (oder Persona) zu, spiegelt sich diese in seinen Antworten wider. Dies kann z.B. genutzt werden, wenn die Antworten in einer fachspezifischen Sprache erfolgen oder fachspezifische Inhalte enthalten sollen.

Tipp

Im Internet gibt es etliche Beispiele, die unter den Begriffen "Role Prompting", "Persona", "Assigning Roles", "Role Based Prompts" oder "Act as" aufgefürt sind.

Beispiele von Role Prompting für rollenspezifische Antworten.

Beispiele Bemerkungen

Nimm die Rolle eines Studierendenbetreuers an...

...antworte mit einem konstruktiven Vorschlag zu jedem Kritikpunkt.

...antworte mit kurzen und objektiven Antworten.

Verhalte dich wie ein wissenschaftlicher Betreuer, der Studierenden an einer Hochschule Feedback zum Schreiben wissenschaftsjournalistischer Artikel gibt.
Überprüfe und bewerte kritisch den aktuellen Stand dieses Teils meines wissenschaftsjournalistischen Artikels.
Beurteile die Klarheit meiner Erklärungen, die sprachliche Gewandtheit und die Art und Weise, wie ich den Text strukturiert habe, und übe konstruktive Kritik zu jedem Punkt.
Achte darauf, den Text im Hinblick auf das geforderte Niveau wissenschaftsjournalistischen Schreibens zu beurteilen und gib an erster Stelle an, ob der Text das Niveau erreicht.

"""Lorem ipsum, ..."""

Eine etwas ausführlicher Prompt, um ein Feedback zur geschriebener Seminararbeit einzuholen.

Die hier verwendeten Prompts basieren teilweise auf Inhalte dieser Quellen:

Awesome ChatGPT Prompt Repositiry von Fatih Kadir Akın

Using ChatGPT for Assignments von Scribbr.com

Taktik: Trennzeichen nutzen

Trennzeichen können verwendet werden, um dem Chatbot mitzuteilen, dass bestimmte Teile deines Prompts unterschiedlich zu behandeln sind (1).

Beispielsweise wird nach der eigentlichen Anweisung, eine Textzusammenfassung zu erstellen, der zusammenzufassende Text mit drei Anführungszeichen ("""...""") markiert, oder mit einem Präfix (Text: ..., Titel: ..., etc.).

Beispiel zum Nutzen von Trennzeichen. Auf Basis von GPT Best Practises (OpenAI API), von OpenAI.

Beispiel Bemerkung

Fasse den in Anführungszeichen gesetzten Text auf Deutsch zusammen.

""" Lorem ipsum... """

Taktik: Step-by-Step anleiten

Einige Aufgaben lassen sich am besten als eine Abfolge von Schritten beschreiben. Wenn die Schritte explizit aufgeschrieben werden, kann das Modell sie leichter nachvollziehen (1).

Beispiele von Step-by-Step Anleitungen.

Beispiel Bemerkung

Befolge die folgenden Schritt-für-Schritt-Anweisungen, um auf meine Eingaben zu reagieren.

Schritt 1 - Ich gebe dir einen in dreifachen Anführungszeichen gesetzten Text. Fasse diesen Text in einem Satz mit dem Präfix "Zusammenfassung:" zusammen.

Schritt 2 - Übersetze die Zusammenfassung aus Schritt 1 ins Englische, mit einem Präfix "Uebersetzung:".

"""Lorem ipsum, ..."""

Halte dich an diese Schritte um auf meine Fragen zu reagieren:

Step 1 - Ich werde dir einen Text geben, der durch dreifache Anführungszeichen (""") begrenzt ist, merke dir diesen Text im weiteren Chat-Verlauf.

Step 2 - Du bestätigst, dass du den Text erhalten hast und sagst mir, dass du nun bereit bist für meine Fragen.

Step 3- Du beantwortest jeder meiner Fragen, indem du den angegebenen Text verwendest. Wenn du die Antwort im angegebenen Text nicht findest, schreibe immer "Ich konnte keine Antwort finden".

"""Lorem ipsum, ..."""

Dies ist eine erweiterte Version der obrigen Anweisung. Mit Step 2 und 3 wollten wir erreichen, dass der Chatbot auf unsere Fragen wartet. Ohne diese Anpassung hatte ChatGPT (ChatGPT-3.5) z.T. kuriose Antworten generiert.

Nutze diesen Link, um einen Chatverlauf (ChatGPT-3.5) zu diesem Beispiel anzuschauen. Der damals verwendete Text stammte von Wikipedia:
(https://de.wikipedia.org/wiki/Joseph_Bazalgette).

Taktik: Beispiele angeben

In einigen Fällen kann es einfacher sein, Beispiele für die erwartete Antwort zu geben. Zum Beispiel, wenn du beabsichtigst, dass das Modell einen bestimmten Stil der Beantwortung von Benutzeranfragen kopiert, der schwer explizit zu beschreiben ist (1).

Bemerkung

Das Angeben von Beispielen wird als «one shot», «two shot»-, bzw. «few-shot»-Prompting bezeichnet, wobei «shot» ein Synonym für «Beispiel» ist.

Beispiel mit Few Shots.

Beispiel Bemerkung

Input:

Suggest three names for an animal that is a superhero.

Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: Horse
Names:

Quelle: Quickstart (OpenAI API), von OpenAI
Output:
For a superhero horse:
1. Thunderhoof
2. Equine Avenger
3. Stallion Sentinel

Beispiel mit Few Shots.

Beispiel Bemerkung

Input:

Vervollständige

Typ: Blutzellen
Zellen: Erythrozyten, Leukozyten, Thrombozyten
Typ: Muskelzellen
Zellen: Skelettmuskulaturzellen, Herzmuskelzellen, glatte Muskelzellen
Typ: Gewebszellen
Zellen:

Nutze diesen Link, um den Chatverlauf (ChatGPT-3.5) zu diesem Beispiel anzuschauen.
Output:
Typ: Gewebszellen
Zellen: Fibroblasten, Epithelzellen, Adipozyten (Fettzellen), Chondrozyten (Knorpelzellen), Osteozyten (Knochenzellen), Neuronen (Nervenzellen), Astrozyten (Gliazellen), Makrophagen, Mastzellen, Endothelzellen

Beispiel mit Few Shots.

Beispiel Bemerkung

Input:

Vervollständige

Input: "Stunde","Montag","Dienstag","Mittwoch","Donnerstag","Freitag"
Output: Stunde,Montag,Dienstag,Mittwoch,Donnerstag,Freitag
Input: "1","Mathematik","Deutsch","Englisch","Erdkunde","Politik"
Output: 1,Mathematik,Deutsch,Englisch,Erdkunde,Politik
Input: 'Sport','Religion','Kunst'
Output: Sport,Religion,Kunst
Input: 'Wüste', 'Tundra', 'Gebirge', 'Oase'
Output:

Nutze diesen Link , um den Chatverlauf (ChatGPT-3.5) zu diesem Beispiel anzuschauen.
Output:
Wüste,Tundra,Gebirge,Oase

Beispiel wie ChatGPT aus dem Referenztext zitieren soll.

Beispiel Bemerkung

Input:

You will be provided with a document delimited by triple quotes and a question. The you will wait for my questions. Your task is then to answer the question using only the provided document and to cite the passage(s) of the document used to answer the question. If the document does not contain the information needed to answer this question then simply write: "Insufficient information." If an answer to the question is provided, it must be annotated with a citation. Use always the following format for to cite relevant passages like ({"citation": the person was born in berlin})

"""Das Haus Anjou-Plantagenêt (französisch [ɑ̃ˈʒu-ˌplɑ̃taʒ'nɛ], ..."""

Quelle: GPT Best Practises (OpenAI API), von OpenAI und leicht adaptiert.

Nutze diesen Link, um einen Chatverlauf (ChatGPT-3.5) zu diesem Beispiel anzuschauen. Der dort verwendete Text stammte aus einem Wikipedia-Eintrag:
https://de.wikipedia.org/wiki/Haus_Plantagenet

Taktik: Gewünschtes Antwortformat verlangen

Das Modell kann angewiesen werden, Ausgaben mit einer bestimmten Ziellänge zu erzeugen. Die gewünschte Ausgabelänge kann als Anzahl von Wörtern, Sätzen, Absätzen, Aufzählungspunkten usw. angegeben werden.

Es ist jedoch zu beachten, dass die Anweisung an das Modell, eine bestimmte Anzahl von Wörtern zu erzeugen, nicht mit hoher Genauigkeit funktioniert. Das Modell kann zuverlässiger Ausgaben mit einer bestimmten Anzahl von Absätzen oder Aufzählungspunkten erzeugen (1).

Beispiele zu gewünschten Antwortformaten. Quelle: GPT Best Practises (OpenAI API) von OpenAI

Beispiel Bemerkungen

Fasse den durch dreifache Anführungszeichen markierten Text in etwa 50 Wörtern zusammen.
"""Lorem ipsum, ... """

Fasse den durch dreifache Anführungszeichen abgegrenzten Text in 2 Absätzen zusammen.
"""Lorem ipsum, ... """

Fasse den durch dreifache Anführungszeichen abgegrenzten Text in 3 Bullet Points zusammen.
"""Lorem ipsum, ... """


Strategie: Referenztexte nutzen

Chatbots wie ChatGPT generieren ihre Antworten anhand der verwendeten Trainingsdaten, was in einigen Fällen unzureichend sein kann. Im Falle von ChatGPT ist es möglich, einen Referenztext zur Verfügung zu stellen und den Chatbot anzuweisen, Antworten auf der Grundlage dieses Textes zu generieren. Zum Beispiel, um dem Chatbot Fragen zu einem bestimmten Artikel zu stellen.

Bemerkung

Zu beachten ist, dass bei ChatGPT die Grösse der Prompts begrenzt ist (Context Limit) und längere Referenztexte diesen Rahmen schnell sprengen können. Dieses Problem kann ggf. dadurch umgangen werden, indem der Referenztext abschnittsweise in "Chunks" mit mehreren Prompts übermittelt wird (siehe "Strategie: In Teile zerlegen").

Taktik: Referenztexte als Basis für Antworten

Um Antworten zu generieren, die spezifisch für den Referenztext sind, kann der Chatbot angewiesen werden, Fragen mit Hilfe des übermittelten Textes zu beantworten (1).

Beispiel: Referenztexte als Basis für Antworten

Beispiele Bemerkungen

Halte dich an diese Schritte um auf meine Fragen zu reagieren:

Step 1 - Ich werde dir einen Text, der durch dreifache Anführungszeichen (""") begrenzt ist, merke dir diesen Text im weiter Verlauf unserer Konversation (""")

Step 2 - Du bestätigst, dass du den Text erhalten hast und sagst mir, dass du nun bereit bist für meine Fragen

Step 3- Du beantwortest jeder meiner Fragen, indem du den angegebenen Text verwendest. Wenn du die Antwort im Angegebenen Text findest, schreibe "Ich konnte keine Antwort finden".

"""Sir Joseph William Bazalgette (Aussprache: /ˈbæzəldʒɛt/; * 28. März 1819..."""

Dieser Prompt basiert auf den "Best Practices" der englischen OpenAI-Dokumentation zur OpenAI-API . Wir haben die dortigen Prompts übersetzt und adaptiert. Da das Hochladen von Dokumenten bei der Freemium-Version noch nicht möglich war (Stand August 2023), wurde der Referenztext direkt in den Prompt reinkopiert.

Nutze diesen Link, um einen Chatverlauf (ChatGPT-3.5) zu diesem Beispiel anzuschauen. Der dort verwendete Text stammte aus einem Wikipedia-Eintrag:
https://de.wikipedia.org/wiki/Joseph_Bazalgette

Taktik: Antworten mit Zitaten aus einem Referenztext generieren

Hier wird die oben beschriebene Taktik erweitert, indem der Chatbot angewiesen wird, die entsprechenden Passagen des Referenztextes wiederzugeben. Dies kann bei der Überprüfung der generierten Antworten hilfreich sein. Beispielsweise kann das Nachschlagen im verwendeten Referenztext so erleichtert werden.

Beispiel: Referenztexte als Basis für Antworten nutzen und mit Zitierungshinweisen antworten lassen.

Beispiel Bemerkung

You will be provided with a document delimited by triple quotes and a question. The you will wait for my questions. Your task is then to answer the question using only the provided document and to cite the passage(s) of the document used to answer the question. If the document does not contain the information needed to answer this question then simply write: "Insufficient information." If an answer to the question is provided, it must always be annotated with a citation. Use always the following format for to cite relevant passages like ({"citation": the person was born in berlin})

Text:
"""Sir Joseph William Bazalgette (Aussprache: /ˈbæzəldʒɛt/;

Dies ist eine erweiterte Version der obrigen Anweisung. Mit Step 2 und 3 wollten wir erreichen, dass der Chatbot auf unsere Fragen wartet. Ohne diese Anpassung hatte ChatGPT (ChatGPT-3.5) z.T. kuriose Antworten generiert.

Nutze diesen Link, um einen Chatverlauf (ChatGPT-3.5) zu diesem Beispiel anzuschauen. Der damals verwendete Text stammte von Wikipedia:
(https://de.wikipedia.org/wiki/Joseph_Bazalgette).

Strategie: In Teile zerlegen

Manchmal ist es sinnvoller komplexere Aufgaben in kleinere Teilaufgaben zu zerlegen.

Taktik: Lange Texte stückweise übermitteln

Die Verarbeitung grösserer Texte kann ggf. durch das vorhandene Context Limit verhindert werden. Beispielsweise können längere Texte, die der Chatbot zusammenfassen soll, nicht in einem Prompt übermittelt werden. Diese Einschränkung lässt sich ggf. umgehen, indem die Texte in "Chunks" mit mehreren Prompts übermittelt werden.

Beispiel eines langen Texts, der stückweise übermittelt wird.

Beispiel Bemerkung

Do not answer yet. This is just another part of the text I want to send you. Just receive and acknowledge as "Part 1/2 received" and wait for the next part.
[START PART 1/2]
"""Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet..."""
[END PART 1/2]
Remember not answering yet. Just acknowledge you received this part with the message "Part 1/2 received" and wait for the next part.

Diese Prompts wurden aus dem ChatGPT PROMPTs Splitter von Jose Diaz übernommen. Mit diesem Tool lassen sich längere Texte einfach und mit passenden Prompt-Anweisungen aufteilen.

Im ersten Prompt wird der erste Chunk des Textes übergeben.

[START PART 2/2]
""...et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."""
[END PART 2/2]
ALL PARTS SENT. Now you can continue processing the request.

Im letzten Prompt wird der letzte Chunk des Textes übermittelt.

ChatGPT Best Practices (OpenAI API):

Weitere Onlinequellen zu Promting:

Sammlung von Promptbeispielen:


Quellen

  1. GPT best practices [Internet]. [zitiert 31. August 2023]. OpenAI Platform. Verfügbar unter: https://platform.openai.com