Skip to content

Tree of Thoughts

Wat kun je met Tree of Thoughts?

Laat een LLM "vergaderen" over een probleem vanuit meerdere invalshoeken.

Tree of Thoughts is een geavanceerde prompting techniek die het brainstorm- en samenwerkingsproces van mensen nabootst. In plaats van één lineair redeneerpad te volgen, genereert de AI meerdere parallelle "gedachtebomen" die kritisch worden geëvalueerd en verfijnd tot een optimale oplossing.

Stel je een boom voor waar elke tak een gedachtegang representeert, en de hele boom symboliseert de reis naar een oplossing. Dat is de essentie van Tree of Thoughts prompting.

Waarom Tree of Thoughts?

Traditionele prompts leiden vaak tot:

  • Single-path reasoning: De AI volgt één redeneerpad zonder alternatieven te overwegen
  • Gebrek aan zelfreflectie: Geen kritische evaluatie van de gekozen aanpak
  • Suboptimale oplossingen: Vooral bij complexe beslissingen met meerdere trade-offs

Tree of Thoughts biedt een systematische methode om problemen vanuit meerdere invalshoeken te bekijken, wat zorgt voor:

  • Diverse perspectieven: Meerdere "experts" genereren verschillende oplossingsrichtingen
  • Kritische evaluatie: Gedachten worden geanalyseerd, bekritiseerd en verfijnd
  • Betere besluitvorming: Ideaal voor architecturale keuzes, trade-off analyses en complexe debugging
  • Identificatie van dead ends: De AI kan backtracking toepassen wanneer een redeneerpad niet productief blijkt

Wanneer gebruik je Tree of Thoughts?

Deze techniek is vooral waardevol voor:

  • Verkrijgen van diverse perspectieven: Evalueren van voorstellen vanuit verschillende perspectieven
  • Trade-off analyses: Afwegen van voor- en nadelen van verschillende opties
  • Complexe debugging: Onderzoeken van meerdere mogelijke oorzaken van een bug
  • Code reviews: Beoordelen van verschillende implementatie-aanpakken

De vier stappen van Tree of Thoughts

1. Thought Decomposition (Gedachte Decompositie)

Breek het probleem op in kleinere, beheersbare gedachtestappen. Dit kunnen enkele woorden zijn, een regel code, of zelfs een hele paragraaf - afhankelijk van de complexiteit van het probleem.

Voorbeeld:

"Analyseer de beslissing voor code formatting in drie stappen: (1) technische impact, (2) developer experience, (3) tooling en automatisering."

2. Thought Generation (Gedachte Generatie)

Genereer vanuit de huidige staat meerdere potentiële gedachten of vervolgstappen. De focus ligt op diversiteit en aanpassingsvermogen - hoe meer diverse oplossingen, hoe groter de kans op een optimaal resultaat.

Voorbeeld:

"Bedenk 3-5 relevante invalshoeken waarvanuit je de beslissing moet gaan analyseren. Iedere invalshoek wordt vertegenwoordigd door een expert. Elk expert analyseert het probleem vanuit hun specifieke invalshoek en deelt hun eerste gedachte met de andere experts."

Alternatief kun je de experts expliciet definiëren:

"Drie experts nemen elk een uniek perspectief in: één focust op code consistency, één op developer productivity, en één op tooling integratie. Elke expert deelt hun eerste gedachte met de groep."

3. State Evaluation (Toestand Evaluatie)

Evalueer welke staten of gedachtetakken veelbelovend zijn en verder onderzocht moeten worden. Dit dient als een gids die bepaalt welke redeneerpaderen productief zijn.

Voorbeeld:

"Iedere expert bekritiseert hun eigen gedachte en de gedachten van de andere experts. Dan gaat iedere expert door naar de volgende gedachte en deelt dit met de groep. De experts gaan door tot ze hun conclusie hebben bereikt, met de gedachten van andere experts in overweging."

Als je vindt dat de experts te snel consensus bereiken, kun je de prompt aanpassen om de experts te vragen om meer gedachten te genereren en te bekritiseren.

"De groep moet minimaal 8 iteraties doorlopen voordat ze consensus bereiken."

4. Search Algorithm (Zoek Algoritme)

Gebruik verschillende strategieën zoals breadth-first search (breed zoeken) of depth-first search (diep zoeken) om het probleemoplossingsproces door de gedachteboom te navigeren.

Voorbeeld:

"Als de experts een fout in hun gedachten bespeuren, gaan ze terug naar de plek waar de fout ontstaan is. Als een expert zich beseft dat ze fout zit, erkent ze dat en start een nieuwe train of thought. De experts gaan door tot er consensus is."

Praktijk voorbeeld: Tabs vs Spaces in het CRM

Laten we Tree of Thoughts toepassen op een klassieke developer discussie: moeten we tabs of spaces gebruiken in de CRM codebase?

❌ Traditionele one-liner prompt

Moeten we standaardiseren op tabs of spaces in de CRM codebase?

Dit leidt meestal tot een generiek antwoord zonder context-specifieke analyse.

✅ Tree of Thoughts prompt

# Context

Het Zonneplan CRM is geschreven in PHP met Laravel, gebruikt een mix van JavaScript en TypeScript voor de frontend.


# Objective

Het doel is om tot een weloverwogen beslissing te komen over code formatting (tabs vs spaces) die past bij ons team en tech stack.


# Style

Je bent gespecialiseerd in software engineering beslissingen en zoekt altijd naar een aanpak die technisch solide is én praktisch uitvoerbaar voor het team.

Je begint met het bedenken van 3-5 verschillende invalshoeken waarvanuit je dit probleem moet analyseren.

Je analyseert het probleem vanuit deze 3-5 verschillende invalshoeken (experts). Iedere invalshoek wordt vertegenwoordigd door een expert.

Elke expert deelt hun eerste gedachte met de andere experts.

Iedere expert bekritiseert hun eigen gedachte en de gedachten van de andere experts.

Dan gaat iedere expert door naar de volgende gedachte en deelt dit met de groep experts.

De experts gaan door tot ze hun conclusie hebben bereikt, met de gedachten van andere experts in overweging.

Als de experts een fout in hun gedachten bespeuren, gaan ze terug naar de plek waar de fout ontstaan is.

Als een expert zich beseft dat ze fout zit, erkent ze dat en start een nieuwe train of thought.

De experts gaan door tot er consensus is over de aanbeveling.

Voordat je je antwoord geeft, reflecteer je nog een laatste keer op je eigen conclusie en kijk je kritisch of je de aanbeveling nog kunt verbeteren.


# Response

Een duidelijke aanbeveling (tabs of spaces) met:

  • De belangrijkste argumenten voor deze keuze
  • Een praktisch implementatieplan
  • Hoe om te gaan met bestaande code

Voorbeeld output

 

Invalshoeken identificatie:

Ik identificeer 3 relevante invalshoeken:

  1. Ecosystem Alignment: Aansluiting bij PHP/Laravel/JS ecosystem standards
  2. Developer Experience: Impact op workflow en accessibility
  3. Automation & Tooling: Automatisering en enforcement mogelijkheden

Iteratie 1 - Eerste gedachten:

Expert 1 (Ecosystem): "Mijn eerste gedachte: PSR-12 schrijft 4 spaces voor. Laravel gebruikt spaces. Dit suggereert dat spaces de standaard zijn in ons ecosystem."

Expert 2 (Developer Experience): "Mijn eerste gedachte: Tabs bieden accessibility voordelen - developers kunnen zelf de visuele width instellen. Dit is belangrijk voor een team van 12 met verschillende voorkeuren."

Expert 3 (Automation): "Mijn eerste gedachte: Laravel Pint en PHP-CS-Fixer zijn out-of-the-box geconfigureerd voor spaces. Dat maakt automatisering makkelijker."


Iteratie 2 - Kritiek:

Expert 2 (DX) bekritiseert zichzelf: "Wacht, ik realiseer me dat moderne editors spaces kunnen tonen met verschillende widths via editor settings. Mijn accessibility argument is minder sterk dan ik dacht."

Expert 1 (Ecosystem) bekritiseert Expert 3: "Je argument over automatisering is sterk, maar tabs kunnen ook worden afgedwongen met tooling. Is dat niet gewoon een configuratie kwestie?"

Expert 3 (Automation) reageert: "Goed punt. Maar de default configuratie matters - het bepaalt de friction voor onboarding. Als we tabs kiezen, moeten we custom configs onderhouden voor Pint, Prettier, en EditorConfig."


Iteratie 3 - Volgende gedachten:

Expert 2 (DX) herkent een fout: "Ik ga terug naar mijn eerste gedachte. Ik moet ook kijken naar merge conflicts. Laten we dit herformuleren: tabs kunnen leiden tot mixed indentation als één developer tabs gebruikt en tooling spaces enforced. Dit is een praktisch probleem."

Expert 1 (Ecosystem): "Ik voeg een nieuwe gedachte toe: we hebben ook JavaScript/TypeScript frontend code. Prettier's default is spaces. Als we tabs in PHP kiezen maar spaces in JS, creëren we inconsistentie in de monorepo."

Expert 3 (Automation): "Dat is een cruciaal punt. Cross-language consistency reduceert cognitive load. Developers switchen constant tussen PHP en JS."


Iteratie 4 - Consensus zoeken:

Expert 2 (DX) erkent: "Oké, ik zie nu dat mijn argumenten voor tabs niet opwegen tegen de praktische nadelen. De accessibility voordelen zijn oplosbaar via editor configuratie. Maar de inconsistentie en extra configuratie overhead zijn reële kosten."

Expert 1 (Ecosystem): "Ik zie consensus vormen: spaces (4 spaces specifiek) aligned met PSR-12, Laravel, Prettier, en minimaliseerd configuratie overhead."

Expert 3 (Automation) bevestigt: "Akkoord. De beslissing voor spaces is niet alleen technisch correct, maar ook het pad van minste weerstand voor ons team."


Consensus bereikt:

Alle experts zijn het eens: 4 spaces

Argumenten:

  • Ecosystem alignment: PSR-12, Laravel, Prettier gebruiken allen 4 spaces
  • Cross-language consistency: PHP en JS/TS gebruiken dezelfde indentatie
  • Minimale configuratie: Default tooling configs werken out-of-the-box
  • Team onboarding: Nieuwe developers hoeven geen custom settings te configureren
  • Accessibility: Developers kunnen spaces visueel als tabs tonen in hun editor

Reflectie:

Laat me kritisch kijken naar onze conclusie. Zijn er edge cases die we over het hoofd zien?

  1. Bestaande code: We hebben niet besproken hoe we bestaande code migreren. Dit moet deel zijn van het implementatieplan.
  2. Mixed contributions: Wat als iemand per ongeluk tabs commit? We moeten pre-commit hooks hebben.
  3. Documentation: We moeten dit documenteren zodat het geen terugkerende discussie wordt.

Verbeterde aanbeveling met implementatieplan:

Aanbeveling: 4 spaces

Implementatieplan:

  1. Configuratie: Voeg .editorconfig toe met indent_style = space, indent_size = 4
  2. Tooling: Setup Laravel Pint met PSR-12 preset en Prettier voor JS/TS
  3. Migratie: Run ./vendor/bin/pint en npx prettier --write één keer over hele codebase
  4. Enforcement: Voeg formatters toe aan pre-commit hook (Husky + lint-staged)
  5. CI/CD: Voeg formatting check toe aan CI pipeline
  6. Documentatie: Update CONTRIBUTING.md met formatting beslissing en rationale

Voor developers met tab-voorkeur: Moderne editors (VS Code, PhpStorm) kunnen spaces weergeven als tabs via editor instellingen zonder de daadwerkelijke file formatting te wijzigen.

Tips voor gebruik

  1. Combineer met CO-STAR: Tree of Thoughts past perfect in het "S" (Style) component van CO-STAR prompts.

  2. Diversiteit is key: Zorg dat elke expert een uniek perspectief heeft. Vermijd overlap in focus areas.

  3. Forceer kritische evaluatie: Instrueer experts expliciet om zwakke punten in elkaars argumenten te zoeken.

  4. Laat backtracking toe: Geef aan dat experts van gedachten mogen veranderen na het horen van andere argumenten.

  5. Aantal "experts": Drie experts is een goed startpunt, maar je kunt dit naar behoefte aanpassen.

  6. Wees specifiek over context: Hoe meer context je geeft over je specifieke situatie, hoe relevanter de analyse.

  7. Synthese is cruciaal: Zorg ervoor dat de prompt eindigt met een gezamenlijke conclusie, niet alleen losse meningen.

Waarom werkt dit beter?

Tree of Thoughts simuleert een senior engineering discussion:

  • Meerdere perspectieven voorkomen tunnel vision
  • Kritische evaluatie identificeert zwakke argumenten
  • Collaborative synthesis leidt tot weloverwogen beslissingen
  • Backtracking capability voorkomt vastlopen in suboptimale oplossingen

In plaats van te vertrouwen op één lineair redeneerpad, exploreert Tree of Thoughts de solution space systematisch - net zoals een goed engineering team dat zou doen.

Vergelijking met andere technieken

TechniekUse CaseSterkteBeperking
Chain of ThoughtStap-voor-stap reasoningDuidelijk pad, goed voor mathSingle path, geen alternatieven
Tree of ThoughtsComplexe beslissingenMultiple perspectives, kritische evaluatieMeer tokens, langere responses
Self-ConsistencyVerificatie van antwoordBetrouwbaarheid checkGeen diverse reasoning
ReActTool gebruik met reasoningInteractie met externe toolsNiet specifiek voor multi-perspective analysis

Tree of Thoughts is niet altijd nodig - gebruik het wanneer je daadwerkelijk meerdere valide oplossingsrichtingen moet evalueren. Voor eenvoudige problemen is Chain of Thought vaak voldoende.