WebGen-Agent is an advanced website generation agent designed to autonomously create websites from natural language instructions. It was introduced in the paper WebGen-Agent: Enhancing Interactive Website Generation with Multi-Level Feedback and Step-Level Reinforcement Learning.
Code: https://github.com/mnluzimu/WebGen-Agent
WebGen-Agent combines state-of-the-art language models with specialized training techniques to create a powerful website generation tool. The agent can understand natural language instructions specifying appearance and functional requirements, iteratively generate website codebases, and refine them using visual and functional feedback.
Links to the data and model parameters are as follows:
| Data | HF Link |
|---|---|
| webgen-agent_train_sft | π€ luzimu/webgen-agent_train_sft |
| webgen-agent_train_step-grpo | π€ luzimu/webgen-agent_train_step-grpo |
| Model | HF Link |
|---|---|
| WebGenAgent-LM-7B-SFT | π€ luzimu/WebGenAgent-LM-7B-SFT |
| WebGenAgent-LM-7B-Step-GRPO | π€ luzimu/WebGenAgent-LM-7B-Step-GRPO |
| WebGenAgent-LM-8B-SFT | π€ luzimu/WebGenAgent-LM-8B-SFT |
| WebGenAgent-LM-8B-Step-GRPO | π€ luzimu/WebGenAgent-LM-8B-Step-GRPO |
WebGen-Agent follows an iterative, multi-step paradigm for website generation:

The Step-GRPO with Screenshot and GUI-agent Feedback approach uses the screenshot and GUI-agent scores inherently produced in the WebGen-Agent workflow as step-level rewards:
These dual rewards provide dense, reliable process supervision that significantly improves the model's ability to generate high-quality websites.

Clone the repository:
git clone https://github.com/mnluzimu/WebGen-Agent.git
cd WebGen-Agent
Create a conda environment:
conda create -n env/webgen-agent python=3.10
conda activate env/webgen-agent
Install the required dependencies:
pip install -r requirements.txt
Node.js and google-chrome are also necessary for the project. You can install them by running:
bash src/scripts/install_node.sh
bash src/scripts/install_chrome.sh
Before running inference, you should rename .env.template to .env and set the base urls and api keys for the agent-engine LLM and feedback VLM. They can be obtained from any openai-compatible providers such as openrouter, modelscope, bailian, and llmprovider.
You can also deploy open-source VLMs and LLMs by running src/scripts/deploy_qwenvl_32b.sh and src/scripts/deploy.sh. Scripts for single inference and batch inference can be found at src/scripts/infer_single.sh and src/scripts/infer_batch.sh.
python src/infer_single.py \
--model deepseek-chat \
--vlm_model Qwen/Qwen2.5-VL-32B-Instruct \
--instruction "Please implement a wheel of fortune website." \
--workspace-dir workspaces_root/test \
--log-dir service_logs/test \
--max-iter 20 \
--overwrite \
--error-limit 5
python src/infer_batch.py \
--model ${model_name} \
--vlm_model Qwen/Qwen2.5-VL-32B-Instruct \
--fb_model ${fb_model_name} \
--data-path data/webgen-bench/test.jsonl \
--workspace-root workspaces_root \
--log-root service_logs \
--max-iter 20 \
--num-workers 4 \
--eval-tag select_best \
--error-limit 5 \
--max-tokens -1 \
--max-completion-tokens -1 \
--temperature 0.5
If you find our project useful, please cite:
@misc{lu2025webgenagentenhancinginteractivewebsite,
title={WebGen-Agent: Enhancing Interactive Website Generation with Multi-Level Feedback and Step-Level Reinforcement Learning},
author={Zimu Lu and Houxing Ren and Yunqiao Yang and Ke Wang and Zhuofan Zong and Junting Pan and Mingjie Zhan and Hongsheng Li},
year={2025},
eprint={2509.22644},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2509.22644},
}
@misc{lu2025webgenbenchevaluatingllmsgenerating,
title={WebGen-Bench: Evaluating LLMs on Generating Interactive and Functional Websites from Scratch},
author={Zimu Lu and Yunqiao Yang and Houxing Ren and Haotian Hou and Han Xiao and Ke Wang and Weikang Shi and Aojun Zhou and Mingjie Zhan and Hongsheng Li},
year={2025},
eprint={2505.03733},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2505.03733},
}
WebGen-Agent is an advanced website generation agent designed to autonomously create websites from natural language instructions. It was introduced in the paper WebGen-Agent: Enhancing Interactive Website Generation with Multi-Level Feedback and Step-Level Reinforcement Learning.
Code: https://github.com/mnluzimu/WebGen-Agent
WebGen-Agent combines state-of-the-art language models with specialized training techniques to create a powerful website generation tool. The agent can understand natural language instructions specifying appearance and functional requirements, iteratively generate website codebases, and refine them using visual and functional feedback.
Links to the data and model parameters are as follows:
| Data | HF Link |
|---|---|
| webgen-agent_train_sft | π€ luzimu/webgen-agent_train_sft |
| webgen-agent_train_step-grpo | π€ luzimu/webgen-agent_train_step-grpo |
| Model | HF Link |
|---|---|
| WebGenAgent-LM-7B-SFT | π€ luzimu/WebGenAgent-LM-7B-SFT |
| WebGenAgent-LM-7B-Step-GRPO | π€ luzimu/WebGenAgent-LM-7B-Step-GRPO |
| WebGenAgent-LM-8B-SFT | π€ luzimu/WebGenAgent-LM-8B-SFT |
| WebGenAgent-LM-8B-Step-GRPO | π€ luzimu/WebGenAgent-LM-8B-Step-GRPO |
WebGen-Agent follows an iterative, multi-step paradigm for website generation:

The Step-GRPO with Screenshot and GUI-agent Feedback approach uses the screenshot and GUI-agent scores inherently produced in the WebGen-Agent workflow as step-level rewards:
These dual rewards provide dense, reliable process supervision that significantly improves the model's ability to generate high-quality websites.

Clone the repository:
git clone https://github.com/mnluzimu/WebGen-Agent.git
cd WebGen-Agent
Create a conda environment:
conda create -n env/webgen-agent python=3.10
conda activate env/webgen-agent
Install the required dependencies:
pip install -r requirements.txt
Node.js and google-chrome are also necessary for the project. You can install them by running:
bash src/scripts/install_node.sh
bash src/scripts/install_chrome.sh
Before running inference, you should rename .env.template to .env and set the base urls and api keys for the agent-engine LLM and feedback VLM. They can be obtained from any openai-compatible providers such as openrouter, modelscope, bailian, and llmprovider.
You can also deploy open-source VLMs and LLMs by running src/scripts/deploy_qwenvl_32b.sh and src/scripts/deploy.sh. Scripts for single inference and batch inference can be found at src/scripts/infer_single.sh and src/scripts/infer_batch.sh.
python src/infer_single.py \
--model deepseek-chat \
--vlm_model Qwen/Qwen2.5-VL-32B-Instruct \
--instruction "Please implement a wheel of fortune website." \
--workspace-dir workspaces_root/test \
--log-dir service_logs/test \
--max-iter 20 \
--overwrite \
--error-limit 5
python src/infer_batch.py \
--model ${model_name} \
--vlm_model Qwen/Qwen2.5-VL-32B-Instruct \
--fb_model ${fb_model_name} \
--data-path data/webgen-bench/test.jsonl \
--workspace-root workspaces_root \
--log-root service_logs \
--max-iter 20 \
--num-workers 4 \
--eval-tag select_best \
--error-limit 5 \
--max-tokens -1 \
--max-completion-tokens -1 \
--temperature 0.5
If you find our project useful, please cite:
@misc{lu2025webgenagentenhancinginteractivewebsite,
title={WebGen-Agent: Enhancing Interactive Website Generation with Multi-Level Feedback and Step-Level Reinforcement Learning},
author={Zimu Lu and Houxing Ren and Yunqiao Yang and Ke Wang and Zhuofan Zong and Junting Pan and Mingjie Zhan and Hongsheng Li},
year={2025},
eprint={2509.22644},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2509.22644},
}
@misc{lu2025webgenbenchevaluatingllmsgenerating,
title={WebGen-Bench: Evaluating LLMs on Generating Interactive and Functional Websites from Scratch},
author={Zimu Lu and Yunqiao Yang and Houxing Ren and Haotian Hou and Han Xiao and Ke Wang and Weikang Shi and Aojun Zhou and Mingjie Zhan and Hongsheng Li},
year={2025},
eprint={2505.03733},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2505.03733},
}