Tree-of-Thought-Prompting lässt ein Sprachmodell so an einem Problem arbeiten, wie du es vielleicht auf Papier tun würdest: ein paar mögliche nächste Schritte aufschreiben, beurteilen, welche vielversprechend aussehen, diese weiterverfolgen und einen Zweig aufgeben, wenn er nirgendwohin führt. Die Idee stammt von Yao et al. 2023, "Tree of Thoughts: Deliberate Problem Solving with Large Language Models". Sie erweitert das Chain-of-Thought-Prompting, das einem einzigen Denkweg folgt, zu einer Suche über viele Wege.
Diese Seite erklärt, wie die ursprüngliche Methode funktioniert, gibt dir eine Version in einem einzigen Prompt zum Ausprobieren in ChatGPT, Claude oder Gemini und zeigt die Schleife im Code für den Fall, dass ein Prompt nicht reicht.
Wie Tree of Thoughts funktioniert
Das Paper zerlegt die Methode in vier Entscheidungen.
- Was als Gedanke zählt. Ein Gedanke ist ein Zwischenschritt, klein genug, dass das Modell ihn gut erzeugen kann, und groß genug, um ihn zu beurteilen. In einem Matherätsel ist das eine Gleichung; bei einer Schreibaufgabe ein kurzer Plan.
- Wie Gedanken erzeugt werden. Ausgehend von der aktuellen Teillösung schlägt das Modell mehrere mögliche nächste Schritte vor, entweder durch unabhängiges Sampeln oder indem es sie in einer Antwort auflistet.
- Wie sie bewertet werden. Das Modell soll jede Teillösung einschätzen. Das Paper nutzte zwei Varianten: jeden Zustand für sich bewerten (zum Beispiel als "sicher", "wahrscheinlich" oder "unmöglich") oder dem Modell mehrere Zustände zeigen und es für den besten stimmen lassen.
- Wie gesucht wird. Ein Programm behält auf jeder Ebene die besten paar Zustände (Breitensuche) oder folgt einem Zweig in die Tiefe und geht zurück, wenn die Bewertung ihn für aussichtslos hält (Tiefensuche).
Nimm die Aufgabe Game of 24 aus dem Paper: Bilde mit den Zahlen 4, 9, 10 und 13, jede genau einmal, und den vier Grundrechenarten die Zahl 24. Eine Chain of Thought legt sich auf ihre erste Gleichung fest und muss damit leben. Ein Tree of Thoughts probiert vielleicht 13 - 9 = 4, 10 - 4 = 6 und 4 + 9 = 13 als erste Schritte aus, fragt das Modell, mit welchen übrigen Zahlen sich 24 noch erreichen lässt, verwirft die Sackgasse (10, 13 und 13 ergeben keine 24) und landet bei (10 - 4) * (13 - 9) = 24.
Was das Paper gezeigt hat
Die Autoren wählten drei Aufgaben, die GPT-4 selbst mit Chain of Thought schwerfielen, weil jede Planung oder Suche braucht: Game of 24, eine kreative Schreibaufgabe mit vorgegebenen Schlusssätzen und 5x5-Minikreuzworträtsel. Mit GPT-4 löste die Baumsuche weit mehr Game-of-24-Rätsel als Chain-of-Thought-Prompting oder das Sampeln mehrerer Ketten mit Mehrheitsentscheid, und auch bei den anderen beiden Aufgaben schnitt sie besser ab.
Der Preis sind Aufrufe. Jeder Kandidatenschritt und jede Bewertung ist eine eigene Anfrage, also kann ein gelöstes Problem Dutzende Modellaufrufe kosten, wo Chain of Thought einen kostet. Bei schweren Problemen lohnt sich dieser Tausch, bei einfachen nicht.
Tree of Thought in einem einzigen Prompt
Du kannst dich der Idee in einer Nachricht annähern: Bitte um mehrere unterschiedliche Ansätze, ein Urteil zu jedem anhand der Fakten, die du gegeben hast, und die Ausarbeitung nur des Ansatzes, der übrig bleibt. Die Tabs unten schicken dasselbe Problem auf beide Arten.
Die Hauptursache ist die physische Entfernung zwischen Australien und deinem Server in Frankfurt. Jede Anfrage muss nach Europa und zurück, und bei 40 Anfragen pro Seitenaufruf summiert sich diese Verzögerung.
Die Standardlösung ist ein CDN (Content Delivery Network). Ein CDN hält Kopien deiner Seite auf Servern in aller Welt, sodass Nutzer in Australien von einem Standort in der Nähe laden statt aus Frankfurt. Bei den meisten Anbietern kannst du ein CDN vor eine bestehende Seite schalten, ohne deinen Code zu ändern.
Außerdem kannst du Bilder komprimieren und Browser-Caching aktivieren, um die Ladezeit weiter zu senken.
Die direkte Antwort ist nicht absurd; sie zählt sogar die 40 Anfragen mit, aber sie hat die erste Erklärung genommen, die passte ("Entfernung"), und ist damit losgelaufen. Die verzweigte Antwort hat jede Erklärung gegen die Details im Prompt geprüft, und so ist ihr aufgefallen, dass "eine nach der anderen" wichtiger ist als "Australien" und dass das CDN die API-Aufrufe nicht berühren würde.
Eine wiederverwendbare Vorlage
Dieselbe Struktur funktioniert für Designentscheidungen und Pläne. Trag das Problem und die Kriterien ein, die dir wichtig sind; die Antwort zeigt den ausgefüllten Standardfall.
Platform as a Service (ein verwalteter App-Host) Kosten: mittel, steigen mit dem Traffic. Einrichtung: unter einer Stunde aus einem Git-Repo. Wartung: gering, der Host patcht das Betriebssystem. Behalten.
Eigener virtueller Server Kosten: am niedrigsten. Einrichtung: ein Tag für Server, TLS und einen Prozessmanager. Wartung: hoch, Updates und Neustarts liegen bei euch. Verwerfen für ein Dreierteam.
Serverless-Funktionen Kosten: sehr gering bei kleinem Umfang. Einrichtung: mittel, eine bestehende Server-App muss eventuell umgebaut werden. Wartung: gering, aber Kaltstarts erhöhen die Latenz. Behalten als Zweitplatzierter.
Am besten: Platform as a Service. Erste Schritte:
- Ein Startskript hinzufügen und den Port aus einer Umgebungsvariable lesen.
- Secrets in die Umgebungseinstellungen des Hosts verschieben.
- Das Repository verbinden und den Main-Branch deployen.
- Einen Health-Check-Endpunkt hinzufügen.
- Einen Kostenalarm einrichten.
Wo der einzelne Prompt an Grenzen stößt
Die Version in einem Prompt behält das Vokabular der Methode, verliert aber den Großteil der Mechanik.
- Kein echtes Zurückgehen. Das Modell schreibt alle Zweige und Urteile in einem Durchgang. Wenn Schritt 3 des gewählten Zweigs scheitert, schickt es nichts zurück zu Schritt 1.
- Der Richter ist der Autor. Dieselbe Antwort, die eine Idee vorgeschlagen hat, bewertet sie auch, also bevorzugt sie gern den Zweig, den sie ohnehin im Kopf hatte. Im Paper ist die Bewertung ein eigener Aufruf, nachdem die Kandidaten existieren.
- Die Zweige sind nicht unabhängig. Ideen, die in einer Antwort aufgelistet werden, beeinflussen sich gegenseitig und enden oft als Variationen eines Themas. Die Bitte um "wirklich unterschiedliche" Ansätze, wie in der Vorlage, wirkt dagegen, beseitigt es aber nicht.
- Reasoning-Modelle verzweigen schon selbst. Modelle, die vor der Antwort nachdenken, probieren intern Ansätze aus und verwerfen sie. Bei ihnen bringt der Prompt weniger Genauigkeit; sein verbleibender Wert ist, dass du die verworfenen Optionen siehst und der Begründung widersprechen kannst.
Eine echte Baumsuche im Code
Die vollständige Methode ist eine Schleife in deinem Programm: Kandidatenschritte erzeugen, jede Teillösung in einem eigenen Aufruf bewerten, die besten paar behalten, wiederholen. Das hier ist eine minimale Breitensuche mit dem OpenAI Python SDK; dieselbe Form funktioniert mit jedem Anbieter.
from openai import OpenAI
client = OpenAI()
MODEL = "your-model-id" # e.g. from your provider's model list
def ask(prompt, temperature=0.7):
response = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": prompt}],
temperature=temperature,
)
return response.choices[0].message.content.strip()
def propose(problem, path, k=3):
steps = "\n".join(path) or "(none yet)"
prompt = f"Problem: {problem}\nSteps so far:\n{steps}\nPropose the next step only."
return [ask(prompt) for _ in range(k)]
def score(problem, path):
steps = "\n".join(path)
prompt = (f"Problem: {problem}\nPartial solution:\n{steps}\n"
"How likely is this to lead to a correct solution? Reply with a number from 1 to 10 only.")
try:
return float(ask(prompt, temperature=0))
except ValueError:
return 0.0
def tree_of_thought(problem, depth=3, keep=2):
frontier = [[]]
for _ in range(depth):
candidates = [path + [step] for path in frontier for step in propose(problem, path)]
candidates.sort(key=lambda p: score(problem, p), reverse=True)
frontier = candidates[:keep]
return frontier[0]
Mit depth=3, keep=2 und drei Vorschlägen pro Zustand macht ein Durchlauf etwa dreißig Aufrufe. Bei vielen Aufgaben holen Self-Consistency-Prompting (mehrere vollständige Antworten, Mehrheitsentscheid) oder eine feste Schrittfolge mit Prompt Chaining den Großteil des Nutzens mit weniger Aufrufen heraus. Greif zu einem Baum, wenn die Aufgabe Suche braucht: viele mögliche erste Züge und eine Möglichkeit, eine Sackgasse früh zu erkennen.
Häufig gestellte Fragen
Was ist Tree-of-Thought-Prompting?
Tree-of-Thought-Prompting ist eine Methode zum Lösen von Problemen, bei der das Modell mehrere mögliche nächste Schritte vorschlägt, bewertet, wie vielversprechend jeder ist, und nur die besten Zweige weiterverfolgt, mit einem Schritt zurück, wenn ein Zweig scheitert. Sie stammt aus dem Paper "Tree of Thoughts: Deliberate Problem Solving with Large Language Models" von Yao et al. aus dem Jahr 2023. Im Paper steuert ein Programm das Verzweigen und Bewerten und ruft das Modell dafür viele Male auf.
Was ist der Unterschied zwischen Tree of Thoughts und Chain of Thought?
Chain of Thought folgt einem einzigen Denkweg vom Anfang bis zum Ende, also zieht sich ein früher Fehler bis in die Antwort durch. Tree of Thoughts hält mehrere Teillösungen gleichzeitig am Leben, bewertet sie und verwirft die schwachen, und kann sich so von einem schlechten ersten Schritt erholen. Der Preis sind viel mehr Aufrufe des Modells.
Kann ich Tree of Thoughts in ChatGPT oder Claude nutzen?
Du kannst eine Annäherung nutzen: ein Prompt, der das Modell bittet, mehrere Ansätze aufzulisten, jeden nach deinen Kriterien zu beurteilen, die schwachen zu verwerfen und den besten auszuarbeiten. Das funktioniert in jeder Chat-App. Es ist nicht die vollständige Methode, weil alles in einer einzigen Antwort passiert und das Modell seine Ideen im selben Durchgang bewertet, in dem es sie geschrieben hat.
Ist Tree-of-Thought-Prompting bei Reasoning-Modellen noch sinnvoll?
Weniger als früher. Modelle, die vor der Antwort nachdenken, probieren intern schon Ansätze aus und verwerfen sie, deshalb bringt die Bitte zu verzweigen weniger. Die Version in einem Prompt ist trotzdem nützlich, wenn du die Optionen und die Gründe für ihre Ablehnung sehen willst, damit du das Urteil selbst prüfen kannst.
Wann sollte ich Tree-of-Thought-Prompting verwenden?
Nimm es für Probleme mit mehreren plausiblen Ansätzen, bei denen die erste Idee oft falsch ist: Planung, Designentscheidungen, die Diagnose eines Problems anhand von Symptomen und Rätsel, die Suche brauchen. Bei einer Frage mit einem offensichtlichen Weg ist einfaches Chain of Thought billiger und genauso gut.