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.
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.

To get started with WebGen-Agent, follow the installation steps and then try running inference.
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
The WebGen-Bench evaluation script is in run_ui_eval_with_answer.sh. For details of the WebGen-Bench dataset, see WebGen-Bench.
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 |
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.
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.

To get started with WebGen-Agent, follow the installation steps and then try running inference.
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
The WebGen-Bench evaluation script is in run_ui_eval_with_answer.sh. For details of the WebGen-Bench dataset, see WebGen-Bench.
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 |
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},
}