Chain-of-Thought-Prompting bittet ein Sprachmodell, die Zwischenschritte eines Problems auszuschreiben, bevor es die Endantwort gibt. Bei Problemen mit mehreren Schritten, etwa Textaufgaben, Logikrätseln und Zeitplänen, führt offenes Durcharbeiten meist zu mehr richtigen Antworten als eine sofortige Antwort, und du bekommst Schritte, die du prüfen kannst. Die kürzeste Version ist ein einziger Satz im Prompt: "Let's think step by step", auf Deutsch "Lass uns Schritt für Schritt denken".
Warum das Ausschreiben der Schritte hilft
Ein Modell erzeugt seine Antwort Token für Token, und alles, was es schon geschrieben hat, wird Input für das nächste Token. Wenn ein Prompt sofort die Antwort verlangt, muss das Modell sie liefern, bevor irgendein Zwischenergebnis auf der Seite steht. Schreibt es zuerst "Der Kaffeeumsatz am Montag lag bei 168 €", steht diese Zahl jetzt im Kontext, und der nächste Schritt kann darauf aufbauen, statt sie nur implizit mitzuführen.
So weit die Intuition. Die Belege kamen aus zwei Papern von 2022. Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models", zeigten, dass ausgearbeitete Beispiele mit ausgeschriebenem Lösungsweg große Modelle bei Rechen-, Alltagslogik- und Symbolaufgaben verbesserten. Sie fanden auch, dass der Nutzen von der Größe abhing: Kleinere Modelle profitierten nicht und schrieben oft flüssige Begründungen, die zu falschen Antworten führten. Kojima et al., "Large Language Models are Zero-Shot Reasoners", zeigten danach, dass ein einziger Satz ohne Beispiele, "Let's think step by step", die Ergebnisse ebenfalls deutlich verbesserte, wenn auch meist weniger als ausgearbeitete Beispiele.
Direkte Antwort gegen Chain of Thought
Beide Tabs stellen dieselbe Frage. Der erste verlangt nur den Betrag; der zweite bittet um den Rechenweg und setzt die Antwort in eine feste letzte Zeile. Die Zeile heißt dort "Answer:", auf Englisch, weil der Python-Code weiter unten genau nach diesem Wort sucht; lass sie so stehen oder ändere das Wort im Code mit.
258 €
Die direkte Antwort zeigt einen typischen Ausrutscher: 258 € sind die 168 € Kaffee vom Montag plus die 90 € Muffins vom Dienstag, das Modell hat also vergessen, dass am Dienstag 10 Kaffees weniger verkauft wurden. Die Schritt-für-Schritt-Antwort gibt der Zahl der Kaffees am Dienstag eine eigene Zeile, sodass dieser Schritt nicht stillschweigend übersprungen werden kann. Ein aktuelles Modell löst auch die direkte Version vielleicht richtig; der Abstand wächst, je länger die Probleme werden und je stärker die Schritte voneinander abhängen.
Die ausgeschriebenen Schritte haben einen zweiten Vorteil: Wenn eine Antwort falsch ist, siehst du, welcher Schritt gebrochen ist, und kannst den Prompt oder den Input genau an dieser Stelle korrigieren.
Few-Shot Chain of Thought
Die ursprüngliche Technik von Wei et al. setzt ausgearbeitete Beispiele in den Prompt, deren Antworten ihren Lösungsweg zeigen, und das Modell beantwortet die neue Frage auf dieselbe Weise. Das Beispiel unten ist an die erste Abbildung ihres Papers angelehnt; die Frage danach ist neu. Ändere die Frage, um deine eigene auszuprobieren.
Die Bibliothek hatte anfangs 120 Bücher. Nach dem Verleihen von 45 standen noch 75 in den Regalen. Mit den 18 zurückgebrachten waren es 93. Die Spende von 30 brachte den Bestand auf 123. Die Antwort ist 123.
Few-Shot-CoT gibt dir Kontrolle über die Form des Lösungswegs: wie lang er ist, was er ausschreibt und wie die Antwort formuliert wird. "Die Antwort ist 11" im Beispiel ist ein fester Schluss, und die Antwort hat ihn übernommen. Zero-Shot-CoT ist schneller geschrieben, überlässt diese Entscheidungen aber dem Modell. Mehr zum Aufbau von Beispielsätzen steht unter Few-Shot-Prompting; die Variante nur mit Anweisung findest du unter Zero-Shot-Prompting.
Setz die Antwort in eine eigene Zeile
Sobald die Antwort einen Lösungsweg enthält, steckt das Ergebnis irgendwo in einem Absatz, und das ist ein Problem, wenn ein Programm es lesen muss. Bitte um die Antwort in einer festen Form in der letzten Zeile, wie es der Café-Prompt mit "Answer: X €" tut, und lies diese Zeile im Code aus:
import re
matches = re.findall(r"^Answer:\s*(.+)$", reply, re.MULTILINE)
answer = matches[-1] if matches else None
Den letzten Treffer zu nehmen, ist wichtig, weil der Lösungsweg selbst eine Zeile enthalten kann, die mit "Answer:" beginnt, bevor sich das Modell korrigiert. Wenn du die Zeile im Prompt auf Deutsch haben willst, etwa "Antwort:", ändere das Wort im regulären Ausdruck entsprechend. Wenn Nutzer nur die Antwort sehen sollen, bitte um den Lösungsweg in einem Paar Tags und um die Antwort in einem anderen, und zeig nur das zweite an. Strukturierte Ausgabe zeigt, wie du JSON anforderst, wenn du mehr als ein Feld brauchst.
Reasoning-Modelle
Manche aktuellen Modelle sind darauf gebaut, vor der Antwort nachzudenken: Sie erzeugen intern einen Lösungsweg, oft verborgen oder zusammengefasst, bevor die sichtbare Antwort kommt. Für sie spielt "Lass uns Schritt für Schritt denken" eine viel kleinere Rolle, weil die Schritte passieren, ob du darum bittest oder nicht. Der Zusatz macht meist nur die sichtbare Antwort länger.
Was bei einem Reasoning-Modell weiterhin hilft, ist alles rund um das Nachdenken: eine vollständige Beschreibung des Problems, die Bedingungen, die eine richtige Antwort erfüllen muss, und das Format der Endantwort. Beschreib, wie eine gute Antwort aussieht, statt jeden Schritt vorzuschreiben; ein festes Rezept aus Schritten kann das Modell von einem besseren Weg abbringen, den es selbst gefunden hätte.
Wann du Chain of Thought besser weglässt
Chain of Thought kostet Tokens und Zeit, und es lohnt sich nur, wenn eine Aufgabe Schritte hat, die voneinander abhängen. Beim Nachschlagen, Übersetzen, Umformulieren oder einer einfachen Klassifikation macht es die Antwort nur länger. Ein Modell kann außerdem einen Lösungsweg schreiben, der schlüssig aussieht, und trotzdem bei einer falschen Antwort landen, also prüf das Endergebnis für sich, nicht nur die Schritte, die dorthin geführt haben.
Für schwere Probleme, bei denen eine einzelne Kette schiefgehen kann, bauen zwei Erweiterungen darauf auf. Self-Consistency-Prompting sampelt mehrere Ketten und nimmt die Antwort, bei der die meisten landen, und Tree-of-Thought-Prompting erkundet und vergleicht mehrere angefangene Denkwege, bevor es sich für einen entscheidet.
Häufig gestellte Fragen
Was ist Chain-of-Thought-Prompting?
Chain-of-Thought-Prompting (CoT) bittet ein Sprachmodell, die Zwischenschritte eines Problems vor der Endantwort auszuschreiben, entweder durch ausgearbeitete Beispiele mit Lösungsweg oder durch eine Anweisung wie "Lass uns Schritt für Schritt denken". Bei mehrstufigen Problemen führt das meist zu mehr richtigen Antworten, und du kannst jeden Schritt prüfen.
Funktioniert "Lass uns Schritt für Schritt denken" noch?
Bei normalen Chatmodellen hilft es weiterhin bei Problemen mit mehreren Schritten, besonders wenn der Prompt sonst auf eine sofortige Antwort drängen würde. Reasoning-Modelle, die vor der Antwort nachdenken, machen das schon intern, deshalb bringt die Formulierung bei ihnen kaum mehr als eine längere Antwort. Bei diesen Modellen beschreib stattdessen das Problem und das Antwortformat klar.
Wann hilft Chain of Thought und wann nicht?
Es hilft bei Aufgaben mit mehreren voneinander abhängigen Schritten: Textaufgaben, Rechnen, Logikrätsel, Terminplanung mit Bedingungen und Nachvollziehen, was Code tut. Wenig bringt es beim Nachschlagen, Übersetzen, Umformulieren oder bei einfacher Klassifikation, wo es die Antwort nur länger und langsamer macht.
Was ist der Unterschied zwischen Zero-Shot und Few-Shot Chain of Thought?
Few-Shot-CoT, 2022 von Wei et al. vorgestellt, setzt ausgearbeitete Beispiele mit Lösungsweg in den Prompt, und das Modell ahmt diese Art zu denken nach. Zero-Shot-CoT, von Kojima et al. 2022, kommt ohne Beispiele aus und ergänzt einfach eine Anweisung wie "Lass uns Schritt für Schritt denken". Zero-Shot ist schneller geschrieben; Few-Shot gibt dir mehr Kontrolle darüber, wie die Schritte aussehen.
Ist der ausgeschriebene Lösungsweg der Weg, auf dem das Modell tatsächlich zur Antwort kam?
Nicht unbedingt. Die Schritte sind Text, den das Modell erzeugt, und sie können schlüssig wirken, während die Endantwort falsch ist, oder einen Fehler enthalten, während die Antwort zufällig stimmt. Behandle den Lösungsweg als etwas, das du prüfst, nicht als Beweis, und prüf die Endantwort für sich.