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).
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 | 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.
|
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 | Bemerkung |
---|---|
Fasse den in Anführungszeichen gesetzten Text auf Deutsch zusammen.
|
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).
Beispiel | Bemerkung |
---|---|
Befolge die folgenden Schritt-für-Schritt-Anweisungen, um auf meine Eingaben zu reagieren.
|
|
Halte dich an diese Schritte um auf meine Fragen zu reagieren:
|
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 | Bemerkung |
---|---|
Input: |
Suggest three names for an animal that is a superhero.
|
Quelle: Quickstart (OpenAI API), von OpenAI |
Output: | |
For a superhero horse:
1. Thunderhoof 2. Equine Avenger 3. Stallion Sentinel |
Beispiel | Bemerkung |
---|---|
Input: |
Vervollständige
|
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 | Bemerkung |
---|---|
Input: |
Vervollständige
|
Nutze diesen Link , um den Chatverlauf (ChatGPT-3.5) zu diesem Beispiel anzuschauen. |
Output: | |
Wüste,Tundra,Gebirge,Oase |
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})
|
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).
Beispiel | Bemerkungen |
---|---|
Fasse den durch dreifache Anführungszeichen markierten Text in etwa 50 Wörtern zusammen.
|
|
Fasse den durch dreifache Anführungszeichen abgegrenzten Text in 2 Absätzen zusammen.
|
|
Fasse den durch dreifache Anführungszeichen abgegrenzten Text in 3 Bullet Points zusammen.
|
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).
Beispiele | Bemerkungen |
---|---|
Halte dich an diese Schritte um auf meine Fragen zu reagieren:
|
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 | 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})
|
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 | 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.
|
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]
|
Im letzten Prompt wird der letzte Chunk des Textes übermittelt. |
Links
ChatGPT Best Practices (OpenAI API):
Weitere Onlinequellen zu Promting:
- https://github.com/openai/openai-cookbook/blob/main/techniques_to_improve_reliability.md
- https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api
- https://www.scribbr.com/ai-tools/chatgpt-prompts/
Sammlung von Promptbeispielen:
Quellen
- GPT best practices [Internet]. [zitiert 31. August 2023]. OpenAI Platform. Verfügbar unter: https://platform.openai.com