/** * ToT — Tree of Thoughts: breadth-first iterative expansion + pruning. * * Paper: "Tree of Thoughts: Deliberate Problem Solving with Large * Language Models" — Yao et al., 2023 * (https://arxiv.org/abs/2305.10601). * * Pattern: Factory → produces a `Runner` built from `Loop(depth times, * Parallel(K thought branches) + prune-to-top-M)`. * Role: patterns/ layer. Pure composition over existing primitives. * Build-time-fixed depth + branching factor; runtime frontier * is pruned to `beamWidth` per level via a consumer-supplied * scorer. * * Tradeoff vs. full DFS: this shipped variant is BFS with constant * width. True DFS with backtracking or adaptive branching factor would * need runtime-variable Parallel (DynamicParallel) or recursion. */ import type { LLMProvider } from '../adapters/types.js'; import type { Runner } from '../core/runner.js'; export interface ToTOptions { readonly provider: LLMProvider; readonly model: string; /** System prompt for the thought-generation LLMCall. */ readonly thoughtPrompt: string; /** Depth of the tree (number of expansion iterations). */ readonly depth: number; /** Branching factor — K thoughts generated per frontier node per iteration. */ readonly branchingFactor: number; /** * Scorer: given a thought, return a numeric score. Higher is better. * The top `beamWidth` thoughts survive each level; the rest are pruned. * Synchronous so pruning is deterministic. */ readonly score: (thought: string) => number; /** Beam width — how many thoughts survive after each level. Default 1 (greedy). */ readonly beamWidth?: number; readonly temperature?: number; readonly maxTokens?: number; readonly name?: string; readonly id?: string; } /** * Build a ToT Runner. At run time: * 1. Seed — treat the input message as the initial frontier of 1 thought. * 2. For each of `depth` iterations: * a. Parallel fan-out: generate `branchingFactor` new thoughts. * b. Score all new thoughts, keep top `beamWidth`, pass to next iteration. * 3. Return the single best-scoring thought from the final frontier. */ export declare function tot(opts: ToTOptions): Runner<{ message: string; }, string>; //# sourceMappingURL=ToT.d.ts.map