Self-Consistency-Prompting heißt, einem Modell dieselbe Denkfrage mehrmals zu stellen und die Antwort zu behalten, die am häufigsten vorkommt. Jeder Durchlauf schreibt seinen eigenen Lösungsweg aus, wie beim Chain-of-Thought-Prompting, und weil das Modell seine Wörter mit etwas Zufall sampelt, nehmen die Durchläufe verschiedene Wege. Richtige Wege landen meist bei derselben Antwort. Fehler verteilen sich meist auf verschiedene falsche. Ein Mehrheitsentscheid nutzt genau diesen Unterschied.
Die Technik stammt von Wang et al. 2022, "Self-Consistency Improves Chain of Thought Reasoning in Language Models". Das Paper verglich das Sampeln vieler Denkwege mit anschließender Abstimmung mit einer einzelnen Greedy-Antwort und fand, dass die Abstimmung die Genauigkeit bei Benchmarks für Rechnen und Alltagslogik verbesserte.
Der Block unten zeigt drei Durchläufe desselben Prompts. Jeder Tab ist ein Durchlauf mit eigener Antwort. Zwei Durchläufe zählen richtig; einer macht einen Fehler, der leicht passiert. Die Antwortzeile heißt "Answer:", auf Englisch, weil der Python-Code weiter unten genau nach diesem Wort sucht.
Ich zähle die 7en nach Stelle.
- Einerstelle: 7, 17, 27, 37, 47, 57, 67, 77, 87, 97. Das sind 10 Siebenen.
- Zehnerstelle: 70 bis 79. Das sind 10 weitere Siebenen.
- Hunderterstelle: Nur 100 hat drei Stellen, und darin ist keine 7.
77 steht in beiden Listen, und das ist richtig, denn die Zahl enthält zwei 7en.
Answer: 20
Durchlauf 2 hat eine leicht andere Frage beantwortet: wie viele Zahlen eine 7 enthalten, nicht wie oft die Ziffer vorkommt. Sein Lösungsweg klingt genauso überzeugt wie die anderen beiden, und für sich genommen hättest du keinen Grund, ihn anzuzweifeln. Über drei Durchläufe lautet die Abstimmung 20, 19, 20, und die Mehrheitsantwort ist die richtige.
Wie Self-Consistency funktioniert
- Schreib einen Chain-of-Thought-Prompt mit fester Antwortzeile. Bitte zuerst um den Lösungsweg und zuletzt um die Endantwort, in einer Form, die du wiederfindest, etwa "Answer: N". Ohne feste Zeile musst du jeden Durchlauf lesen, um seine Antwort zu finden.
- Sample mehrere Durchläufe mit eingeschaltetem Zufall. Jeder Durchlauf braucht die Freiheit, einen anderen Weg zu nehmen. In der API erreichst du das mit einer Temperature über 0. Bei Temperature 0 würden die meisten Durchläufe denselben Lösungsweg wiederholen, und einen Fehler fünfmal zu wiederholen, ist kein Beleg.
- Zieh die Endantwort aus jedem Durchlauf. Ignoriere in diesem Schritt den Lösungsweg. Zwei Durchläufe, die auf verschiedenen Wegen bei 20 gelandet sind, zählen als zwei Stimmen für 20.
- Nimm die häufigste Antwort. Normalisiere vor dem Zählen, damit "20", "20." und "zwanzig" als dieselbe Antwort zählen.
Die Übereinstimmung selbst ist eine nützliche Information. Wenn alle fünf Durchläufe übereinstimmen, ist ein zufälliger Ausrutscher unwahrscheinlich. Wenn sich die Stimmen auf drei Antworten verteilen, ist die Frage für das Modell schwer, und das ist ein Signal, die Antwort selbst zu prüfen oder den Prompt umzuschreiben. Das Paper berichtete auch, dass Fragen mit stärkerer Übereinstimmung zwischen den Samples häufiger richtig beantwortet wurden.
Self-Consistency von Hand
Du kannst die Technik in jeder Chat-App anwenden. Schick den Prompt, notier die letzte Zeile und hol dir dann einen weiteren unabhängigen Durchlauf: Drück auf Neu generieren oder füg denselben Prompt in einen neuen Chat ein. Wiederhole das, bis du drei oder fünf Antworten hast.
Frag nicht im selben Gespräch mit "Bist du sicher?" oder "Versuch es noch mal" nach. Das Modell sieht seine vorige Antwort, also ist die neue nicht unabhängig: Meist wiederholt es entweder die erste Antwort oder ändert sie nur, weil du Zweifel zu haben scheinst. Beides ist keine Stimme.
Dieser Prompt ist für die Abstimmung vorbereitet. Setz deine eigene Frage und dein Antwortformat ein und lass ihn mehrmals laufen.
12 Stifte sind 12 ÷ 3 = 4 Packungen.
4 Packungen kosten 4 × 2 € = 8 €.
Wechselgeld von 10 €: 10 € minus 8 € = 2 €.
Answer: 2 €
Der Format-Baustein macht die Abstimmung erst möglich. Schalte ihn aus, und die Durchläufe formulieren ihre Antworten meist unterschiedlich, oft irgendwo mitten im Text, und aus einer einfachen Zählung wird sorgfältiges Lesen.
Self-Consistency im Code
Im Code ist die Schleife kurz: denselben Prompt N-mal ausführen, die Antwortzeilen herausziehen und zählen. Diese Version nutzt das OpenAI Python SDK; jede API, bei der du eine Temperature setzen kannst, funktioniert genauso.
import re
from collections import Counter
from openai import OpenAI
client = OpenAI()
MODEL = "your-model-id" # e.g. from your provider's model list
PROMPT = (
"How many times does the digit 7 appear when you write out all the whole "
"numbers from 1 to 100? Think it through step by step, then give the final "
'answer on the last line in the form "Answer: N".'
)
def final_answer(text):
# Also matches "**Answer: 20**", since chat models often bold the last line.
lines = re.findall(r"^\**Answer:\**\s*(.+)$", text, re.MULTILINE)
return lines[-1].strip(" *.") if lines else None
answers = []
for _ in range(5):
response = client.chat.completions.create(
model=MODEL,
temperature=0.8,
messages=[{"role": "user", "content": PROMPT}],
)
answers.append(final_answer(response.choices[0].message.content))
votes = Counter(a for a in answers if a is not None)
if votes:
best, count = votes.most_common(1)[0]
print(f"{best} ({count} of {len(answers)} runs agree)")
else:
print("No run gave an answer line.")
Wenn du den Prompt auf Deutsch schreibst und die Zeile "Antwort:" nennst, ändere Answer im regulären Ausdruck entsprechend. Die Durchläufe sind unabhängig voneinander, also würdest du sie im Produktivbetrieb parallel schicken statt nacheinander. Manche Reasoning-Modelle akzeptieren nur ihre Standard-Temperature und geben einen Fehler zurück, wenn du eine setzt; bei ihnen lässt du temperature weg. Ihre Durchläufe variieren trotzdem, weil der Standardwert bereits sampelt.
Wann es sich lohnt und was es kostet
Self-Consistency lohnt sich, wenn drei Dinge zutreffen: Die Antwort ist kurz und vergleichbar (eine Zahl, ein Label, eine Auswahl), eine falsche Antwort kostet mehr als ein paar zusätzliche Aufrufe, und das Modell ist bei der Aufgabe nicht schon zuverlässig. Mathe-Textaufgaben, Klassifikation mit kniffligen Randfällen und Multiple-Choice-Fragen passen gut.
Es kostet ungefähr N-mal so viele Tokens wie eine einzelne Antwort, und es hilft nicht, wenn das Modell in jedem Durchlauf demselben Irrtum aufsitzt. Wenn alle fünf Durchläufe denselben Fehler machen, ist die Abstimmung einstimmig und falsch. Abstimmen reduziert zufällige Ausrutscher, keine systematischen Fehler, und ersetzt deshalb nicht, die Antworten ab und zu mit einem bekannten Ergebnis abzugleichen.
Modelle, die vor der Antwort intern nachdenken, arbeiten das Problem in jedem Durchlauf ohnehin ausführlich durch, und das verkleinert meist den Gewinn durch die Abstimmung. Bei schweren Fragen, bei denen ihre Durchläufe auseinandergehen, kann es sich trotzdem lohnen.
Self-Consistency stimmt nur über fertige Antworten ab. Tree-of-Thought-Prompting geht einen Schritt weiter und vergleicht unfertige Denkwege, während das Problem noch gelöst wird, behält vielversprechende Zweige und verwirft schwache, bevor sie bei einer Antwort ankommen.
Häufig gestellte Fragen
Was ist Self-Consistency-Prompting?
Self-Consistency-Prompting ist eine Technik von Wang et al. (2022). Du schickst denselben Chain-of-Thought-Prompt mehrmals mit eingeschaltetem Sampling, sodass jeder Durchlauf einen anderen Denkweg nimmt, und nimmst dann die Endantwort, die am häufigsten vorkommt. Statt einer einzelnen Denkkette zu vertrauen, stimmst du über mehrere ab.
Wie viele Samples sollte ich für Self-Consistency nehmen?
Für den Alltag reichen drei bis fünf Durchläufe, um einen gelegentlichen Ausrutscher zu überstimmen, und eine ungerade Zahl vermeidet ein Unentschieden zwischen zwei Antworten. Das ursprüngliche Paper hat pro Frage viel mehr Wege gesampelt und festgestellt, dass die Genauigkeit mit mehr Samples weiter stieg, aber jedes Mal weniger. Nimm mehr Durchläufe, wenn eine falsche Antwort teuer ist, und weniger, wenn Kosten oder Tempo zählen.
Was ist der Unterschied zwischen Self-Consistency und Chain of Thought?
Chain of Thought ist ein Durchlauf, in dem das Modell seinen Lösungsweg vor der Antwort ausschreibt. Self-Consistency baut darauf auf: Es lässt Chain of Thought mehrmals laufen und stimmt über die Endantworten ab. Chain of Thought ändert den Prompt; Self-Consistency ändert, wie viele Antworten du sammelst und wie du eine auswählst.
Funktioniert Self-Consistency bei Aufsätzen oder offenen Antworten?
Nicht direkt, denn eine Abstimmung braucht Antworten, die sich auf Gleichheit vergleichen lassen: eine Zahl, ein Label, ein Buchstabe bei Multiple Choice oder ein kurzer Fakt. Bei offenem Text ist ein üblicher Umweg, mehrere Versionen zu erzeugen und das Modell zu fragen, welche am besten mit den anderen übereinstimmt, aber das ist ein Urteil, keine Zählung.
Kann ich Self-Consistency in ChatGPT oder Claude nutzen?
Ja, von Hand. Schick den Prompt in mehreren neuen Chats oder generier die Antwort mehrmals neu, und notier die Endantwort jedes Durchlaufs. Nimm einen frischen Chat oder den Button zum Neugenerieren, statt im selben Verlauf noch einmal zu fragen, denn ein Modell, das seine vorige Antwort sieht, wiederholt sie gern.