File size: 18,909 Bytes
a6927da 646c6af a6927da bf0d7ad a6927da f662ec9 a6927da 7556728 bf0d7ad 7556728 a6927da a7ff9a6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 | <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ToolTree: Efficient LLM Agent Tool Planning via Dual-Feedback Monte Carlo Tree Search and Bidirectional Pruning</title>
<meta name="description" content="ToolTree plans LLM agent tool use via dual-feedback Monte Carlo tree search with bidirectional pruning — state-of-the-art across 4 benchmarks with an average gain of ~10% over existing methods.">
<link rel="icon" href="data:,">
<link rel="stylesheet" href="static/style.css">
<script>document.documentElement.classList.add('js');</script>
</head>
<body>
<!-- ================= Sticky section nav (shown after scrolling past the hero) ================= -->
<nav class="topnav" id="topnav" aria-label="Page sections">
<div class="topnav-inner">
<a class="topnav-brand" href="#top">ToolTree</a>
<div class="topnav-links">
<a href="#overview">Overview</a>
<a href="#efficiency">Efficiency</a>
<a href="#method">Method</a>
<a href="#case-study">Case Study</a>
<a href="#results">Results</a>
<a href="#ablation">Ablation</a>
<a href="demo.html">Demo</a>
<a href="#bibtex">BibTeX</a>
</div>
</div>
</nav>
<!-- ================= Hero ================= -->
<header class="hero" id="top">
<div class="container">
<h1><span class="hero-name">ToolTree</span>: Efficient LLM Agent Tool Planning via Dual-Feedback Monte Carlo Tree Search and Bidirectional Pruning</h1>
<p class="authors">
Shuo Yang, Caren Han, Yihao Ding, Shuhe Wang, Eduard Hovy
</p>
<p class="affiliation">The University of Melbourne · The University of Western Australia</p>
<p class="venue"><span class="venue-chip">ICLR 2026</span></p>
<nav class="button-row" aria-label="Paper links">
<a class="btn" href="https://openreview.net/forum?id=Ef5O9gNNLE" target="_blank" rel="noopener"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>Paper</a>
<a class="btn" href="https://arxiv.org/abs/2603.12740" target="_blank" rel="noopener"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>arXiv</a>
<a class="btn" href="https://github.com/SYang2000/ICLR_2026_ToolTree" target="_blank" rel="noopener"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>Code</a>
<a class="btn" href="demo.html"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="currentColor" stroke="none"><polygon points="7 4 20 12 7 20 7 4"/></svg>Demo</a>
<a class="btn btn-ghost" href="#bibtex"><svg class="btn-ico" viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>BibTeX</a>
</nav>
</div>
</header>
<main>
<!-- ================= Metric callouts ================= -->
<section class="metrics">
<div class="container">
<div class="metric-grid reveal stagger">
<div class="metric-card">
<div class="metric-value">~10%</div>
<div class="metric-label">Average gain over existing methods</div>
<div class="metric-sub">Across both closed-set and open-set tool planning scenarios</div>
</div>
<div class="metric-card">
<div class="metric-value">4 / 4</div>
<div class="metric-label">State-of-the-art on all four benchmarks</div>
<div class="metric-sub">GTA · m&m · ToolBench · RestBench</div>
</div>
<div class="metric-card">
<div class="metric-value">#1</div>
<div class="metric-label">Highest efficiency (performance gain per second)</div>
<div class="metric-sub">Compared with all baselines across step limits</div>
</div>
</div>
</div>
</section>
<!-- ================= Overview ================= -->
<section id="overview">
<div class="container">
<h2>Overview</h2>
<div class="abstract-card reveal">
<p class="abstract-text">
<strong>ToolTree</strong> is a novel Monte Carlo tree search-inspired planning paradigm for
LLM agent tool planning. It explores possible tool usage trajectories using a
<strong>dual-stage LLM evaluation</strong> and <strong>bidirectional pruning</strong> mechanism
that enables the agent to make informed, adaptive decisions over extended tool-use sequences
while pruning less promising branches before and after the tool execution.
</p>
</div>
<figure class="paper-figure reveal">
<img src="static/paper/comparison.png" alt="Concept comparison on a street photo asking how many wheels are in total: greedy-based planning commits to a single tool chain and answers incorrectly; search-based planning explores more tool branches but still returns a wrong count; ToolTree prunes branches before (pre-pruning) and after (post-pruning) execution and answers correctly.">
<figcaption>Comparison of ToolTree with greedy search and search-based tool planning. ToolTree chooses
the optimal tool trajectory and answers correctly with bidirectional pruning.</figcaption>
</figure>
</div>
</section>
<!-- ================= Efficiency (Figure 3) ================= -->
<section class="fig3-band section-alt" id="efficiency" aria-label="Progressive efficiency analysis">
<div class="container">
<h2>Efficiency</h2>
<figure class="paper-figure reveal">
<img src="static/paper/efficiency.png" alt="Three line charts across step limits comparing ReAct, Best-first, ToT, LATS, and ToolTree: performance versus step limit, running time versus step limit, and efficiency (performance gain per second) versus step limit — ToolTree sits highest on the performance and efficiency panels at every step limit.">
<figcaption><span class="fig-tag">Figure 3:</span> Progressive efficiency analysis across step limits.
ToolTree achieves the highest efficiency (performance gain per second) compared with all baselines.</figcaption>
</figure>
</div>
</section>
<!-- ================= Method ================= -->
<section id="method">
<div class="container">
<h2>Method</h2>
<figure class="paper-figure reveal">
<img src="static/paper/architecture.png" alt="ToolTree pipeline: an input query enters a repeated loop over the tool tree — selection, pre-evaluation of a candidate tool against a threshold before execution, expansion, execution, post-evaluation of the observed output, and backward-propagation — after which the answer predictor produces the final answer.">
<figcaption>Architecture overview of ToolTree. An input query is processed sequentially via iterative
dual evaluation-guided Monte Carlo Tree Search, including selection, pre-evaluation, expansion,
execution, post-evaluation and backward-propagation.</figcaption>
</figure>
<figure class="paper-figure reveal">
<a href="static/paper/case3_tree.svg" target="_blank" rel="noopener"><img src="static/paper/case3_tree.svg" width="1680" height="1500" alt="Search tree reconstructed from a logged 11-rollout run: from the user query on the left, candidate tool calls branch rightward with pre- and post-evaluation score badges; pre-pruned drafts are dashed with a cross, a failed call is post-pruned in red, duplicate drafts are shown as skipped, and the bold path leads to the final answer bar."></a>
<figcaption>Search over tool-call trajectories on a real logged run (11 rollouts): each node is a
candidate tool call with its pre-/post-evaluation scores, pruned and duplicate drafts are shown
as encountered, and the highest-reward trajectory (bold) is selected as the final plan.
Click to view full size.</figcaption>
</figure>
<div class="mech-grid mech-grid-4 reveal stagger">
<div class="mech-card">
<span class="mech-num">1</span>
<h3>Pre-Evaluation</h3>
<p>
A fast predictive signal that estimates the utility of a tool <em>before</em> execution,
filtering schema- or slot-incompatible calls before expansion.
</p>
</div>
<div class="mech-card">
<span class="mech-num">2</span>
<h3>Post-Evaluation</h3>
<p>
Assesses the actual contribution of a tool <em>after</em> execution based on observed
outcomes, pruning unproductive branches using real feedback.
</p>
</div>
<div class="mech-card">
<span class="mech-num">3</span>
<h3>Bidirectional Pruning</h3>
<p>
Combines pre- and post-evaluation to eliminate unpromising branches, concentrating
computational budget on promising tool chains.
</p>
</div>
<div class="mech-card">
<span class="mech-num">4</span>
<h3>Answer Predictor</h3>
<p>
Incorporates the tool trajectories with the highest reward found by the MCTS to produce
the final prediction.
</p>
</div>
</div>
</div>
</section>
<!-- ================= Case study ================= -->
<section id="case-study" class="section-alt">
<div class="container">
<h2>Case Study</h2>
<span class="band-label">Qualitative case studies from the paper</span>
<figure class="paper-figure reveal">
<div class="figure-stack">
<img src="static/paper/case_study_medical.png" alt="Case study (a): a radiology image question about lung cancer risk — greedy search relies on generic image captioning and heuristic search on shallow heuristics, both missing the finding, while the MCTS-planned trajectory orchestrates domain-specific imaging tools and detects the risk.">
<img src="static/paper/case_study_reasoning.png" alt="Case study (b): a multi-hop knowledge reasoning question about the building seen behind an amusement area — greedy search and heuristic search answer from broad scene cues and the most prominent text, while the MCTS-planned trajectory chains recognition and search tools to identify the building correctly.">
</div>
<figcaption>Two qualitative case studies showcasing ToolTree’s iterative tool orchestration on
(a) a radiology image question and (b) a multi-hop knowledge reasoning task.</figcaption>
</figure>
</div>
</section>
<!-- ================= Results ================= -->
<section id="results">
<div class="container">
<h2>Results</h2>
<p>
ToolTree achieves state-of-the-art performance across 4 benchmarks spanning both closed-set and
open-set tool planning scenarios, with an average gain of ~10% over existing methods.
</p>
<div class="table-wrap reveal">
<table class="results">
<thead>
<tr><th>Benchmark</th><th>Setting</th><th>Tasks & Tools</th><th>Official source</th></tr>
</thead>
<tbody>
<tr><td>GTA</td><td>Closed-set</td><td>229 real-world tasks, 14 executable tools</td><td><a href="https://github.com/open-compass/GTA" target="_blank" rel="noopener">open-compass/GTA</a> · <a href="https://huggingface.co/datasets/Jize1/GTA" target="_blank" rel="noopener">HF dataset</a></td></tr>
<tr><td>m&m</td><td>Closed-set</td><td>882 human-verified multi-step multimodal tasks, 33 tools</td><td><a href="https://github.com/RAIVNLab/mnms" target="_blank" rel="noopener">RAIVNLab/mnms</a> · <a href="https://huggingface.co/datasets/zixianma/mnms" target="_blank" rel="noopener">HF dataset</a></td></tr>
<tr><td>ToolBench</td><td>Open-set</td><td>16,464 real-world REST APIs (RapidAPI)</td><td><a href="https://github.com/OpenBMB/ToolBench" target="_blank" rel="noopener">OpenBMB/ToolBench</a></td></tr>
<tr><td>RestBench</td><td>Open-set</td><td>TMDB & Spotify REST scenarios</td><td><a href="https://github.com/Yifan-Song793/RestGPT" target="_blank" rel="noopener">Yifan-Song793/RestGPT</a></td></tr>
</tbody>
</table>
</div>
<p class="table-note reveal">
This repository ships no benchmark data; each benchmark is downloaded from its official source.
</p>
</div>
</section>
<!-- ================= Ablation ================= -->
<section id="ablation" class="section-alt">
<div class="container">
<h2>Pruning Ablation</h2>
<div class="ablation-block reveal">
<figure class="paper-figure figure-medium">
<img src="static/paper/ablation_pruning.png" alt="Two box plots comparing ToolTree against variants without pre-pruning, without post-pruning, and without both: the number of rollouts and the number of expanded nodes are lowest for full ToolTree and grow as pruning stages are disabled.">
</figure>
<p class="takeaway">Disabling pre-pruning, post-pruning, or both consistently increases the number of
rollouts and expanded nodes, confirming that bidirectional pruning concentrates the computational
budget on promising tool chains.</p>
</div>
</div>
</section>
<!-- ================= BibTeX ================= -->
<section id="bibtex">
<div class="container">
<h2>BibTeX</h2>
<div class="bibtex-box reveal">
<button class="copy-btn" id="copy-btn" type="button">Copy</button>
<pre id="bibtex-text">@inproceedings{yang2026tooltree,
title={ToolTree: Efficient {LLM} Tool Planning via Dual-Feedback Monte Carlo Tree Search and Bidirectional Pruning},
author={Shuo Yang and Caren Han and Yihao Ding and Shuhe Wang and Eduard Hovy},
booktitle={The Fourteenth International Conference on Learning Representations},
year={2026},
url={https://openreview.net/forum?id=Ef5O9gNNLE}
}</pre>
</div>
</div>
</section>
</main>
<footer>
<div class="container">
© 2026 the authors · The University of Melbourne · The University of Western Australia · Code released under the MIT License.
</div>
</footer>
<script>
/* Sticky section nav: slides in once the hero has scrolled out of view. */
(function () {
var hero = document.getElementById('top');
var nav = document.getElementById('topnav');
if (!hero || !nav || !('IntersectionObserver' in window)) return;
var io = new IntersectionObserver(function (entries) {
nav.classList.toggle('visible', !entries[0].isIntersecting);
}, { rootMargin: '-56px 0px 0px 0px' });
io.observe(hero);
})();
/* Scroll-reveal: fade/lift sections in as they enter the viewport.
Elements are only hidden when <html> carries the .js class (added in <head>),
so content stays visible with JS disabled; reduced-motion is handled in CSS. */
(function () {
var els = document.querySelectorAll('.reveal');
var i;
if (!('IntersectionObserver' in window)) {
for (i = 0; i < els.length; i++) els[i].classList.add('revealed');
return;
}
var io = new IntersectionObserver(function (entries) {
entries.forEach(function (en) {
if (en.isIntersecting) {
en.target.classList.add('revealed');
io.unobserve(en.target);
}
});
}, { threshold: 0.08, rootMargin: '0px 0px -8% 0px' });
for (i = 0; i < els.length; i++) io.observe(els[i]);
})();
/* Lightbox: click (or Enter/Space) on a paper figure opens it enlarged; ESC / click closes. */
(function () {
var imgs = document.querySelectorAll('figure.paper-figure img, .case-figure img');
if (!imgs.length) return;
var overlay = null, big = null, lastFocus = null;
function build() {
overlay = document.createElement('div');
overlay.className = 'lightbox';
overlay.setAttribute('role', 'dialog');
overlay.setAttribute('aria-modal', 'true');
overlay.setAttribute('aria-label', 'Enlarged figure');
big = document.createElement('img');
var closeBtn = document.createElement('button');
closeBtn.className = 'lightbox-close';
closeBtn.type = 'button';
closeBtn.setAttribute('aria-label', 'Close enlarged figure');
closeBtn.innerHTML = '×';
overlay.appendChild(big);
overlay.appendChild(closeBtn);
overlay.addEventListener('click', close);
document.body.appendChild(overlay);
}
function open(img) {
if (!overlay) build();
lastFocus = img;
big.src = img.currentSrc || img.src;
big.alt = img.alt || '';
overlay.classList.add('open');
document.body.classList.add('no-scroll');
overlay.querySelector('.lightbox-close').focus();
}
function close() {
if (!overlay || !overlay.classList.contains('open')) return;
overlay.classList.remove('open');
document.body.classList.remove('no-scroll');
if (lastFocus && lastFocus.focus) lastFocus.focus();
}
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' || e.key === 'Esc') close();
});
Array.prototype.forEach.call(imgs, function (img) {
img.setAttribute('tabindex', '0');
img.setAttribute('role', 'button');
img.addEventListener('click', function () { open(img); });
img.addEventListener('keydown', function (e) {
if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {
e.preventDefault();
open(img);
}
});
});
})();
/* BibTeX copy button. */
(function () {
var btn = document.getElementById('copy-btn');
var pre = document.getElementById('bibtex-text');
if (!btn || !pre) return;
function flash(ok) {
btn.textContent = ok ? 'Copied!' : 'Copy failed — select the text manually';
setTimeout(function () { btn.textContent = 'Copy'; }, 2000);
}
function fallbackCopy(text) {
var ta = document.createElement('textarea');
ta.value = text;
ta.setAttribute('readonly', '');
ta.style.position = 'fixed';
ta.style.left = '-9999px';
document.body.appendChild(ta);
ta.select();
var ok = false;
try { ok = document.execCommand('copy'); } catch (e) { ok = false; }
document.body.removeChild(ta);
flash(ok);
}
btn.addEventListener('click', function () {
var text = pre.textContent;
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text).then(
function () { flash(true); },
function () { fallbackCopy(text); }
);
} else {
fallbackCopy(text);
}
});
})();
</script>
</body>
</html>
|