Instructions to use miniweb/MiniWebAgent with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use miniweb/MiniWebAgent with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-4B") model = PeftModel.from_pretrained(base_model, "miniweb/MiniWebAgent") - Notebooks
- Google Colab
- Kaggle
MiniWebAgent executor (Qwen3.5-4B LoRA)
The executor of MiniWebAgent: a LoRA adapter on Qwen3.5-4B trained on MiniWebGen's practice data, so the model performs single web interaction skills (primitives) such as filling a form, setting a slider, drawing a signature or uploading a file. In MiniWebAgent the untrained Qwen3.5-4B is the planner: it splits a task into primitive-level instructions and hands each one to this executor, which acts in the same browser; reasoning steps that only read the page stay with the base model.
Code, benchmark and setup: github.com/miniweb-site/MiniWeb. Data: miniweb/MiniWeb.
Results
Task success (%) of Qwen3.5-4B (the paper's Table 3). MiniWeb: the 63 human tasks of the 13 held-out sites, from which no training data comes; the other three benchmarks are not trained on either.
| MiniWeb held-out | WebArena-Lite | WebVoyager | Online-Mind2Web | |
|---|---|---|---|---|
| Untrained single agent | 37.0 | 27.1 | 45.5 | 17.9 |
| Untrained planner + untrained executor | 42.3 | 30.7 | 59.9 | 21.8 |
| MiniWebAgent (untrained planner + this executor) | 54.5 | 36.4 | 65.5 | 33.9 |
On the 103 generated single-primitive tasks of the held-out sites, the trained model as a single agent goes from 55.3% to 80.3%, with gains in every skill family. On whole tasks it needs the planner: trained mostly on one-primitive episodes, the single agent often stops before reaching the skills it learned (37.0% on the held-out tasks, as untrained).
Use
Serve the base model with the adapter (vLLM), then run MiniWebAgent with the repository's evaluator:
python scripts/fetch_adapters.py # -> data/webmix/adapters/pooled_v4
MODEL=Qwen/Qwen3.5-4B SERVED=qwen35-4b PORT=8400 MAX_LORA_RANK=64 \
LORA_MODULES=pooled_v4=data/webmix/adapters/pooled_v4 bash src/miniwebagent/scripts/serve.sh
python -m miniwebagent.evaluate --human --arm agent_planner --agent-version v6 --planner-name qwen35-4b \
--adapters none --fallback pooled_v4 --vllm http://127.0.0.1:8400/v1 --ports 8300,8301 --out runs/miniwebagent
With PEFT directly: PeftModel.from_pretrained(base_model, "miniweb/MiniWebAgent").
The executor expects the browser-use agent prompt it was trained on (the
system prompt, the task, the agent's memory, the indexed interactive elements and the screenshot) and answers with
its memory and one action. Thinking is off: the chat template renders an empty <think></think> block.
Training
- Data: 27,646 steps of MiniWebGen (the dataset's
training_stepstable, rows withis_targetand notvalidation): 3,128 verified single-primitive trajectories on the 52 training sites, 857 chains of two trajectories and 629 trajectories with an injected and corrected mistake, replayed through the agent harness with the base model writing each step's memory. - Recipe: rank-64 LoRA (alpha 128, dropout 0.05) on the language model's attention projections (full-attention
layers) and MLP projections (every layer); no vision tower. One epoch, AdamW, learning rate 1e-4 with 3% warmup and a
cosine decay, 8 steps per optimizer update, cross-entropy on the whole target (memory and action); 4 GPUs, about 5.5
hours.
training_meta.jsonandtrain_log.jsonlhold the settings and the loss curve.
Other checkpoints
The paper's other trained executors, in ablations/ (same base model and LoRA shape; each folder has its own
training_meta.json). python scripts/fetch_adapters.py --all downloads them under the names the paper's run commands
use (scripts/reproduce.py show <arm>).
| Folder | What it is | Held-out task success |
|---|---|---|
| (root) | MiniWebAgent's executor | 54.5 |
ablations/task_centric |
trained at matched size on task-centric trajectories: InSTA's pipeline reimplemented on the 52 training sites (the dataset's task_centric_steps) |
45.5 |
ablations/specialists/{drag,io,select,rest,reasoning} |
one specialist per skill family group (supplementary material): drag, io, select and rest start from the main executor and train on their families' steps with a KL penalty toward it; reasoning starts from the base model |
51.3 |
ablations/no_done |
the main recipe without each episode's final done step, a control for stopping early (single agent) |
33.9 |
All numbers are with the untrained planner except no_done (single agent; 37.0 with the done steps). The specialists
are served under their family names and picked by the planner's family for each subtask:
LORA_MODULES='drag=.../drag io=.../io select=.../select rest=.../rest reasoning=.../reasoning pooled_v4=...' and
--adapters drag,io,select,rest,reasoning --fallback pooled_v4.
Limitations
Trained only on MiniWeb's synthetic sites and English instructions, mostly on single primitives: on whole tasks it relies on the planner for their structure. Outside MiniWeb it has been evaluated only on the three benchmarks above.
License
Apache 2.0, as the base model.
- Downloads last month
- 23