ArtifactsBench: Bridging the Visual-Interactive Gap in LLM Code Generation Evaluation
13
21 commits
3 linked in READMEs
updated Oct 15, 2025
Tencent Hunyuan Team
π Paper β’ π Home Page β’ π» Code β’ π Leaderboard β’ π Citation
Figure 1: Automation level versus humanβalignment across evaluation frameworks. The red star marks the fully manual WebDev Arena (100% human effort), while the blue bubble denotes our checklist-guided MLLM evaluation, ArtifactsBench, which achieves 94.4% agreement with human votes with 100% automation.
The generative capabilities of Large Language Models (LLMs) are rapidly expanding from static code to dynamic, interactive visual artifacts. This progress is bottlenecked by a critical evaluation gap: established benchmarks focus on algorithmic correctness and are blind to the visual fidelity and interactive integrity that define modern user experiences.
To bridge this gap, we introduce ArtifactsBench, a new benchmark and paradigm for the automated, multimodal evaluation of visual code generation. Our framework programmatically renders each generated artifact and captures its dynamic behavior, which is then assessed by an MLLM-as-Judge guided by a fine-grained, per-task checklist to ensure holistic and reproducible scoring.
ArtifactsBench is open-sourced, including the benchmark with 1,825 diverse tasks, the evaluation harness, and baseline results, to provide the community with a scalable and accurate tool to accelerate the development of user-centric generative models.
ArtifactsBench is the first to offer high-granularity evaluation (GR), strong human-judgment consistency (CHA), automated assessment (AF), and direct visual evaluation (VE), addressing critical gaps in prior work.
| Benchmark | Data Size | Data Source | Primary Task | GR | CHA | AF | VE |
|---|---|---|---|---|---|---|---|
| Humaneval | 164 | Human-Written | Algorithmic Tasks | Low | High | β | β |
| SWE-Bench | 2,294 | GitHub Issues | Repository-level Bug Fixing | Low | High | β | β |
| WebBench | 1,000 | Human-Written | Web Task Automation | Mid | Mid | β | β |
| WebGen-Bench | 101 | Human & GPT-4 | Web Page Generation | Mid | Mid | β | β |
| WebChoreArena | 532 | Curated Tasks | Web Automation (No UI) | Mid | Mid | β | β |
| FullFront | 1,800 QA | Model-Synthesized | Web Comprehension/Generation | Mid | Mid | β | β |
| WebDev Arena | N/A | User-Prompts | Web Design (Human Vote) | Low | High | β | β |
| ArtifactsBench (Ours) | 1,825 | Self-Constructed | Interactive Visual Artifacts | High | High | β | β |
Figure 2: An overview of the ArtifactsBench dataset, illustrating the distribution of tasks across nine primary categories.
Our evaluation process is designed to ensure objectivity and high consistency with human expert judgment.
Figure 3: The ArtifactsBench evaluation pipeline. The process hinges on a two-stage evaluation: (Step 5) we first validate our MLLM-as-Judge by confirming its high pairwise scoring agreement with human experts. (Step 6) Once its reliability is established, the automated judge is deployed at scale to evaluate all model outputs across the entire benchmark.
pip install vllm==0.8.3
pip install pytest-playwright
playwright install
playwright install-deps
pip install transformers
pip install requests
pip install tqdm
You can use your own model to perform inference based on the "question" field in the dataset/artifacts_bench.json file, and save the results in the "answer" field.
{
"index": "unique identifier in the dataset that corresponds one-to-one with 'question'",
"question": "each 'question' in ArtifactsBench",
"answer": "The answer inferred by your model based on the 'question'"
}
api_key=xxx
model_marker=xxx
api_url=xxx
screenshots_count=3
path_with_index=xxx
save_path=xxx
screenshots_dir=xxx
tokenizer_dir=xxx
num_processes=16
python3 src/infer_gemini.py \
$path_with_index \
$save_path \
$screenshots_dir \
$screenshots_count \
$api_key \
$model_marker \
$api_url \
$tokenizer_dir \
--num_processes $num_processes
gemini_reason (the explanation from Gemini) and gemini_ans (the score provided by Gemini).16 processes.# Deploy Qwen2.5-VL-72B-Instruct using vllm
MODEL_DIR="/xxx/Qwen2.5-VL-72B-Instruct"
HOST_IP=$(hostname -i)
model_name=$(basename $MODEL_DIR)
nohup python3 -m vllm.entrypoints.openai.api_server \
--enforce-eager --swap-space 50 --disable-log-requests \
--dtype float16 --trust-remote-code \
--model ${MODEL_DIR} --served-model-name ${model_name} \
--gpu-memory-utilization 0.9 --port 8088 \
--max-model-len 32768 --max-seq-len 32768 \
--limit-mm-per-prompt "image=5"\
--tensor-parallel-size 8 \
--seed 1024 > /root/log.ds_server 2> /root/err.ds_server &
sleep 10m
# Evaluate the answers with Qwen2.5-VL-72B-Instruct.
screenshots_count=3
path_with_index=xxx
save_path=xxx
screenshots_dir=xxx
tokenizer_dir=$MODEL_DIR
ip_file_path=$HOST_IP # ip or ip_list_file
num_processes=16
python3 src/infer_qvl.py \
$path_with_index \
$save_path \
$screenshots_dir \
$screenshots_count \
$model_name \
$tokenizer_dir \
$ip_file_path \
--num_processes $num_processes
Qwen2.5-VL-72B-Instruct model is stored.hostname -i).MODEL_DIR).index, question, and answer.qvl_reason (the explanation from Qwen2.5-VL-72B) and qvl_ans (the score provided by Qwen2.5-VL-72B).pssh.hosts).16 processes).For the latest results, please visit the live leaderboard.
The following are the main results on ArtifactsBench, scored by the Gemini-2.5-Pro-0506 referee. A higher score indicates better overall capability in generating visual and interactive artifacts.
| Model | AVG | SV | MMD | HD | II | GAME | SVG | WEB | SI | MS |
|---|---|---|---|---|---|---|---|---|---|---|
| Closed-Source LLMs | ||||||||||
| Gemini-2.5-Pro-0605 | 57.01 | 59.99 | 56.35 | 58.13 | 54.87 | 55.21 | 61.78 | 58.30 | 55.03 | 55.03 |
| Gemini-2.5-Pro-0506 | 56.79 | 59.02 | 57.69 | 57.99 | 54.70 | 56.65 | 62.37 | 57.28 | 55.26 | 53.04 |
| Claude 4.0-Sonnet | 55.76 | 57.14 | 59.18 | 57.93 | 53.04 | 57.22 | 56.98 | 55.79 | 56.67 | 53.20 |
| Claude 3.7-Sonnet | 52.19 | 52.73 | 53.54 | 53.48 | 50.83 | 52.24 | 51.63 | 53.64 | 52.14 | 50.27 |
| Hunyuan-Turbos-Preview | 50.97 | 50.58 | 53.27 | 53.08 | 49.35 | 51.61 | 51.37 | 52.31 | 50.74 | 49.92 |
| GPT-4.1-2025-04-14 | 48.23 | 47.90 | 48.68 | 49.61 | 47.39 | 50.43 | 48.75 | 48.51 | 46.88 | 42.81 |
| Seed-thinking-1.5 | 47.92 | 49.16 | 48.36 | 49.84 | 45.90 | 47.59 | 47.86 | 49.61 | 49.81 | 45.81 |
| OpenAI-o3-mini | 44.98 | 46.49 | 45.11 | 46.04 | 43.45 | 45.43 | 46.82 | 45.18 | 43.91 | 41.73 |
| O1-2024-12-17 | 38.65 | 39.51 | 38.35 | 39.90 | 37.38 | 38.96 | 38.58 | 39.01 | 38.12 | 36.20 |
| GPT-4o | 37.97 | 40.60 | 37.74 | 40.32 | 35.04 | 36.96 | 39.54 | 39.27 | 35.73 | 35.83 |
| Open-Source LLMs | ||||||||||
| DeepSeek-R1-0528 | 51.62 | 51.18 | 53.65 | 51.92 | 51.33 | 51.78 | 52.87 | 50.66 | 50.27 | 45.51 |
| DeepSeek-V3-0324 | 45.56 | 47.78 | 44.43 | 48.53 | 42.55 | 47.58 | 46.34 | 47.47 | 38.71 | 42.88 |
| DeepSeek-R1 | 44.64 | 47.17 | 46.75 | 46.95 | 41.44 | 44.18 | 47.01 | 45.58 | 41.85 | 42.40 |
| Qwen3-253B-A22B (Instruct) | 44.62 | 47.42 | 46.09 | 46.16 | 41.89 | 44.03 | 47.04 | 45.85 | 43.97 | 42.41 |
| Hunyuan-A13B | 42.95 | 44.80 | 44.64 | 44.22 | 40.88 | 42.30 | 47.31 | 44.56 | 39.17 | 41.23 |
| Qwen3-32B (Instruct) | 42.16 | 44.39 | 43.79 | 44.65 | 39.05 | 41.85 | 43.44 | 43.34 | 40.79 | 39.84 |
| QwQ-32B | 40.79 | 44.01 | 41.64 | 41.92 | 38.22 | 38.96 | 43.08 | 41.74 | 40.17 | 39.37 |
If you find our project helpful, please cite:
@article{zhang2025artifactsbench,
title={ArtifactsBench: Bridging the Visual-Interactive Gap in LLM Code Generation Evaluation},
author={Zhang, Chenchen and Li, Yuhang and Xu, Can and Liu, Jiaheng and Liu, Ao and Zhou, Changzhi and Deng, Ken and Wu, Dengpeng and Huang, Guanhua and Li, Kejiao and others},
journal={arXiv preprint arXiv:2507.04952},
year={2025}
}
First Authors
Core Contributors
Contributors | Algorithm Support (Alphabet Order)
Contributors | Data and Front-End Technical Support (Alphabet Order)
Corresponding Authors
{wigginzhou,chaysezhou,faxonlian}@tencent.comIf you encounter any issues during testing, please contact adamwzhang@tencent.com.
This repository is licensed under the terms of the LICENSE file.
ArtifactsBench: Bridging the Visual-Interactive Gap in LLM Code Generation Evaluation
13
21 commits
3 linked in READMEs
updated Oct 15, 2025
Tencent Hunyuan Team
π Paper β’ π Home Page β’ π» Code β’ π Leaderboard β’ π Citation
Figure 1: Automation level versus humanβalignment across evaluation frameworks. The red star marks the fully manual WebDev Arena (100% human effort), while the blue bubble denotes our checklist-guided MLLM evaluation, ArtifactsBench, which achieves 94.4% agreement with human votes with 100% automation.
The generative capabilities of Large Language Models (LLMs) are rapidly expanding from static code to dynamic, interactive visual artifacts. This progress is bottlenecked by a critical evaluation gap: established benchmarks focus on algorithmic correctness and are blind to the visual fidelity and interactive integrity that define modern user experiences.
To bridge this gap, we introduce ArtifactsBench, a new benchmark and paradigm for the automated, multimodal evaluation of visual code generation. Our framework programmatically renders each generated artifact and captures its dynamic behavior, which is then assessed by an MLLM-as-Judge guided by a fine-grained, per-task checklist to ensure holistic and reproducible scoring.
ArtifactsBench is open-sourced, including the benchmark with 1,825 diverse tasks, the evaluation harness, and baseline results, to provide the community with a scalable and accurate tool to accelerate the development of user-centric generative models.
ArtifactsBench is the first to offer high-granularity evaluation (GR), strong human-judgment consistency (CHA), automated assessment (AF), and direct visual evaluation (VE), addressing critical gaps in prior work.
| Benchmark | Data Size | Data Source | Primary Task | GR | CHA | AF | VE |
|---|---|---|---|---|---|---|---|
| Humaneval | 164 | Human-Written | Algorithmic Tasks | Low | High | β | β |
| SWE-Bench | 2,294 | GitHub Issues | Repository-level Bug Fixing | Low | High | β | β |
| WebBench | 1,000 | Human-Written | Web Task Automation | Mid | Mid | β | β |
| WebGen-Bench | 101 | Human & GPT-4 | Web Page Generation | Mid | Mid | β | β |
| WebChoreArena | 532 | Curated Tasks | Web Automation (No UI) | Mid | Mid | β | β |
| FullFront | 1,800 QA | Model-Synthesized | Web Comprehension/Generation | Mid | Mid | β | β |
| WebDev Arena | N/A | User-Prompts | Web Design (Human Vote) | Low | High | β | β |
| ArtifactsBench (Ours) | 1,825 | Self-Constructed | Interactive Visual Artifacts | High | High | β | β |
Figure 2: An overview of the ArtifactsBench dataset, illustrating the distribution of tasks across nine primary categories.
Our evaluation process is designed to ensure objectivity and high consistency with human expert judgment.
Figure 3: The ArtifactsBench evaluation pipeline. The process hinges on a two-stage evaluation: (Step 5) we first validate our MLLM-as-Judge by confirming its high pairwise scoring agreement with human experts. (Step 6) Once its reliability is established, the automated judge is deployed at scale to evaluate all model outputs across the entire benchmark.
pip install vllm==0.8.3
pip install pytest-playwright
playwright install
playwright install-deps
pip install transformers
pip install requests
pip install tqdm
You can use your own model to perform inference based on the "question" field in the dataset/artifacts_bench.json file, and save the results in the "answer" field.
{
"index": "unique identifier in the dataset that corresponds one-to-one with 'question'",
"question": "each 'question' in ArtifactsBench",
"answer": "The answer inferred by your model based on the 'question'"
}
api_key=xxx
model_marker=xxx
api_url=xxx
screenshots_count=3
path_with_index=xxx
save_path=xxx
screenshots_dir=xxx
tokenizer_dir=xxx
num_processes=16
python3 src/infer_gemini.py \
$path_with_index \
$save_path \
$screenshots_dir \
$screenshots_count \
$api_key \
$model_marker \
$api_url \
$tokenizer_dir \
--num_processes $num_processes
gemini_reason (the explanation from Gemini) and gemini_ans (the score provided by Gemini).16 processes.# Deploy Qwen2.5-VL-72B-Instruct using vllm
MODEL_DIR="/xxx/Qwen2.5-VL-72B-Instruct"
HOST_IP=$(hostname -i)
model_name=$(basename $MODEL_DIR)
nohup python3 -m vllm.entrypoints.openai.api_server \
--enforce-eager --swap-space 50 --disable-log-requests \
--dtype float16 --trust-remote-code \
--model ${MODEL_DIR} --served-model-name ${model_name} \
--gpu-memory-utilization 0.9 --port 8088 \
--max-model-len 32768 --max-seq-len 32768 \
--limit-mm-per-prompt "image=5"\
--tensor-parallel-size 8 \
--seed 1024 > /root/log.ds_server 2> /root/err.ds_server &
sleep 10m
# Evaluate the answers with Qwen2.5-VL-72B-Instruct.
screenshots_count=3
path_with_index=xxx
save_path=xxx
screenshots_dir=xxx
tokenizer_dir=$MODEL_DIR
ip_file_path=$HOST_IP # ip or ip_list_file
num_processes=16
python3 src/infer_qvl.py \
$path_with_index \
$save_path \
$screenshots_dir \
$screenshots_count \
$model_name \
$tokenizer_dir \
$ip_file_path \
--num_processes $num_processes
Qwen2.5-VL-72B-Instruct model is stored.hostname -i).MODEL_DIR).index, question, and answer.qvl_reason (the explanation from Qwen2.5-VL-72B) and qvl_ans (the score provided by Qwen2.5-VL-72B).pssh.hosts).16 processes).For the latest results, please visit the live leaderboard.
The following are the main results on ArtifactsBench, scored by the Gemini-2.5-Pro-0506 referee. A higher score indicates better overall capability in generating visual and interactive artifacts.
| Model | AVG | SV | MMD | HD | II | GAME | SVG | WEB | SI | MS |
|---|---|---|---|---|---|---|---|---|---|---|
| Closed-Source LLMs | ||||||||||
| Gemini-2.5-Pro-0605 | 57.01 | 59.99 | 56.35 | 58.13 | 54.87 | 55.21 | 61.78 | 58.30 | 55.03 | 55.03 |
| Gemini-2.5-Pro-0506 | 56.79 | 59.02 | 57.69 | 57.99 | 54.70 | 56.65 | 62.37 | 57.28 | 55.26 | 53.04 |
| Claude 4.0-Sonnet | 55.76 | 57.14 | 59.18 | 57.93 | 53.04 | 57.22 | 56.98 | 55.79 | 56.67 | 53.20 |
| Claude 3.7-Sonnet | 52.19 | 52.73 | 53.54 | 53.48 | 50.83 | 52.24 | 51.63 | 53.64 | 52.14 | 50.27 |
| Hunyuan-Turbos-Preview | 50.97 | 50.58 | 53.27 | 53.08 | 49.35 | 51.61 | 51.37 | 52.31 | 50.74 | 49.92 |
| GPT-4.1-2025-04-14 | 48.23 | 47.90 | 48.68 | 49.61 | 47.39 | 50.43 | 48.75 | 48.51 | 46.88 | 42.81 |
| Seed-thinking-1.5 | 47.92 | 49.16 | 48.36 | 49.84 | 45.90 | 47.59 | 47.86 | 49.61 | 49.81 | 45.81 |
| OpenAI-o3-mini | 44.98 | 46.49 | 45.11 | 46.04 | 43.45 | 45.43 | 46.82 | 45.18 | 43.91 | 41.73 |
| O1-2024-12-17 | 38.65 | 39.51 | 38.35 | 39.90 | 37.38 | 38.96 | 38.58 | 39.01 | 38.12 | 36.20 |
| GPT-4o | 37.97 | 40.60 | 37.74 | 40.32 | 35.04 | 36.96 | 39.54 | 39.27 | 35.73 | 35.83 |
| Open-Source LLMs | ||||||||||
| DeepSeek-R1-0528 | 51.62 | 51.18 | 53.65 | 51.92 | 51.33 | 51.78 | 52.87 | 50.66 | 50.27 | 45.51 |
| DeepSeek-V3-0324 | 45.56 | 47.78 | 44.43 | 48.53 | 42.55 | 47.58 | 46.34 | 47.47 | 38.71 | 42.88 |
| DeepSeek-R1 | 44.64 | 47.17 | 46.75 | 46.95 | 41.44 | 44.18 | 47.01 | 45.58 | 41.85 | 42.40 |
| Qwen3-253B-A22B (Instruct) | 44.62 | 47.42 | 46.09 | 46.16 | 41.89 | 44.03 | 47.04 | 45.85 | 43.97 | 42.41 |
| Hunyuan-A13B | 42.95 | 44.80 | 44.64 | 44.22 | 40.88 | 42.30 | 47.31 | 44.56 | 39.17 | 41.23 |
| Qwen3-32B (Instruct) | 42.16 | 44.39 | 43.79 | 44.65 | 39.05 | 41.85 | 43.44 | 43.34 | 40.79 | 39.84 |
| QwQ-32B | 40.79 | 44.01 | 41.64 | 41.92 | 38.22 | 38.96 | 43.08 | 41.74 | 40.17 | 39.37 |
If you find our project helpful, please cite:
@article{zhang2025artifactsbench,
title={ArtifactsBench: Bridging the Visual-Interactive Gap in LLM Code Generation Evaluation},
author={Zhang, Chenchen and Li, Yuhang and Xu, Can and Liu, Jiaheng and Liu, Ao and Zhou, Changzhi and Deng, Ken and Wu, Dengpeng and Huang, Guanhua and Li, Kejiao and others},
journal={arXiv preprint arXiv:2507.04952},
year={2025}
}
First Authors
Core Contributors
Contributors | Algorithm Support (Alphabet Order)
Contributors | Data and Front-End Technical Support (Alphabet Order)
Corresponding Authors
{wigginzhou,chaysezhou,faxonlian}@tencent.comIf you encounter any issues during testing, please contact adamwzhang@tencent.com.
This repository is licensed under the terms of the LICENSE file.