Few-Shot-Prompting heißt, dem Modell ein paar ausgearbeitete Beispiele einer Aufgabe zu zeigen, jeweils ein Input mit der gewünschten Antwort, bevor du ihm den eigentlichen Input gibst. Das Modell liest das Muster und setzt es fort. Beispiele sind der schnellste Weg, Dinge festzulegen, die sich schwer in Worte fassen lassen: wo die Grenze zwischen zwei Kategorien verläuft, die genaue Form der Ausgabe oder den Ton, in dem dein Team schreibt.
Wie Few-Shot-Prompting funktioniert
Brown et al. 2020, "Language Models are Few-Shot Learners", zeigten, dass GPT-3 eine neue Aufgabe aus einer Handvoll Demonstrationen im Prompt lernen konnte, ohne neues Training. Das heißt In-Context Learning: Am Modell ändert sich nichts, und die Beispiele wirken sich nur auf die Antwort auf diesen einen Prompt aus. Beim nächsten Mal müssen die Beispiele wieder dabei sein.
Die Namen richten sich nach der Zahl der Beispiele. Ein Zero-Shot-Prompt hat keins, ein One-Shot-Prompt eins und ein Few-Shot-Prompt mehrere, meist zwischen zwei und einer Handvoll.
Zero-Shot und Few-Shot im direkten Vergleich
Beide Tabs unten fragen mit derselben Anweisung nach demselben. Der einzige Unterschied: Der zweite Tab setzt vier gelabelte Beispiele vor das eigentliche Ticket.
Kategorie: bug
Die Person hat ihr Passwort zurückgesetzt, aber das neue Passwort wird bei der Anmeldung abgelehnt. Das deutet auf ein Problem im Ablauf zum Zurücksetzen des Passworts hin, also ist das höchstwahrscheinlich ein Bug im Authentifizierungssystem.
Die Beispiele haben zwei Dinge verändert. Das erste ist das Format: Die Zero-Shot-Antwort hat eine fette Überschrift und eine Erklärung hinzugefügt, während die Few-Shot-Antwort den Beispielen folgt und ein einziges Wort liefert, das ein Skript direkt lesen kann. Das zweite ist die Entscheidung. "Bug" ist eine vernünftige Lesart des Tickets, und die meisten würden sie wählen. Aber dieses Team legt Anmeldeprobleme unter account ab, und das dritte Beispiel sagt das, ohne ein einziges Wort der Erklärung. Keine Anweisung hat diese Regel erwähnt; die Beispiele haben sie transportiert.
Wie viele Beispiele du brauchst
Fang mit zwei bis fünf an. Das reicht für die meisten Format- und Klassifikationsaufgaben und hält den Prompt kurz.
- Ein Beispiel zeigt ein Format, aber das Modell kopiert es gern zu genau. Wenn das einzige Beispiel eine Zusammenfassung einer Preisänderung mit 30 Wörtern ist, hat die nächste Zusammenfassung vielleicht auch 30 Wörter und dreht sich seltsam oft ums Geld.
- Zwei oder drei verschiedene Beispiele lassen das Modell sehen, was sie gemeinsam haben (das Muster) und was sich unterscheidet (die Details).
- Bei Klassifikation nimm mindestens ein Beispiel für jedes Label und ergänze dann die Grenzfälle, die ohne Beispiele schiefgegangen sind.
- Über eine Handvoll hinaus werden die Verbesserungen meist kleiner, während jede Anfrage länger wird, was Tokens und Zeit kostet. Wenn du Dutzende Beispiele brauchst, damit es klappt, braucht die Aufgabe vielleicht eine klarere Anweisung oder einen ganz anderen Ansatz.
Gute Beispiele auswählen
Das Modell lernt aus allem, was deine Beispiele gemeinsam haben, nicht nur aus dem, was du beibringen wolltest.
- Deck die schweren Fälle ab. Einfache Beispiele bringen wenig bei. Die nützlichsten liegen an der Grenze, wie das Login-Ticket oben.
- Variier die Oberfläche. Misch kurze und lange Inputs, verschiedene Themen und verschiedene Formulierungen. Wenn jede positive Bewertung in deinen Beispielen kurz ist, hält das Modell die Länge vielleicht für das Signal.
- Verteil die Labels gleichmäßig und misch die Reihenfolge. Modelle tendieren zu dem Label, das in den Beispielen am häufigsten vorkommt, und zu dem, das zuletzt kommt.
- Prüf jedes Beispiel. Ein Fehler in einem Beispiel ist eine Anweisung, diesen Fehler zu machen.
- Nimm echte Inputs. Beispiele aus deinen tatsächlichen Daten passen viel besser zu dem, was das Modell sehen wird, als erfundene.
Halte das Format identisch
Jedes Beispiel sollte dieselben Labels, Trennzeichen und dieselbe Groß- und Kleinschreibung verwenden, und der echte Input sollte genauso aussehen wie die Beispiel-Inputs. Im Ticket-Prompt besteht jedes Beispiel aus "Ticket:" und dann "Label:", und der Prompt endet mit einer offenen Zeile "Label:", sodass nur eine natürliche Fortsetzung übrig bleibt.
Bei längeren Beispielen pack jedes in klare Markierungen wie <example>-Tags, damit das Modell erkennt, wo eins endet und das nächste beginnt; siehe Trennzeichen und XML-Tags. In der API kannst du Beispiele auch als frühere Nachrichten im Gespräch liefern: eine User-Nachricht mit dem Beispiel-Input, dann eine Assistant-Nachricht mit der Antwort, wiederholt für jedes Beispiel.
Few-Shot-Prompts eignen sich gut als wiederverwendbare Prompt-Vorlagen: Anweisung und Beispiele bleiben fest, nur der Input ändert sich. Der Block unten schreibt eine Commit-Message im Stil eines Teams um, das seine Commit-Messages auf Englisch schreibt. Tipp deine eigene Nachricht ins Feld und schalte den Teil mit den Beispielen aus, um zu sehen, wie viel vom Stil sie tragen.
feat(search): make search box case-insensitive
Keine der Regeln steht irgendwo geschrieben: ein kleingeschriebener Typ, ein Scope in Klammern, der Imperativ, kein Punkt am Ende, und das Ganze auf Englisch. Die Beispiele zeigen alles davon, und die Antwort folgt ihnen. Mit ausgeschalteten Beispielen verbessert das Modell die Message zwar trotzdem, aber es muss einen Stil raten, und nichts sorgt dafür, dass sein Tipp zu deinem passt.
Few-Shot-Beispiele können auch Denkwege vorführen, nicht nur Antworten. Ausgearbeitete Beispiele, die ihre Schritte zeigen, sind genau die Form, in der Chain-of-Thought-Prompting zuerst vorgestellt wurde. Bei Modellen, die vor der Antwort intern nachdenken, beschränk die Beispiele auf Inputs, Antworten und Format: Vorgeschriebene Denkschritte können sie von einem besseren Weg abbringen, und manche Anbieter raten, bei solchen Modellen zuerst Zero-Shot zu probieren.
Häufig gestellte Fragen
Was ist Few-Shot-Prompting?
Few-Shot-Prompting heißt, ein paar Beispiele einer Aufgabe in den Prompt zu schreiben, jeweils ein Input mit der richtigen Ausgabe, vor dem eigentlichen Input. Das Modell setzt das Muster fort, das die Beispiele vorgeben. Am nützlichsten ist es für eigene Kategorien, ungewöhnliche Formate und Hausstile, die sich leichter zeigen als beschreiben lassen.
Wie viele Beispiele sollte ein Few-Shot-Prompt haben?
Zwei bis fünf sind für die meisten Aufgaben ein guter Start. Bei Klassifikation nimm mindestens ein Beispiel pro Label, plus die Grenzfälle, die das Modell ohne Beispiele falsch gemacht hat. Ab einer Handvoll hilft jedes weitere Beispiel meist weniger, macht aber jede Anfrage länger.
Was ist One-Shot-Prompting?
Beim One-Shot-Prompting bekommt das Modell genau ein Beispiel. Das reicht, um ein Format zu zeigen, aber das Modell kopiert dieses eine Beispiel gern zu genau, samt Länge, Wortwahl und sogar Thema. Ein zweites, anderes Beispiel zeigt dem Modell, welche Merkmale das Muster sind und welche Zufall.
Lernt das Modell aus meinen Beispielen?
Nur für die aktuelle Anfrage. Die Beispiele prägen die Antwort, weil sie im Kontext stehen; die Gewichte des Modells ändern sich nicht, und im nächsten Gespräch ist nichts davon gespeichert. Das nennt man In-Context Learning, und deshalb muss ein Few-Shot-Prompt seine Beispiele bei jeder Nutzung mitbringen.
Können schlechte Beispiele die Ausgabe verschlechtern?
Ja. Das Modell kopiert alles, was die Beispiele gemeinsam haben, auch Fehler, Länge und Ton, die du nicht beabsichtigt hast. Wenn die meisten Beispiele dasselbe Label haben, tendiert das Modell außerdem zu diesem Label. Prüf, dass deine Beispiele richtig, abwechslungsreich und ausgewogen sind.