Solvent: Long-Horizon Reasoning for Multi-Step Retrosynthesis
Organizations: Fudan University · Shanghai Artificial Intelligence Laboratory · Generative Symbolic Intelligence Lab (GenSI), Tsinghua University
Abstract
Multi-step retrosynthesis requires recursively transforming a target molecule through successive reaction steps into purchasable building blocks, and recent work has begun to draw on large language model (LLM) reasoning to tackle the task. In its latest evolution, LLM reasoning has entered the long-horizon regime: models pursue objectives across interdependent steps, interact with environments, and adapt to feedback. This shift has markedly advanced LLM capabilities, as illustrated by breakthroughs in AI-driven mathematical research. At this frontier, we introduce Solvent, an 8B LLM that successfully extends long-horizon reasoning to multi-step retrosynthesis. Through a two-round post-training curriculum, Solvent learns to interleave iterative synthesis planning, external availability verification, and adaptive route revision. Experiments show that, following a performance boost from RL, Solvent scores 61.86% across four benchmarks, surpassing mid-scale language models and prior search-based retrosynthesis systems, and rivaling frontier trillion-parameter LLMs.
Figures & tables
| Method | Params. | Pistachio Hard | Pistachio Reachable | USPTO-190 | ChEMBL- 1000 | Average (%) |
| Frontier LLMs (proprietary) | ||||||
| Claude Opus 4.8 † | — | 38.57 | 77.50 | 54.44 | 55.63 | 56.54 |
| Gemini 3.5 Flash † | — | 42.86 | 72.50 | 52.22 | 65.63 | 58.30 |
| Grok 4.5 † | — | 52.86 | 71.25 | 50.00 | 62.50 | 59.15 |
| GPT-5.5 † | — | 58.57 | 82.50 | 54.44 | 58.75 | 63.57 |
| Frontier LLMs (open-weight) | ||||||
| Performance on USPTO-190 | ||||||
| Method | ||||||
| Greedy DFS | 19.47 | 19.47 | 19.47 | 19.47 | 19.47 | 19.47 |
| retro* | 38.95 | 50.00 | 68.95 | 74.74 | 77.89 | 79.47 |
| retro*-0 | 27.37 | 37.89 | 55.79 | 62.63 | 72.11 | 74.21 |
| retro*+ | 55.79 | 68.42 | 79.47 | 83.16 | 84.21 | 84.21 |
| retro*+-0 | 47.89 | 61.05 | 76.84 | 82.11 | 85.79 | 86.32 |
| Training stage | Pistachio Hard | Pistachio Reachable | USPTO- 190 | ChEMBL- 1000 | Average | |
|---|---|---|---|---|---|---|
| Initial Backbone | 0.00 | 0.00 | 0.53 | 0.20 | 0.18 | |
| Round 1 | Teacher-guided cold start | 2.00 | 12.67 | 3.16 | 7.20 | 6.26 |
| First-round RL | 19.00 | 40.00 | 9.47 | 22.80 | 22.82 | |
| Round 2 | Reasoning bootstrapping | 23.00 | 41.33 | 22.63 | 29.80 | 29.19 |
| Final-stage RL | 62.00 | 78.00 | 48.95 | 58.50 | 61.86 | |
Appendix figures & tables36 assets
Supplementary material from the paper’s appendix.
Appendix
| Benchmark | Targets | Avg. reactions | Avg. depth |
|---|---|---|---|
| USPTO-190 | 190 | 6.7 | 6.0 |
| ChEMBL-1000 | 1,000 | – | – |
| Pistachio Reachable | 150 | 5.5 | 5.4 |
| Pistachio Hard | 100 | 7.5 | 7.2 |
| Diagnostic | Value |
|---|---|
| Evaluation targets | 1,440 |
| Exact target overlap | 0 |
| Median maximum Morgan similarity | 0.466 |
| Targets with maximum similarity | 5.28% |
| Targets with novel Murcko scaffolds | 81.49% |
| Success on novel-scaffold targets | 60.26% |
| Method | Params. | Pistachio Hard | Pistachio Reachable | USPTO-190 | ChEMBL- 1000 | Average (%) |
| Frontier LLMs (proprietary) | ||||||
| Claude Opus 4.8 | — | 38.57 | 77.50 | 54.44 | 55.63 | 56.54 |
| Gemini 3.5 Flash | — | 42.86 | 72.50 | 52.22 | 65.63 | 58.30 |
| Grok 4.5 | — | 52.86 | 71.25 | 50.00 | 62.50 | 59.15 |
| GPT-5.5 | — | 58.57 | 82.50 | 54.44 | 58.75 | 63.57 |
| Frontier LLMs (open-weight) | ||||||
| Setting | Value |
|---|---|
| Annotation model | Intern-S1 |
| Source target–route pairs | 104,867 |
| Generations per route | 1 |
| Temperature | 0.7 |
| Top- / top- | 1.0 / 50 |
| Reasoning mode | Enabled |
| Setting | Value |
|---|---|
| Teacher model | DeepSeek-V4-Pro |
| Target source | USPTO-full |
| Rollout targets | 2,200 |
| Rollouts per target | 8 |
| Maximum inventory-query turns | 3 |
| Cumulative generation limit | 32k tokens |
| Setting | Value |
|---|---|
| Generating policy | |
| Target source | USPTO-full |
| Trajectory sampling | Best-of- |
| Temperature / top- | 1.0 / 1.0 |
| Maximum reasoning-and-action turns | 5 |
| Cumulative generation limit | 32k tokens |
| Setting | Value |
|---|---|
| Initialization | retrosynthesis-pretrained Qwen3-8B checkpoint |
| Fine-tuning method | Full-parameter SFT |
| Examples / validation split | 102,212 / 1,000 |
| Training epochs | 2 |
| Maximum sequence length | 4,096 tokens |
| Global batch size | 64 |
| Setting | Value |
|---|---|
| Initialization | |
| Fine-tuning method | Full-parameter SFT |
| Examples / validation split | 700 / 50 |
| Training epochs | 2 |
| Maximum sequence length | 32,768 tokens |
| Global batch size | 8 |
| Setting | Value |
|---|---|
| Initialization | Teacher-guided cold-start policy |
| Optimization algorithm | GSPO |
| Training targets | 10,000 |
| Optimization updates | 50 |
| Rollout targets per batch | 128 |
| Rollouts per target | 8 |
| Setting | Value |
|---|---|
| Initialization | |
| Fine-tuning method | Full-parameter SFT |
| Examples / validation split | 9,550 / 100 |
| Training epochs | 1 |
| Maximum sequence length | 32,768 tokens |
| Global batch size | 8 |
| Setting | Value |
|---|---|
| Initialization | |
| Optimization algorithm | GSPO |
| Training targets | 10,000 |
| Optimization updates | 780 |
| Rollout targets per batch | 64 |
| Rollouts per target | 8 |
| Pass@1 (%) | Pass@8 (%) | |||||
|---|---|---|---|---|---|---|
| SFT epochs | Without warm-up | With warm-up | Without warm-up | With warm-up | ||
| 1 | 24.99 | 26.42 | +1.43 | 65.24 | 69.62 | +4.38 |
| 2 | 30.21 | 32.61 | +2.40 | 70.92 | 73.10 | +2.18 |
| 3 | 28.50 | 32.94 | +4.44 | 74.70 | 75.26 | +0.56 |
| Epoch | Eval loss | SFT entropy | Macro P@1 (%) | Macro P@8 (%) | Rollout NLL | Final parse (%) |
|---|---|---|---|---|---|---|
| 1 | 0.2850 | 0.3217 | 26.42 | 69.62 | 0.3151 | 71.53 |
| 2 | 0.2851 | 0.2830 | 32.61 | 73.10 | 0.2488 | 81.32 |
| 3 | 0.3058 | 0.2586 | 32.94 | 75.26 | 0.1927 | 77.01 |
| Feedback | Success (%) | Stock-complete (%) | Chemical validity (%) | Mean response tokens | Mean inventory queries |
|---|---|---|---|---|---|
| True | 68.20 | 80.40 | 73.60 | 7,020 | 2.40 |
| Shuffled | 39.00 | 43.80 | 46.60 | 9,158 | 3.27 |
| Masked | 17.60 | 19.20 | 47.20 | 7,891 | 3.63 |
| Performance | Inference behavior | ||||||
| Turn limit | Success rate (%) | Stock-complete routes (%) | Chemically valid routes (%) | Mean tool calls (all) | Mean tool calls (successful) | Mean response tokens | Truncated (%) |
| 2 | 27.20 | 28.40 | 27.80 | 1.71 | 1.00 | 4,524 | 0.00 |
| 3 | 50.20 | 56.00 | 51.60 | 2.07 | 1.38 | 5,743 | 0.20 |
| 4 | 62.80 | 70.40 | 65.40 | 2.33 | 1.71 | 6,563 | 0.00 |
| 5 | 68.00 | 77.40 | 71.80 | 2.48 | 1.92 | 7,063 | 0.20 |
| 6 | 69.20 | 83.60 | 74.00 | 2.49 | 2.10 | 7,294 | 0.20 |
| Performance (%) | Generation behavior | ||||||
|---|---|---|---|---|---|---|---|
| Success rate | Stock- complete | Chemical validity | Token NLL | Response tokens | Inventory queries | Truncated (%) | |
| 0.6 | 65.80 | 76.00 | 69.60 | 0.1084 | 7,055 | 2.52 | 0.80 |
| 0.7 | 66.80 | 77.20 | 71.40 | 0.1322 | 6,911 | 2.48 | 0.40 |
| 0.8 | 68.00 | 77.40 | 71.80 | 0.1638 | 7,063 | 2.48 | 0.20 |
| 0.9 | 65.00 | 76.80 | 70.80 | 0.2103 | 7,595 | 2.47 | 0.60 |
| 1.0 | 63.00 | 73.60 | 70.80 | 0.2847 | 7,958 | 2.43 | 0.20 |
| Method | Params. | Success (%) | Output tokens | Inventory queries |
| Frontier LLMs (proprietary) | ||||
| Claude Opus 4.8 † | — | 56.54 | 3.57k | 2.73 |
| Gemini 3.5 Flash † | — | 58.30 | 20.33k | 2.70 |
| Grok 4.5 † | — | 59.15 | 14.30k | 1.72 |
| GPT-5.5 † | — | 63.57 | 5.32k | 2.57 |
| Frontier LLMs (open-weight) | ||||
| Synthetic accessibility | ChemCensor | Round trip | |||||
| Method | Params. | Stock routes (/400) | Target–leaf SA | Reducing steps (%) | RC routes /100 steps | FG routes /100 steps | Route RT@20 (%) |
| Frontier LLMs (proprietary) | |||||||
| Claude Opus 4.8 | — | 304 | 0.611 | 70.10 | 8.35 | 3.49 | 14.42 |
| Gemini 3.5 Flash | — | 300 | 0.607 | 68.60 | 9.89 | 6.02 | 15.75 |
| Grok 4.5 | — | 295 | 0.618 | 63.89 | 8.48 | 4.48 | 13.06 |
| GPT-5.5 | — | 289 | 0.539 | 66.57 | 9.98 | 5.33 | 10.90 |
| Orthogonal diagnostic | Primary pass (%) | Primary non-pass (%) | Difference (95% CI) |
|---|---|---|---|
| ChemCensor RC step support | 59.72 | 45.92 | ( , ) |
| ChemCensor FG step support | 45.14 | 29.90 | ( , ) |
| Exact route RT@20 | 14.98 | 0.00 | ( , ) |
| Query | Proposed route boundary | Available leaves |
|---|---|---|
| 1 | Aniline and aryl isocyanate | 0/2 |
| 2 | Two anilines and CDI | 1/3 |
| 3 | Both aniline branches expanded to simpler precursors | 6/6 |
| Policy | Truncated (%) | Parseable final answer (%) | Malformed or incomplete interaction (%) |
|---|---|---|---|
| Teacher-guided SFT | 78.27 | 12.93 | 71.32 |
| 0.79 | 70.91 | 39.69 |
| Policy | Tokens | Steps | Stock- complete | Chemical validity |
|---|---|---|---|---|
| Round 2 bootstrapping | 6,449 | 4 | Yes | No |
| Final-stage RL | 3,935 | 3 | Yes | Yes |