From badd505960f0dd960434772a5c36a5f6b8e6468c Mon Sep 17 00:00:00 2001 From: Erik Behrends Date: Mon, 1 Jan 2024 17:25:11 +0100 Subject: [PATCH 1/2] chapter improvement (German translation) --- pages/introduction.de.mdx | 2 +- pages/introduction/basics.de.mdx | 41 ++++++++++++++++++++++-------- pages/introduction/elements.de.mdx | 11 ++++++++ pages/introduction/settings.de.mdx | 18 ++++++------- 4 files changed, 50 insertions(+), 22 deletions(-) diff --git a/pages/introduction.de.mdx b/pages/introduction.de.mdx index e2d9b9a..8e09748 100644 --- a/pages/introduction.de.mdx +++ b/pages/introduction.de.mdx @@ -4,4 +4,4 @@ Prompt-Engineering ist eine relativ neue Disziplin, die sich mit der Entwicklung Dieser Leitfaden behandelt die Grundlagen von Prompts, um eine grobe Idee davon zu vermitteln, wie Sie Prompts verwenden können, um mit LLMs zu interagieren und sie zu instruieren. -Alle Beispiele sind mit `text-davinci-003` unter Verwendung von [OpenAIs Playground](https://platform.openai.com/playground) getestet, sofern nicht anders angegeben. Das Modell verwendet die Standardeinstellungen, d.h. `temperature=0.7` und `top-p=1`. +Alle Beispiele sind mit `gpt-3.5-turbo` unter Verwendung von [OpenAIs Playground](https://platform.openai.com/playground) getestet, sofern nicht anders angegeben. Das Modell verwendet die Standardeinstellungen, d.h. `temperature=1` und `top_p=1`. Die Prompts sollten auch mit anderen Modellen funktionieren, welche ähnliche Fähigkeiten wie `gpt-3.5-turbo` haben, jedoch könnten deren Antworten abweichen. diff --git a/pages/introduction/basics.de.mdx b/pages/introduction/basics.de.mdx index f2a06fb..d2e24df 100644 --- a/pages/introduction/basics.de.mdx +++ b/pages/introduction/basics.de.mdx @@ -1,8 +1,11 @@ # Grundlagen des Promptings -## Grundlegende Prompts +import {Screenshot} from 'components/screenshot' +import INTRO1 from '../../img/introduction/sky.png' -Mit einfachen Prompts können Sie viel erreichen, aber die Qualität der Ergebnisse hängt davon ab, wie viele Informationen Sie bereitstellen und wie gut diese formuliert sind. Ein Prompt kann Informationen wie die *Anweisung* oder *Frage* enthalten, die Sie an das Modell weitergeben, und weitere Details wie *Kontext*, *Eingaben* oder *Beispiele* umfassen. Sie können diese Elemente nutzen, um das Modell besser zu instruieren und als Ergebnis bessere Resultate zu erzielen. +## Prompts an ein LLM stellen + +Mit einfachen Prompts können Sie viel erreichen, aber die Qualität der Ergebnisse hängt davon ab, wie viele Informationen Sie bereitstellen und wie gut der Prompt formuliert ist. Ein Prompt kann Informationen wie die *Anweisung* oder *Frage* enthalten, die Sie an das Modell weitergeben, und weitere Details wie *Kontext*, *Eingaben* oder *Beispiele* umfassen. Sie können diese Elemente nutzen, um das Modell effektiver zu instruieren und somit die Qualität der Ergebnisse zu erhöhen. Beginnen wir mit einem grundlegenden Beispiel für einen einfachen Prompt: @@ -14,14 +17,16 @@ Der Himmel ist *Ausgabe:* ```md -blau - -Der Himmel ist blau an einem klaren Tag. An einem bewölktem Tag kann der Himmel grau oder weiß sein. +blau. ``` -Wie Sie sehen können, produziert das Sprachmodell eine Fortsetzung der Zeichenkette, die angesichts des Kontextes `"Der Himmel ist"` Sinn macht. Die Ausgabe kann unerwartet oder weit entfernt von der Aufgabe sein, die Sie erreichen wollen. +Wenn Sie den OpenAI Playground oder einen anderen Playground verwenden, dann können Sie dem Modell einen Prompt stellen, wie im folgenden Screenshot zu sehen: -Dieses grundlegende Beispiel unterstreicht auch die Notwendigkeit, mehr Kontext oder Anweisungen darüber zu geben, was genau Sie erreichen möchten. + + +Zu beachten ist, dass man bei der Verwendung der OpenAI-Chatmodelle wie `gtp-3.5-turbo` oder `gpt-4` die Struktur des Prompts mit drei verschiedenen Rollen gestalten kann: `system`, `user` und `assistant`. Eine Eingabe mit `system` ist nicht erforderlich, hilft aber, das Gesamtverhalten des Assistenten festzulegen. Das obige Beispiel beinhaltet nur eine Nutzernachricht, mit der man das Modell direkt auffordern kann. Zur Vereinfachung wird in allen Beispielen, außer es ist ausdrücklich erwähnt, nur die `user`-Nachricht verwendet, um das `gtp-3.5-turbo` Modell zu prompten. Die `assistant`-Nachricht im obigen Beispiel entspricht der Modellantwort. Man kann auch eine Assistentennachricht definieren, um Beispiele für das gewünschte Verhalten zu übermitteln, das man erreichen möchte. Mehr über das Arbeiten mit Chatmodellen kann man [hier](https://www.promptingguide.ai/models/chatgpt) erfahren. + +Man kann aus dem obigen Beispielprompt erkennen, dass das Sprachmodell mit einer Sequenz von Token antwortet, die im Kontext `"Der Himmel ist"` Sinn ergeben. Die Ausgabe könnte unerwartet oder weit von der Aufgabe entfernt sein, die man erreichen möchte. Tatsächlich hebt dieses einfache Beispiel die Notwendigkeit hervor, mehr Kontext oder Anweisungen darüber zu geben, was man speziell mit dem System erreichen möchte. Darum geht es beim Prompt-Engineering. Versuchen wir es ein wenig zu verbessern: @@ -35,10 +40,10 @@ Der Himmel ist *Ausgabe:* ``` -heute so schön. +blau am Tag und dunkel in der Nacht. ``` -Ist das besser? Nun, Sie haben das Modell angewiesen, den Satz zu vervollständigen, also sieht das Ergebnis viel besser aus, da es genau dem folgt, was Sie ihm gesagt haben ("Vervollständige diesen Satz"). Dieser Ansatz, optimale Prompts zu gestalten, um das Modell zur Ausführung einer Aufgabe zu instruieren, wird als **Prompt Engineering** bezeichnet. +Ist das besser? Nun, mit dem oben genannten Prompt weisen Sie das Modell an, den Satz zu vervollständigen, sodass das Ergebnis viel besser aussieht, da es genau dem folgt, was Sie ihm gesagt haben ("vervollständigen Sie den Satz"). Dieser Ansatz, effektive Prompts zu entwerfen, um das Modell anzuweisen, eine gewünschte Aufgabe auszuführen, wird in diesem Leitfaden als **Prompt-Engineering** bezeichnet. Das oben gezeigte Beispiel ist eine grundlegende Veranschaulichung dessen, was heute mit LLMs möglich ist. Die heutigen LLMs sind in der Lage, alle Arten von fortgeschrittenen Aufgaben zu erfüllen, von der Textzusammenfassung über mathematische Argumentation bis hin zur Codegenerierung. @@ -63,7 +68,21 @@ Q: ? A: ``` -Wenn man so promptet, wie oben, wird es auch als *Zero-Shot Prompting* bezeichnet, d.h., Sie fordern das Modell direkt ohne jegliche Beispiele oder Demonstrationen für die Aufgabe auf, eine Antwort zu geben. Einige große Sprachmodelle haben die Fähigkeit, Zero-Shot Prompting durchzuführen, aber das hängt von der Komplexität und dem Wissen über die jeweilige Aufgabe ab. +Wenn man wie oben vorgeht, spricht man auch von *Zero-Shot-Prompting*, d.h., man fordert das Modell direkt zu einer Antwort auf, ohne Beispiele oder Demonstrationen über die Aufgabe zu geben, die es erfüllen soll. Einige große Sprachmodelle haben die Fähigkeit zum Zero-Shot-Prompting, aber das hängt von der Komplexität und dem Wissen über die jeweilige Aufgabe sowie den Aufgaben ab, für die das Modell gut trainiert wurde. + +Ein konkretes Prompt-Beispiel ist wie folgt: + +*Prompt* +``` +Q: Was ist Prompt-Engineering? +``` + +Bei einigen der neueren Modelle kann man den Teil "Q:" weglassen, da es vom Modell aufgrund der Zusammensetzung der Sequenz als Fragebeantwortungsaufgabe impliziert und verstanden wird. Mit anderen Worten, der Prompt könnte wie folgt vereinfacht werden: + +*Prompt* +``` +Was ist Prompt-Engineering? +``` Angesichts des obigen Standardformats ist eine beliebte und effektive Technik beim Prompting als *Few-Shot Prompting* bekannt, bei der Sie Beispiele (d.h. Demonstrationen) bereitstellen. Sie können Few-Shot Prompts wie folgt formatieren: @@ -112,4 +131,4 @@ Was für eine fürchterliche Vorstellung! // Negativ ``` -Few-Shot Prompts ermöglichen das in-context learning, also die Fähigkeit von Sprachmodellen, Aufgaben anhand einiger Demonstrationen zu erlernen. +Few-Shot Prompts ermöglichen das in-context learning, also die Fähigkeit von Sprachmodellen, Aufgaben anhand einiger Demonstrationen zu erlernen. Wir diskutieren das Zero-Shot-Prompting und das Few-Shot-Prompting ausführlicher in den kommenden Abschnitten. diff --git a/pages/introduction/elements.de.mdx b/pages/introduction/elements.de.mdx index 7cbf103..97b6bb2 100644 --- a/pages/introduction/elements.de.mdx +++ b/pages/introduction/elements.de.mdx @@ -12,4 +12,15 @@ Ein Prompt enthält eines oder mehrere der folgenden Elemente: **Ausgabeindikator** - die Art oder das Format der Ausgabe. +Um die Elemente eines Prompts besser zu demonstrieren, hier ein einfaches Beispiel, das darauf abzielt, eine Textklassifizierungsaufgabe durchzuführen: + +*Prompt* +``` +Klassifizieren Sie den Text in neutral, negativ oder positiv +Text: Ich denke, das Essen war okay. +Stimmung: +``` + +Im obigen Beispielprompt entspricht die Anweisung der Klassifizierungsaufgabe, "Klassifizieren Sie den Text in neutral, negativ oder positiv". Die Eingabedaten entsprechen dem Teil "Ich denke, das Essen war okay." und der verwendete Ausgabeindikator ist "Stimmung:". Beachten Sie, dass dieses grundlegende Beispiel keinen Kontext verwendet, aber dieser kann auch als Teil des Prompts bereitgestellt werden. Beispielsweise kann der Kontext für dieses Textklassifizierungsprompt zusätzliche Beispiele sein, die als Teil des Prompts bereitgestellt werden, um dem Modell zu helfen, die Aufgabe besser zu verstehen und die Art der Ausgaben zu steuern, die Sie erwarten. + Sie benötigen nicht alle vier Elemente für einen Prompt und das Format hängt von der jeweiligen Aufgabe ab. Wir werden in kommenden Anleitungen auf konkretere Beispiele eingehen. diff --git a/pages/introduction/settings.de.mdx b/pages/introduction/settings.de.mdx index f2bab54..97ec1a7 100644 --- a/pages/introduction/settings.de.mdx +++ b/pages/introduction/settings.de.mdx @@ -1,21 +1,19 @@ # LLM Einstellungen -Beim Arbeiten mit Prompts interagieren Sie mit dem LLM über eine API oder direkt. Sie können einige Parameter konfigurieren, um unterschiedliche Ergebnisse für Ihre Prompts zu erhalten. +Beim Arbeiten mit Prompts interagieren Sie mit dem LLM über eine API oder direkt. Sie können einige Parameter konfigurieren, um unterschiedliche Ergebnisse für Ihre Prompts zu erhalten. Die Feinabstimmung dieser Einstellungen ist wichtig, um die Zuverlässigkeit und Attraktivität der Antworten zu verbessern, und es erfordert ein wenig Experimentieren, um die richtigen Einstellungen für Ihre Anwendungsfälle zu finden. Unten sind die gängigen Einstellungen aufgeführt, auf die Sie stoßen werden, wenn Sie verschiedene Anbieter von großen Sprachmodellen (LLMs) nutzen: -**Temperature** - Kurz gesagt, je niedriger die `temperature`, desto deterministischer sind die Ergebnisse in dem Sinne, dass immer das wahrscheinlichste nächste Token gewählt wird. Eine Erhöhung der Temperatur kann zu mehr Zufälligkeit führen und damit vielfältigere oder kreativere Ausgaben fördern. Sie erhöhen im Grunde das Gewicht der anderen möglichen Tokens. Im Hinblick auf die Anwendung möchten Sie vielleicht einen niedrigeren Temperaturwert für Aufgaben wie faktenbasierte QA verwenden, um präzisere und knappere Antworten zu fördern. Für die Generierung von Gedichten oder andere kreative Aufgaben könnte es vorteilhaft sein, den Temperaturwert zu erhöhen. +**Temperatur** - Kurz gesagt, je niedriger die `temperature`, desto deterministischer sind die Ergebnisse in dem Sinne, dass immer das wahrscheinlichste nächste Token gewählt wird. Eine Erhöhung der Temperatur kann zu mehr Zufälligkeit führen und damit vielfältigere oder kreativere Ausgaben fördern. Sie erhöhen im Grunde das Gewicht der anderen möglichen Tokens. Im Hinblick auf die Anwendung möchten Sie vielleicht einen niedrigeren Temperaturwert für Aufgaben wie faktenbasierte QA verwenden, um präzisere und knappere Antworten zu fördern. Für die Generierung von Gedichten oder andere kreative Aufgaben könnte es vorteilhaft sein, den Temperaturwert zu erhöhen. -**Top_p** - Ähnlich ist es mit `top_p`, eine Stichprobentechnik mit Temperatur namens _nucleus sampling_. Hiermit können Sie steuern, wie deterministisch das Modell bei der Generierung einer Antwort ist. Wenn Sie nach exakten und faktischen Antworten suchen, halten Sie diesen Wert niedrig. Wenn Sie nach vielfältigeren Antworten suchen, erhöhen Sie ihn auf einen höheren Wert. +**Top P** - Eine Stichprobentechnik mit Temperatur, bekannt als Nucleus Sampling, bei der Sie steuern können, wie deterministisch das Modell ist. Wenn Sie nach exakten und faktischen Antworten suchen, halten Sie diesen Wert niedrig. Wenn Sie nach vielfältigeren Antworten suchen, erhöhen Sie ihn auf einen höheren Wert. Wenn Sie Top P verwenden, bedeutet das, dass nur die Token berücksichtigt werden, die die `top_p` Wahrscheinlichkeitsmasse bilden, sodass ein niedriger `top_p` Wert die selbstsichersten Antworten auswählt. Dies bedeutet, dass ein hoher `top_p` Wert es dem Modell ermöglicht, mehr mögliche Wörter zu betrachten, einschließlich unwahrscheinlicher, was zu vielfältigeren Ausgaben führt. Die allgemeine Empfehlung ist, entweder die Temperatur oder Top P zu ändern, aber nicht beides. -Die allgemeine Empfehlung lautet, entweder die Temperatur oder top_p zu verändern, nicht beides. +**Maximale Länge (`max length`)** - Sie können die Anzahl der vom Modell generierten Tokens steuern, indem Sie `max length` anpassen. Wenn Sie eine maximale Länge angeben, helfen Sie dabei, lange oder irrelevante Antworten zu verhindern und die Kosten zu kontrollieren. -**Maximale Länge** - Sie können die Anzahl der vom Modell generierten Tokens steuern, indem Sie die 'maximale Länge' anpassen. Wenn Sie eine maximale Länge angeben, helfen Sie dabei, lange oder irrelevante Antworten zu verhindern und die Kosten zu kontrollieren. +**Stop-Sequenzen (`stop sequence`)** - Eine `stop sequence` ist eine Zeichenfolge, die das Modell daran hindert, weitere Tokens zu generieren. Die Angabe von Stop-Sequenzen ist eine weitere Möglichkeit, die Länge und Struktur der Antwort des Modells zu kontrollieren. Sie können zum Beispiel dem Modell sagen, dass es Listen generieren soll, die nicht mehr als 10 Elemente haben, indem Sie "11" als Stop-Sequenz hinzufügen. -**Stop-Sequenzen** - Eine 'Stop-Sequenz' ist eine Zeichenfolge, die das Modell daran hindert, weitere Tokens zu generieren. Die Angabe von Stop-Sequenzen ist eine weitere Möglichkeit, die Länge und Struktur der Antwort des Modells zu kontrollieren. Sie können zum Beispiel dem Modell sagen, dass es Listen generieren soll, die nicht mehr als 10 Elemente haben, indem Sie "11" als Stop-Sequenz hinzufügen. +**Frequenzstrage (`frequence penalty`)** - Die `frequency penalty` wendet eine Strafe auf das nächste Token an, die proportional dazu ist, wie oft dieses Token bereits in der Antwort und im Prompt aufgetaucht ist. Je höher die Häufigkeitsstrafe, desto unwahrscheinlicher wird ein Wort erneut erscheinen. Diese Einstellung reduziert die Wiederholung von Wörtern in der Antwort des Modells, indem Tokens, die häufiger vorkommen, eine höhere Strafe bekommen. -**Häufigkeitsstrafe** - Die 'Häufigkeitsstrafe' wendet eine Strafe auf das nächste Token an, die proportional dazu ist, wie oft dieses Token bereits in der Antwort und im Prompt aufgetaucht ist. Je höher die Häufigkeitsstrafe, desto unwahrscheinlicher wird ein Wort erneut erscheinen. Diese Einstellung reduziert die Wiederholung von Wörtern in der Antwort des Modells, indem Tokens, die häufiger vorkommen, eine höhere Strafe bekommen. +**Anwesenheitsstrafe (`presence penalty`)** - Die `presence penalty` wendet ebenfalls eine Strafe auf wiederholte Token an, aber im Gegensatz zur Frequenzstrafe ist die Strafe für alle wiederholten Token gleich. Ein Token, das zweimal und ein Token, das 10 Mal erscheint, werden gleich bestraft. Diese Einstellung verhindert, dass das Modell Phrasen zu oft in seiner Antwort wiederholt. Wenn Sie möchten, dass das Modell vielfältigen oder kreativen Text generiert, möchten Sie vielleicht eine höhere Anwesenheitsstrafe verwenden. Oder, wenn Sie benötigen, dass das Modell fokussiert bleibt, versuchen Sie, eine niedrigere Anwesenheitsstrafe zu verwenden. -**Präsenzstrafe** - Die 'Präsenzstrafe' wendet auch eine Strafe auf wiederholte Tokens an, aber anders als bei der Häufigkeitsstrafe ist die Strafe für alle wiederholten Tokens gleich. Ein Token, das zweimal erscheint, und ein Token, das zehnmal erscheint, werden gleich bestraft. Diese Einstellung verhindert, dass das Modell Phrasen zu oft in seiner Antwort wiederholt. Wenn Sie möchten, dass das Modell vielfältigen oder kreativen Text generiert, möchten Sie vielleicht eine höhere Präsenzstrafe verwenden. Oder, wenn Sie möchten, dass das Modell fokussiert bleibt, versuchen Sie es mit einer niedrigeren Präsenzstrafe. - -Ähnlich wie bei Temperatur und top_p lautet die allgemeine Empfehlung, entweder die Häufigkeitsstrafe oder die Präsenzstrafe zu verändern, nicht beides. +Ähnlich wie bei `temperature` und `top_p` lautet die allgemeine Empfehlung, entweder die Häufigkeitsstrafe oder die Präsenzstrafe zu verändern, nicht beides. Bevor Sie mit einigen grundlegenden Beispielen beginnen, behalten Sie im Hinterkopf, dass Ihre Ergebnisse je nach Version des LLM, das Sie verwenden, variieren können. From 4171a39184fab227c7e7708f0d8ec6814c900ce7 Mon Sep 17 00:00:00 2001 From: Erik Behrends Date: Sat, 13 Jan 2024 14:56:07 +0100 Subject: [PATCH 2/2] Tiny fix --- pages/introduction/settings.de.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/pages/introduction/settings.de.mdx b/pages/introduction/settings.de.mdx index 80e697e..41b228f 100644 --- a/pages/introduction/settings.de.mdx +++ b/pages/introduction/settings.de.mdx @@ -6,8 +6,6 @@ Beim Entwerfen und Testen von Prompts interagieren Sie normalerweise über eine **Top P** - Eine Stichprobentechnik mit Temperatur, bekannt als Nucleus Sampling, bei der Sie steuern können, wie deterministisch das Modell ist. Wenn Sie nach exakten und faktischen Antworten suchen, halten Sie diesen Wert niedrig. Wenn Sie nach vielfältigeren Antworten suchen, erhöhen Sie ihn auf einen höheren Wert. Wenn Sie Top P verwenden, bedeutet das, dass nur die Token berücksichtigt werden, die die `top_p` Wahrscheinlichkeitsmasse bilden, sodass ein niedriger `top_p` Wert die selbstsichersten Antworten auswählt. Dies bedeutet, dass ein hoher `top_p` Wert es dem Modell ermöglicht, mehr mögliche Wörter zu betrachten, einschließlich unwahrscheinlicher, was zu vielfältigeren Ausgaben führt. Die allgemeine Empfehlung ist, entweder die Temperatur oder Top P zu ändern, aber nicht beides. -Die allgemeine Empfehlung lautet, entweder die Temperatur oder `top_p` zu verändern, nicht beides. - **Maximale Länge (`max length`)** - Sie können die Anzahl der vom Modell generierten Tokens steuern, indem Sie `max length` anpassen. Wenn Sie eine maximale Länge angeben, helfen Sie dabei, lange oder irrelevante Antworten zu verhindern und die Kosten zu kontrollieren. **Stop-Sequenzen (`stop sequence`)** - Eine `stop sequence` ist eine Zeichenfolge, die das Modell daran hindert, weitere Tokens zu generieren. Die Angabe von Stop-Sequenzen ist eine weitere Möglichkeit, die Länge und Struktur der Antwort des Modells zu kontrollieren. Sie können zum Beispiel dem Modell sagen, dass es Listen generieren soll, die nicht mehr als 10 Elemente haben, indem Sie "11" als Stop-Sequenz hinzufügen.