LEAP: Learning Efficient Action Proposals For LLM Agents
Organizations: University of Chicago · Stanford University · Together AI
Abstract
LLM agents are known to be slow in rollouts. An agent completes a task one step at a time. At each step, it reasons and then chooses an action to execute. The next step and action cannot start until the previous one has finished. Speculative decoding accelerates the rollouts at the reason phase by drafting and verifying the inference tokens. Recent works have also started to apply similar ideas at the action phase. These works use off-the-shelf models, usually large, to draft action proposals for target model to verify. Large drafters match the target more often but take longer to propose, while small off-the-shelf models are fast but rarely make the same decision as the target. We ask a more general question: what determines the end-to-end speedup of action speculation? To answer it, we develop a latency framework for the speculative round. The framework compares what a round gains with what it costs. The gain depends on how well the drafter predicts the target and on how many steps the task can take before it ends. The cost comes from drafting, from waiting for target verification and from executing tools. Guided by the framework, we introduce LEAP (Learning Efficient Action Proposals) which keeps the drafter small and makes it accurate by training it on the target actions sequences. With a small 0.6B model, LEAP agrees with the target on most decisions and makes agents up to 60% faster in end-to-end wall clock time, with no systematic change in task success. Across various datasets, target models and draft models, the framework accounts for most of the measured speedups. We also show the draft model can be online trained with no prior trace collection and match the performance of offline training, making LEAP practical to deploy in the real world.
Figures & tables
| Benchmark | Target | 0.6B | 1.7B | 4B |
|---|---|---|---|---|
| OpenAGI | Qwen3-32B | |||
| Gemma-4-31B | ||||
| TaskBench | Qwen3-32B | |||
| Gemma-4-31B | ||||
| -bench | Qwen3-32B | |||
| Gemma-4-31B |
| Benchmark | 0.6B trained | 0.6B base | 32B direct | 32B reason |
|---|---|---|---|---|
| ( LEAP ) | ( Liu et al., 2026 ) | ( Hua et al., 2025 ; Guan et al., 2026 ) | ( Bai et al., 2026 ; Ji et al., 2026 ) | |
| OpenAGI | ||||
| TaskBench | ||||
| -bench | ||||
| BFCL |
| offline agreement | |||
|---|---|---|---|
| objective | supervision | TaskBench | BFCL |
| SFT on target actions (ours) | target’s committed actions | 75.2 | 66.7 |
| SFT on gold labels | benchmark ground truth | 69.9 | 50.5 |
| GRPO from the SFT draft | exact-match reward | 77.1 | 65.7 |
| Benchmark | Offline | Online: retrain | Online: continual |
|---|---|---|---|
| OpenAGI | |||
| -bench |
Appendix figures & tables20 assets
Supplementary material from the paper’s appendix.
Appendix
| , | target agent; draft |
|---|---|
| , | context and target action at step ; : -th proposal of a round |
| proposals per round (depth) | |
| accepted proposals in a round; the round commits steps | |
| agent steps in a segment (between user turns or up to the end of the task) | |
| , hit rate at position ; is the first-position acceptance | |
| , | committed steps per round; expected bonus-step loss at segment ends (Eq. 3 ) |
| drafts used in prior work | ours | ||||
|---|---|---|---|---|---|
| benchmark | contexts | untrained 0.6B | 32B-direct | 32B-reason | trained 0.6B |
| ( Liu et al., 2026 ) | ( Hua et al., 2025 ; Guan et al., 2026 ) | ( Bai et al., 2026 ; Ji et al., 2026 ) | |||
| OpenAGI | 263 | 12.8 | 76.6 | 97.3 | 75.0 |
| TaskBench | 277 | 25.0 | 84.8 | 96.9 | 75.2 |
| -bench | 226 | 8.0 | 42.5 | 65.0 | 63.7 |
| BFCL | 99 | 2.0 | 62.6 | 91.9 | 66.7 |
| benchmark | offline | per proposal | |||||
|---|---|---|---|---|---|---|---|
| OpenAGI | 75.0 | 0.71 | 0.63 | 0.63 | 0.81 | 0.80 | 0.75 |
| TaskBench | 75.2 | 0.66 | 0.51 | 0.53 | 0.66 | 0.73 | 0.68 |
| -bench | 63.7 | 0.64 | 0.54 | – | 0.63 | – | 0.64 |
| BFCL | 49.2 | 0.38 | 0.20 | – | 0.62 | – | 0.53 |
| benchmark | draft | steps | (s) | agreem. | accept. | speedup | 95% CI | ||
| Target Qwen3-32B | |||||||||
| OpenAGI | 0.6B | 4.2 | 1.1 | 3 | 75.4 | 0.75 | 2.05 | 1.50 | [1.36, 1.65] |
| 1.7B | 4.2 | 1.1 | 3 | 77.6 | 0.78 | 2.18 | 1.55 | [1.43, 1.68] | |
| 4B | 4.2 | 1.1 | 3 | 78.7 | 0.79 | 2.26 | 1.46 | [1.30, 1.62] | |
| TaskBench | 0.6B | 5.0 | 1.8 | 3 | 74.7 | 0.70 | 1.94 | 1.38 | [1.24, 1.55] |
| 1.7B | 5.0 | 1.8 | 3 | 81.0 | 0.76 | 2.07 | 1.47 | [1.34, 1.61] | |
| hit rates | predicted | |||||||||||
| benchmark | draft | pred. | meas. | draft | i.i.d. | Eq. 4 | measured | |||||
| OpenAGI | trained 0.6B | 1 | 0.74 | – | – | 1.54 | 1.09 | 1.08 | 0.08 | 1.35 | 1.32 | 1.34 |
| OpenAGI | trained 0.6B | 3 | 0.71 | 0.44 | 0.28 | 2.05 | 1.21 | 1.19 | 0.18 | 1.48 | 1.47 | 1.51 |
| OpenAGI | trained 0.6B | 5 | 0.70 | 0.47 | 0.31 | 2.25 | 1.24 | 1.21 | 0.22 | 1.47 | 1.54 | 1.57 |
| OpenAGI | untrained 0.6B | 3 | 0.15 | 0.00 | 0.00 | 1.14 | 1.03 | 1.05 | 0.13 | 0.97 | 0.98 | 0.98 |
| OpenAGI | 32B-direct | 3 | 0.70 | 0.50 | 0.33 | 2.19 | 1.21 | 1.27 | 0.61 | 1.12 | 1.20 | 1.16 |
| replay, before the run | live, in the run | speedup | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| benchmark | ex-ante | measured | ||||||||
| OpenAGI | 0.70 | 0.45 | 0.26 | 2.03 | 0.71 | 0.44 | 0.28 | 2.05 | 1.48 | 1.51 |
| TaskBench | 0.73 | 0.42 | 0.24 | 2.04 | 0.66 | 0.34 | 0.18 | 1.88 | 1.56 | 1.37 |
| -bench | 0.59 | 0.34 | – | 1.85 | 0.64 | 0.35 | – | 1.88 | 1.59 | 1.58 |
| Target | Benchmark | Draft | Draft timing | Predicted | Measured | replay | meas. |
|---|---|---|---|---|---|---|---|
| Qwen3 | OpenAGI | 0.6B | probe | 1.48 | 1.50 | 1.22 | 1.19 |
| Qwen3 | OpenAGI | 1.7B | run | 1.53 | 1.55 | 1.22 | 1.21 |
| Qwen3 | OpenAGI | 4B | run | 1.47 | 1.46 | 1.24 | 1.25 |
| Qwen3 | TaskBench | 0.6B | probe | 1.53 | 1.38 | 1.14 | 1.22 |
| Qwen3 | TaskBench | 1.7B | run | 1.58 | 1.47 | 1.16 | 1.21 |
| Qwen3 | TaskBench | 4B | run | 1.53 | 1.36 | 1.16 | 1.26 |
| draft | overall | seen | unseen |
| untrained 0.6B | 12.8 | 11.5 | 14.8 |
| LoRA , 3 epochs, epoch 2 by validation loss (Table 7 ) | 75.0 | 82.2 | 64.5 |
| LoRA , ep 7 by validation exact match | 77.1 | 86.4 | 63.2 |
| LoRA , epoch 12 | 74.1 | 83.4 | 60.4 |
| full fine-tuning, ep 7 | 75.2 | 84.7 | 61.0 |
| LoRA , ep 7, 50% of the pairs (535) | 72.0 | 80.5 | 59.4 |
| offline agreement | draft term | predicted speedup | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| draft | OpenAGI | TaskBench | -bench | BFCL | OpenAGI | TaskBench | -bench | BFCL | OpenAGI | TaskBench | -bench |
| 0.6B | 75.4 | 74.7 | 63.3 | 66.7 | 0.17 | 0.16 | 0.03 | 0.04 | 1.48 | 1.53 | 1.58 |
| 1.7B | 77.6 | 81.0 | 68.1 | 72.7 | 0.20 | 0.19 | 0.03 | 0.04 | 1.53 | 1.58 | 1.64 |
| 4B | 78.7 | 80.5 | 69.5 | 79.8 | 0.28 | 0.29 | 0.04 | 0.07 | 1.47 | 1.53 | 1.62 |
| OpenAGI | TaskBench | -bench | BFCL multi-turn | |
|---|---|---|---|---|
| task type | tool-selection plan | tool calls with args | ticket-driven support | multi-turn function calling |
| tools | 14 TERMINATE | DailyLife APIs | 44 | per-task catalog |
| target format | ReAct, <tool> tag with tool name | ReAct, <tool> tag with name({json}) | single-call JSON, guided | <tool_call> tags, ordered group |
| target reasoning | thought tok. | thought tok. | on, budget 2,048 | on, budget 4,096 |
| target action budget | 32 tok. | 128 tok. | (in budget) | (in budget) |
| draft format | direct, tool name | direct, name args | grammar, JSON call | grammar, call group / <respond/> |
| benchmark | draft | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| OpenAGI | trained 0.6B | 3 | 0.71 | 0.44 | 0.28 | – | – | 0.38 | 2.05 |
| OpenAGI | trained 0.6B | 1 | 0.74 | – | – | – | – | 0.20 | 1.54 |
| OpenAGI | trained 0.6B | 5 | 0.70 | 0.47 | 0.31 | 0.14 | 0.08 | 0.46 | 2.25 |
| OpenAGI | untrained 0.6B | 3 | 0.15 | 0.00 | 0.00 | – | – | 0.01 | 1.14 |
| OpenAGI | 32B-direct | 3 | 0.70 | 0.50 | 0.33 | – | – | 0.34 | 2.19 |
| TaskBench | trained 0.6B | 3 | 0.66 | 0.34 | 0.18 | – | – | 0.30 | 1.88 |
| OpenAGI | TaskBench | -bench | BFCL | |
|---|---|---|---|---|
| max model length (tokens) | 2,048 | 4,096 | 16,384 | 24,576 |
| GPU memory fraction, target / draft | 0.82 / 0.10 | 0.85 / 0.10 | 0.88 / 0.08 | 0.88 / 0.06 |
| max concurrent sequences, target / draft | 8 / 2 | 4 / 2 | 4 / 4 | 4 / 1 |
| guided decoding | – | – | xgrammar | xgrammar |
| reasoning parser | – | – | qwen3 | qwen3 |
| verification | prefix-ordered, cancel | |||
| speedup | |||||||
|---|---|---|---|---|---|---|---|
| benchmark | steps | tasks | meas. | pred. | |||
| OpenAGI | 3 | 15 | 0.52 | 1.66 | 2.14 | 1.54 | 1.35 |
| OpenAGI | 4 | 21 | 0.31 | 1.46 | 2.15 | 1.52 | 1.39 |
| OpenAGI | 5 | 15 | 0.40 | 1.54 | 2.14 | 1.60 | 1.57 |
| OpenAGI | 9 | 0.30 | 1.10 | 1.80 | 1.39 | 1.55 | |
| TaskBench | 27 | 0.38 | 1.29 | 1.91 | 1.48 | 1.37 | |
| evaluated on | ||||
|---|---|---|---|---|
| draft trained on | OpenAGI | TaskBench | -bench | BFCL |
| OpenAGI | 75.5 | 29.6 | 8.8 | 3.0 |
| TaskBench | 23.3 | 74.7 | 9.3 | 6.1 |
| -bench | 10.8 | 21.7 | 63.7 | 1.0 |
| BFCL | 12.0 | 23.1 | 8.0 | 66.7 |
| untrained base | 13.3 | 25.3 | 8.0 | 2.0 |
| Benchmark | Offline | Online: retrain | Online: continual |
|---|---|---|---|
| OpenAGI | 1.51 [1.38, 1.64] | 1.47 [1.31, 1.63] | 1.51 [1.40, 1.64] |
| -bench | 1.61 [1.44, 1.79] | 1.61 [1.43, 1.81] | 1.63 [1.46, 1.83] |
| version | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | update time |
|---|---|---|---|---|---|---|---|---|---|---|---|
| OpenAGI, retrain on buffer | 53.0 | 58.8 | 67.0 | 69.6 | 73.3 | 74.7 | 73.4 | 72.8 | 74.1 | 74.0 | 27–73 s |
| OpenAGI, continual | 48.7 | 61.6 | 65.7 | 69.8 | 63.5 | 69.2 | 70.8 | 72.5 | 75.9 | 74.9 | 22 s |
| -bench, retrain on buffer | 33.6 | 57.5 | 58.4 | 58.4 | 64.6 | 66.4 | – | – | – | – | 3–18 min |
| -bench, continual | 28.3 | 57.1 | 54.9 | 59.7 | 63.3 | 63.3 | – | – | – | – | 3–6 min |
| Qwen3-32B target | Gemma-4-31B target | |||||||
| speculative | speculative | |||||||
| benchmark | sequential | 0.6B | 1.7B | 4B | sequential | 0.6B | 1.7B | 4B |
| OpenAGI | 126 | 126 | 126 | 126 | 63 | 63 | 63 | 63 |
| TaskBench | 116 | 114 | 115 | 114 | 60 | 60 | 60 | 60 |
| -bench | 22 | 23 | 24 | 21 | 39 | 40 | 40 | 40 |
| BFCL multi-turn | 34 | 34 | 36 | 34 | 48 | 47 | 47 | 48 |
LLM Agents
Large language model agents use language models to plan, use tools, and act across multi-step tasks and environments.
See all 685 papers