Tree of Thought

forkortelse for ToT

En prompting-teknik, hvor modellen udforsker flere tænkestier samtidigt for at finde den bedste løsning.

Kort fortalt

Kort fortalt: I stedet for kun at følge én tankerække, får modellen lov at forgrene sig og vælge den mest lovende.

Kategori
teknik
Niveau
øvet

Betydninger

1
  1. 1

    En ræsonnementstrategi for sprogmodeller, der strukturerer tanker i et træ af mulige stier og anvender søgealgoritmer (fx bredde-først eller dybde-først) til at udforske dem. Undervejs vurderes delresultater, og de mest lovende grene forfølges.

    • Tree of Thought-prompting forbedrer modellens evne til at løse matematiske problemer ved at overveje alternative fremgangsmåder.
    • I et ræsonnementseksperiment brugte forskerne ToT til at planlægge en rejseplan, hvor modellen afprøvede flere ruter og valgte den bedste.

Hvornår bruges det

Bruges i komplekse ræsonnement-opgaver som matematikproblemer, logiske gåder og planlægning, hvor en enkelt tankekæde kan føre til en blindgyde. Teknikken kræver flere forespørgsler til modellen og en mekanisme til at vurdere delresultater.

Kodeeksempel

from openai import OpenAI
client = OpenAI()

def tree_of_thought(prompt, depth=2, width=3):
    from itertools import product
    thoughts = [[{'text': prompt, 'score': 0}]]  # initial thought
    for level in range(depth):
        new_thoughts = []
        for parent in thoughts[level]:
            # Generate candidate continuations
            response = client.chat.completions.create(
                model="gpt-4",
                messages=[{"role": "user", "content": parent['text']}],
                n=width
            )
            candidates = [choice.message.content for choice in response.choices]
            # Evaluate each candidate (simple heuristic: length)
            scored = [{'text': parent['text'] + ' ' + c, 'score': len(c)} for c in candidates]
            new_thoughts.extend(scored)
        # Keep top 'width' by score
        new_thoughts.sort(key=lambda x: x['score'], reverse=True)
        thoughts.append(new_thoughts[:width])
    return thoughts[-1][0]['text']

result = tree_of_thought("Plan a day in Copenhagen.")
print(result)

Simpel Python-implementering, der bruger OpenAI API til at udforske tre tanker per niveau og vælge den bedste.

Oprindelse

Inspireret af 'træsøgning' i kunstig intelligens og begrebet 'chain-of-thought' prompting.

Kilder

1
  • Tree of Thoughts: Deliberate Problem Solving with Large Language Models (Yao et al., 2023)