6 Strategien mit zugehörigen Taktiken:
Vor kurzem brachte OpenAI seinen Guide für das Prompting in Large Language Modellen raus. Auch wenn einige der Taktiken eher für Entwickler angedacht sind, können viele der genannten Strategien und Taktiken auch für den Endnutzer im alltäglichen Dialog mit ChatGPT genutzt werden, um präzisere und den eigenen Vorstellungen entsprechende Antworten zu erhalten. Im Folgenden sind die 6 Strategien einmal mit ihren insgesamt 18 Taktiken zusammengefasst und ggf. mit einem Beispiel versehen. Dabei umfassen die Kapitel die Themen Klarheit, Referenztexte, Aufsplitten der Aufgaben sowie weitgehenderes Know-how über die Nutzung in der Entwicklung. Detaillierte Erläuterungen und tiefgehende Beispiele für die Anwendung der Taktiken können bei Bedarf im Original nachgelesen werden: https://platform.openai.com/docs/guides/prompt-engineering.
1. Klare Anweisungen schreiben
Je genauer die Anleitungen zu dem angestrebten Endergebnis, desto schneller und direkter komme ich zu diesem Ergebnis.
Taktiken:
1.1 Angaben von wichtigen Details/Kontext (auch für Endnutzer)
Beispiel:
Statt: Wie addiere ich Zahlen in Excel?
Besser: Wie addiere ich eine Reihe von Eurowerten, die nebeneinander stehen, in Excel? Ich möchte dies für die Reihen eines gesamten Tabellenblattes automatisch tun. Dabei sollen alle Summen rechts in einer Spalte namens „Summen“ angezeigt werden
1.2 Bitten Sie das Modell darum, eine Rolle anzunehmen (auch für Endnutzer)
Beispiel:
Wenn ich nach etwas geschriebenem Frage, antworte mit einem Text, der mindestens einen Witz oder einen lustigen Kommentar in jedem Abschnitt enthält.
1.3 Verwendung von Begrenzungszeichen um unterschiedliche Teile des Inputs klar zu kennzeichnen (auch für Endnutzer)
Beispiel:
Typischerweise verwendet OpenAI für die Begrenzung des zu behandelnden Textes dreifache Anführungszeichen.
Fasse den durch dreifache Anführungszeichen abgegrenzten Text in einem Haiku zusammen.-
„„„Text“““-
1.4 Angabe der erforderlichen Schritte zur Erfüllung einer Aufgabe (auch für Endnutzer)
Beispiel:
Antworte auf den Input mit folgenden Schritten.
Schritt 1: Fasse diesen Text in einem Satz zusammen.
Schritt 2: Übersetze die Zusammenfassung aus Schritt 1 auf Spanisch.
1.5 Angabe von Beispielen (auch für Endnutzer)
Generelle Anweisungen sind oft effizienter als das Demonstrieren aller Aufgabenvarianten durch Beispiele. Konkrete Beispiele können aber hilfreich sein, wenn zum Beispiel ein spezifischer Antwortstil angestrebt wird, der schwer zu beschreiben ist, bekannt als „Few-Shot“ Prompting.
Beispiel:
Antworte in einem einheitlichen Stil;
Bring mir etwas über Geduld bei.
*Antwort folgt im gewünschten Stil*
Bring mir etwas über den Ozean bei.
1.6 Spezifizierung der gewünschten Outputlänge (auch für Endnutzer)
Beispiel:
Fasse den Text in Anführungszeichen in 2 Abschnitten zusammen.
2. Referenztext zur Verfügung stellen
Fake Antworten können entstehen, z.B. bei Fragen nach Zitationen und URLs.
Taktiken:
2.1 Anweisung an das Modell, anhand eines Referenztextes zu antworten (eher für Entwickler)
Beispiel:
Nutze die in Anführungszeichen angegebenen Artikel, um Fragen zu beantworten. Sollten die Antworten nicht im Artikel auffindbar sein, schreibe:
“keine Antwort im Text zu finden“.
2.2 Anweisung an das Modell, mit Zitationen aus dem Referenztext zu antworten (auch für Endnutzer)
Beispiel:
Beantworte die Frage nur Anhand des in Anführungszeichen angegebenen Textes. Zitiere dabei die für die Antwort verwendeten Passagen. Sollte das Dokument die notwendigen Informationen nicht erhalten, dann antworte mit „nicht genügend Informationen“. Jede Antwort muss eine Zitation im folgendem Format erhalten: ({„Zitation“: …})
3. Komplexe Aufgaben in simplere Aufgaben aufteilen
Komplexe Aufgaben als „Workflow“ simplerer Aufgaben betrachten.
Taktiken:
3.1 Klassifizieren der Absichten, um relevante Anweisungen zu identifizieren (eher für Entwickler)
Beispiel:
Sie erhalten Anfragen an den Kundendienst. Klassifizieren Sie jede Anfrage in eine primäre und eine sekundäre Kategorie. Liefern Sie Ihre Ausgabe im json-Format mit den Schlüsseln: primär und sekundär.
Primäre Kategorien: Abrechnung, Technischer Support, Kontoverwaltung oder Allgemeine Anfrage.
Sekundäre Kategorien Abrechnung: […]
Sekundäre Kategorien Technischer Support: […]
Sekundäre Kategorien Kontoverwaltung: […]
Sekundäre Kategorien Allgemeine Anfrage: […]
Beispielanfrage: „Ich muss mein Internet wieder zum Laufen bringen“
Für jede der Sekundären Kategorien kann eine Liste an Anweisungen gegeben werden, mit denen der User bei der Problembehebung unterstützt wird.
3.2 Bei Dialoganwendungen mit langen Gesprächen können Dialoge zusammengefasst oder gefiltert werden (eher für Entwickler)
Dies umgeht das Problem, dass ein Dialog mit dem Anwender als Kontext nicht unbegrenzt weiterlaufen kann.
3.3 Lange Dokumente stückweise zusammenfassen und rekursiv eine vollständige Zusammenfassung konstruieren (eher für Entwickler)
Diese Taktik kann genutzt werden, wenn ein Text, der zusammengefasst werden soll, die maximale Länge überschreitet.
4. Den Modellen Zeit zum „Denken“ geben
Durch Fragen nach Gedankenketten kann das Modell zuverlässigere Antworten liefern.
Taktiken:
4.1 Anweisung an das Modell, eine eigene Lösung zu erarbeiten, bevor übereilt Schlüsse gezogen werden (eher für Entwickler)
Beispiel:
(Mathematisches Problem eines Schülers) „Erarbeite zuerst eine eigene Lösung für das Problem. Vergleiche dann deine Lösung mit der des Schülers und evaluiere, ob die angegebene Lösung des Schülers korrekt ist. Entscheide nicht, ob die Lösung korrekt ist oder nicht bevor du nicht deine eigene Lösung gefunden hast“
4.2 Verwenden eines inneren Monologs oder einer Abfragenfolge, wenn die Argumentationskette des Modells nicht angezeigt werden soll (eher für Entwickler)
Beispiel:
Befolge diese Schritte zur Beantwortung der Benutzeranfragen:
Schritt 1 – Erarbeite zuerst eine eigene Lösung des Problems. Die Lösung des Schülers könnte falsch sein.
Schritt 2 – Vergleichen Sie Ihre Lösung mit der Lösung des Schülers und beurteilen Sie, ob die Lösung des Schülers richtig ist oder nicht.
Schritt 3 – Wenn der Schüler einen Fehler gemacht hat, überlegen Sie, welchen Hinweis Sie dem Schüler geben können, ohne die Antwort zu verraten.
4.3 Das Modell fragen, ob es in vorherigen Durchgängen etwas übersehen hat (auch für Endnutzer)
Wenn ein Modell zum Beispiel gewisse Informationen aus langen Dokumenten finden soll, kann es passieren, dass das Modell zu früh stoppt und somit nicht alle relevanten Informationen herausgegeben werden. Dies kann umgangen werden, indem ein Follow-Up Promt folgt um nach fehlenden Informationen zu fragen
5. Nutzung externer Tools
Manche Tools sind für einige Tasks besser geeignet als Large Language Modelle. Ein Beispiel hierfür ist das Ausführen von Code und Mathematik. Dafür könnten Anwendungen wie OpenAIs Code Interpreter in Kombination angewendet werden.
Taktiken:
5.1 Nutzung der auf Einbettungen basierenden Suche zur Implementierung einer effizienten Wissensabfrage (eher für Entwickler)
Modelle können verbesserte Antworten liefern, indem sie externe Informationen über Texteinbettungen und Vektorsuche integrieren, die die Relevanz von Textabschnitten zur Nutzerabfrage messen.
5.2 Codeausführung zur Durchführung genauerer Berechnungen oder zum Aufruf externer APIs (eher für Entwickler)
Beispiel:
Schreibe einen Python Code um Berechnungen durchzuführen. Rechnung: Finde alle reellwertigen Wurzeln des folgenden Polynoms: 3*x**5 – 5*x**4 – 3*x**3 – 7*x – 10.
5.3 Zugriff des Modells auf bestimmte Funktionen (eher für Entwickler)
Die Chat Completions API von OpenAI ermöglicht das Einbinden von Funktionsbeschreibungen in Anfragen, wobei Modelle Funktionsargumente generieren und diese für weitere Aufrufe nutzen können.
6.Veränderungen systematisch testen
Performance messbar zu machen, hilft bei der Verbesserung dieser. Hierfür macht es Sinn ein Evaluierungsverfahren („evals“) zu definieren. Eine gute Evaluation wäre unter anderen die Repräsentativität für die reale Nutzung. Das Software-Framework „OpenAI Evals“ stellt zum Beispiel Tools für die Erstellung automatisierter Evals bereit.
Taktiken:
6.1 Bewertung der Modellergebnisse mit Bezug auf Goldstandard-Antworten (eher für Entwickler)
Wenn feststeht, welche Fakten eine richtige Antwort beinhalten muss, ermöglicht eine Musterabfrage die Überprüfung und Zählung dieser spezifischen Fakten in der gegebenen Antwort.
Fazit
Der OpenAI Prompt Engineering Guide bietet eine umfassende Anleitung zur effizienten Nutzung von Large Language Modellen, indem er sechs Hauptstrategien mit zugehörigen Taktiken aufzeigt. Diese Strategien reichen von der Formulierung klarer Anweisungen über die Nutzung externer Tools bis hin zum systematischen Testen von Veränderungen. Sie sind sowohl für Entwickler als auch für Endnutzer hilfreich, um präzisere und nutzerspezifischere Antworten zu erhalten, wobei einige Taktiken speziell für Entwickler zur Integration und Optimierung der Modellleistung vorgesehen sind.