WP-Bench: eindelijk een benchmark die AI echt op WordPress test
Wie regelmatig met een code-assistent werkt, herkent het patroon: bij generieke PHP- of JavaScript-taken gaat het verrassend soepel, maar zodra je vraagt om iets dat écht WordPress is (capabilities, nonces, WP_Query, filters/actions, of plugin-architectuur), wordt het al snel rommelig. WordPress introduceert nu WP-Bench, een officiële AI-benchmark die expliciet meet hoe goed taalmodellen WordPress-ontwikkeling begrijpen én kunnen uitvoeren.
WP-Bench staat op GitHub als open source project: WP-Bench repository. Het idee is simpel maar ambitieus: niet langer aannemen dat “model X is goed in code”, maar concreet meten hoe een model scoort op WordPress-taken, met reproduceerbare tests en een grader die WordPress zelf gebruikt.
Waarom een WordPress-specifieke AI-benchmark nodig is
WordPress draait een groot deel van het web, maar de meeste AI-evaluaties blijven hangen in algemene programmeeropgaven. Dat zegt weinig over de praktijk: WordPress heeft zijn eigen API’s, conventies en valkuilen (denk aan escaping/sanitizing, nonces, capabilities, of het correct gebruiken van hooks). WP-Bench vult die leemte door precies dát te testen.
- Betere toolkeuzes in de praktijk: als je AI inzet voor pluginontwikkeling, theme-code of interne tooling, wil je weten welke modellen consequent correcte WordPress-oplossingen geven (in plaats van plausibel klinkende pseudo-code).
- Druk op modelproviders: het doel is dat AI-labs WP-Bench meenemen in hun evaluaties. Als WordPress-scores onderdeel worden van pre-release checks, ontstaat er een prikkel om modellen te optimaliseren voor WordPress-use-cases.
- Transparantie via een leaderboard: er wordt toegewerkt naar een publieke leaderboard met resultaten per model. Dat helpt de community én maakt gesprekken met AI-providers concreter.
Wat meet WP-Bench precies?
WP-Bench beoordeelt modellen langs twee assen:
- Knowledge: meerkeuzevragen over WordPress-concepten, core API’s, hooks, securitypatronen en coding standards. Er is extra aandacht voor modernere toevoegingen zoals de Abilities API en Interactivity API (nieuwe onderdelen waar modellen vaak nog moeite mee hebben).
- Execution: codegeneratie-opdrachten die worden nagekeken door een echte WordPress runtime, met statische analyse én runtime-assertions (verwachtingen/tests die tijdens uitvoering gevalideerd worden).
Die combinatie is belangrijk. Een model kan theoretisch de juiste termen noemen, maar alsnog code produceren die faalt op syntaxis, standards, veiligheid of gedrag. WP-Bench dwingt beide kanten af: begrip én werkende implementatie.
Hoe werkt de grading (en waarom dat interessant is)?
Het meest opvallende aan WP-Bench is dat de benchmark WordPress gebruikt als beoordelaar. De gegenereerde code gaat door een grader die in een afgeschermde omgeving draait, aangestuurd via WP-CLI. Op hoofdlijnen ziet de flow er zo uit:
- De harness (benchmark-runner) stuurt een prompt naar een model met een WordPress-taak.
- De output (gegenereerde code) wordt richting de WordPress runtime gestuurd via WP-CLI.
- De runtime doet statische analyse: o.a. syntax checks, coding standards en security checks.
- Daarna draait de code in een sandbox, met assertions die verifiëren of het gedrag klopt.
- De resultaten komen terug als JSON met scores en gedetailleerde feedback.
Voor developers is dit precies wat je wil: niet alleen ‘lijkt correct’, maar aantoonbaar correct binnen een WordPress-context.
Quick start: WP-Bench draaien op je eigen machine
WP-Bench bestaat grofweg uit twee delen: een Python harness (de runner die modellen aanroept en tests orkestreert) en een runtime (de WordPress grader, opgezet als project met tooling eromheen). De officiële quick start ziet er zo uit.
1) Installeren (Python venv + package)
python3 -m venv .venv && source .venv/bin/activate
pip install -e ./python2) API keys configureren via .env
Maak een .env aan met de API keys van je providers. WP-Bench ondersteunt meerdere providers; je zet simpelweg de keys die je gebruikt.
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...3) WordPress runtime (grader) starten
cd runtime
npm install
npm start4) Benchmark runnen
cd ..
wp-bench run --config wp-bench.example.yamlDe output komt standaard in output/results.json en per-test logs in output/results.jsonl. Handig als je later wil analyseren waar een model precies punten laat liggen (bijv. security, coding standards of runtime gedrag).
Meerdere modellen vergelijken in één run
Als je verschillende modellen gebruikt (bijvoorbeeld voor verschillende taken of prijs/latency-profielen), dan wil je vooral weten: waar zit het kwaliteitsverschil op WordPress-vragen? WP-Bench kan meerdere modellen achter elkaar draaien, gedefinieerd in de config.
models:
- name: gpt-4o
- name: gpt-4o-mini
- name: claude-sonnet-4-20250514
- name: claude-opus-4-5-20251101
- name: gemini/gemini-2.5-pro
- name: gemini/gemini-2.5-flashDe modelnamen volgen de conventies van LiteLLM (een provider-abstractielaag): LiteLLM provider docs. WP-Bench draait modellen sequentieel en geeft een vergelijkingstabel terug.
Config: wat je meestal als eerste aanpast
De snelste route is wp-bench.example.yaml kopiëren en aanpassen. Dit zijn de belangrijkste onderdelen:
dataset:
source: local # 'local' or 'huggingface'
name: wp-core-v1 # suite name
models:
- name: gpt-4o
grader:
kind: docker
wp_env_dir: ./runtime # path to wp-env project
run:
suite: wp-core-v1
limit: 10 # limit tests (null = all)
concurrency: 4
output:
path: output/results.json
jsonl_path: output/results.jsonlPraktisch gezien zijn vooral limit (snelle sanity check), concurrency (doorlooptijd) en de models-lijst de knoppen waar je meteen aan draait.
Handige CLI-commando’s
wp-bench run --config wp-bench.yaml # run with config file
wp-bench run --model-name gpt-4o --limit 5 # quick single-model test
wp-bench dry-run --config wp-bench.yaml # validate config without calling modelsDatasets en suites: hoe WP-Bench is opgebouwd
De repository is opgesplitst in logische onderdelen, zodat harness, runtime en datasets los kunnen evolueren:
.
├── python/ # Benchmark harness (pip installable)
├── runtime/ # WordPress grader plugin + wp-env config
├── datasets/ # Test suites (local JSON + Hugging Face builder)
├── notebooks/ # Results visualization and reporting
└── output/ # Benchmark results (gitignored)Test suites vind je onder datasets/suites/<suite-name>/. Per suite zijn er twee mappen:
execution/: code-opdrachten met assertions (meestal één JSON per categorie).knowledge/: multiple-choice vragen (ook per categorie in JSON).
De standaard suite heet wp-core-v1 en richt zich op WordPress core: API’s, hooks, database-handling en securitypatronen.
Datasets laden via Hugging Face
Naast lokale suites kan WP-Bench ook suites van Hugging Face gebruiken, via de dataset-config:
dataset:
source: huggingface
name: WordPress/wp-bench-v1Huidige status: sterk begin, maar nog niet ‘af’
WP-Bench wordt neergezet als een vroege release, met een paar duidelijke beperkingen die je moet meenemen als je scores gaat interpreteren:
- Dataset-omvang: de eerste suite is nog relatief klein. Voor een echt representatieve benchmark zijn meer testcases nodig over het brede WordPress-landschap.
- Versie-bias richting moderne features: de vragen leunen relatief sterk op WordPress 6.9-concepten zoals Abilities API en Interactivity API. Dat is deels expres (juist daar zitten de model-gaten), maar het kan modellen benadelen die getraind zijn op oudere WordPress-kennis.
- Saturatie op oudere concepten: in vroege tests scoren modellen al snel hoog op ‘klassiekers’. Dat levert minder onderscheidend vermogen op; de kunst is dus om vragen te ontwerpen die niet alleen nieuw zijn, maar ook écht uitdagend.
Praktische interpretatie van scores
Zie WP-Bench-scores voorlopig vooral als een vergelijking binnen dezelfde suite/config (model A vs. model B), niet als een absolute waarheid over “AI kan WordPress”. De suite-inhoud en versie-focus bepalen sterk wat je meet.
Waar WP-Bench voor WordPress-developers echt waarde toevoegt
Als je AI inzet in je workflow, gaat het uiteindelijk om drie dingen: betrouwbaarheid, veiligheid en onderhoudbaarheid. WP-Bench probeert die drie impliciet te vangen door niet alleen op ‘juiste output’ te scoren, maar ook op zaken als coding standards en security checks, en door code daadwerkelijk te laten draaien.
Dat maakt het bruikbaar in gesprekken als: welk model is geschikt voor het genereren van plugin-skeletten? Welk model houdt zich beter aan WordPress-conventies? En bij welk model moet je extra streng reviewen op nonces, capability checks en escaping?
Links en resources
- WP-Bench GitHub: https://github.com/WordPress/wp-bench
- AI Building Blocks for WordPress: https://make.wordpress.org/ai/2025/07/17/ai-building-blocks/
- #core-ai Slack channel: https://wordpress.slack.com/archives/C08TJ8BPULS
Lars Jansen
Blockchain- en Web3-ontwikkelaar. Smart contracts en gedecentraliseerde applicaties interesseren mij. Ethereum en Solidity zijn mijn dagelijks werk.
Alle berichten