WP-Bench: uradni benchmark za merjenje, kako dobro AI razume WordPress
Generični programerski benchmarki pogosto pokažejo, da modeli zlahka napišejo splošno PHP ali JavaScript kodo. Pri WordPressu pa se zatakne na tipičnih stvareh: pravilna raba hookov (actions/filters), varnostne prakse (nonces, capability checks), WordPress coding standards, arhitektura vtičnikov in predvsem to, ali se koda dejansko obnaša pravilno v pravem runtime okolju.
Zato je WordPress projekt predstavil WP-Bench – uradni WordPress AI benchmark: odprtokodno orodje in nabor testov, ki merijo, kako dobro posamezni jezikovni modeli razumejo WordPress razvoj in kako dobro znajo generirati kodo, ki prestane realno izvajanje.
Kaj je WP-Bench in kaj pravzaprav meri
WP-Bench je benchmark (standardiziran testni okvir), ki AI modelom postavlja WordPress-specifične naloge in jih ocenjuje v dveh dimenzijah:
- Knowledge: vprašanja tipa multiple-choice o WordPress konceptih, API-jih, hookih, varnostnih vzorcih in coding standardih. Poudarek je tudi na sodobnejših dodatkih, kot sta Abilities API in Interactivity API.
- Execution: naloge generiranja kode, ki se ocenijo prek pravega WordPress runtime-a – z analizo kode in z dejanskim izvajanjem ter assertions (trditvami/testi), ki preverijo rezultat.
Ključna ideja: model lahko “pozna teorijo”, a pade na praktičnih detajlih (npr. napačen hook, manjkajoč nonce, napačna sanitizacija, neupoštevanje standardov). WP-Bench želi meriti oboje – razumevanje in izvedbo.
Zakaj je to pomembno za WordPress razvijalce
WordPress poganja ogromen del spleta, a večina javnih ocen AI modelov temelji na splošnih nalogah. To je problematično, ker WordPress razvoj ni samo “napiši funkcijo”, ampak specifičen ekosistem: hooki, WP_Query, REST API, permissions, multisite posebnosti, varnost in kompatibilnost.
- Bolj informirana izbira orodij: če gradiš AI-podprte funkcionalnosti v vtičniku ali pa uporabljaš coding assistant, je koristno vedeti, kateri modeli se v WordPress kontekstu dejansko izkažejo.
- Pritisk na ponudnike modelov: cilj je, da WP-Bench postane standard, ki ga laboratoriji in ponudniki modelov vključijo v predizdajne evaluacije – tako WordPress zmogljivost ne bo “naknadna misel”.
- Transparentnost prek leaderboarda: ekipa dela proti javnemu leaderboardu, kjer bi bili rezultati primerljivi, ponovljivi in uporabni za skupnost.
Kako poteka ocenjevanje (grading) v praksi
WP-Bench ne ocenjuje samo z “heuristiko” ali subjektivnim pregledom. Namesto tega uporabi WordPress kot ocenjevalca: generirano kodo požene v izoliranem okolju in jo preveri s statično analizo ter runtime testi.
- Harness pošlje modelu prompt z zahtevo, da napiše WordPress kodo.
- Generirana koda se posreduje WordPress runtime-u prek WP-CLI.
- Runtime izvede statično analizo (npr. sintaksa, coding standards, varnostni vzorci).
- Koda se zažene v sandboxu, kjer assertions preverijo pričakovano obnašanje.
- Rezultati se vrnejo kot JSON s točkami in podrobnim feedbackom.
Ta pristop je zanimiv predvsem zato, ker odpre vrata za ponovljive primerjave: isti testni set, enak runtime, enaka pravila ocenjevanja. Če model “halucinira” WordPress API ali naredi tipično napako, se to hitro pokaže.
Hiter zagon: od namestitve do prvih rezultatov
Repo je odprtokoden in zasnovan tako, da lahko benchmark poženeš lokalno. Minimalni potek izgleda takole.
1) Namesti Python del (harness)
python3 -m venv .venv && source .venv/bin/activate
pip install -e ./python2) Nastavi API ključe ponudnikov modelov
V .env dodaš ključe za tiste ponudnike, ki jih želiš testirati (npr. OpenAI, Anthropic, Google):
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...3) Zaženi WordPress runtime (grader)
Runtime del v repozitoriju uporablja Node/NPM in vsebuje WordPress grader plugin ter konfiguracijo za okolje.
cd runtime
npm install
npm start4) Poženi benchmark
cd ..
wp-bench run --config wp-bench.example.yamlRezultati se zapišejo v output/results.json, dodatni per-test logi pa v output/results.jsonl.
Primerjava več modelov v enem zagonu
WP-Bench podpira multi-model zagon: v konfiguracijo našteješ več modelov, harness pa jih požene zaporedno in na koncu izpiše primerjalno tabelo. Imena modelov sledijo konvencijam LiteLLM.
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-flashTo je uporabno, ko želiš z lastnimi testi preveriti, kateri model je najboljši za tipične naloge v tvojem workflowu (npr. pisanje vtičnikov, refaktoriranje, generiranje REST endpointov) – in to v okolju, kjer se napake pokažejo kot failed assertions, ne kot “lep” odgovor.
Konfiguracija: dataset, grader in parametri zagona
Osnovni način je, da kopiraš wp-bench.example.yaml in ga prilagodiš. Tipično nastaviš izvor dataseta, model(e), način ocenjevanja ter omejitve (limit) in paralelizem (concurrency).
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.jsonlUporabni CLI ukazi
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 modelsStruktura repozitorija in kje živijo testi
Repo je precej jasno razdeljen: Python del vodi izvedbo (harness), runtime del skrbi za WordPress grader, dataseti pa so organizirani v suites.
.
├── 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 suite-i so v datasets/suites/<suite-name>/ in imajo tipično dva sklopa:
execution/– naloge generiranja kode z assertions (po kategorijah, v JSON datotekah)knowledge/– multiple-choice vprašanja (prav tako po kategorijah, v JSON datotekah)
Privzeti suite wp-core-v1 pokriva WordPress core API-je, hooks, delo z bazo in varnostne vzorce.
Nalagalnik dataseta prek Hugging Face
Če želiš dataset uporabljati iz Hugging Face vira, konfiguracija izgleda takole:
dataset:
source: huggingface
name: WordPress/wp-bench-v1Trenutno stanje in omejitve, ki jih je dobro poznati
WP-Bench je zgodnja izdaja, zato je ekipa precej jasna glede omejitev:
- Velikost dataseta: trenutni testni set je razmeroma majhen; za res celovito sliko bo potrebnih več primerov čez širši spekter WordPress API-jev in tipičnih razvojnih vzorcev.
- Pristranskost k novejšim verzijam: suite trenutno nagiba k funkcionalnostim okoli WordPress 6.9 (npr. Abilities API, Interactivity API). To je delno namenoma, ker se ravno pri novih API-jih modeli pogosto najbolj lovijo, a hkrati to lahko vpliva na primerljivost z modeli, treniranimi na starejših podatkih.
- Saturacija pri starejših konceptih: pri zgodnjih testih so modeli dosegali zelo visoke rezultate na starejših WordPress temah, kar pomeni, da takšna vprašanja ne dajejo več dobrega signala. Izziv je najti naloge, ki so res težke – ne zgolj nove.
Kdaj ti WP-Bench realno pride prav
Če v ekipi razmišljaš o uvedbi AI v razvojni proces, je največja vrednost WP-Bench v tem, da omogoča ponovljiv preizkus za WordPress kontekst. Na primer:
- izbira modela za interni coding assistant, ko ti je pomembna skladnost s WordPress coding standards in varnostnimi praksami
- primerjava modelov pred tem, ko v produkt vgradiš AI-generirano kodo (npr. “site builder” funkcije, generator blokov, scaffolding za vtičnike)
- regresijsko testiranje: ko menjaš model ali ponudnika, želiš videti, ali kakovost WordPress-specifične kode pade ali zraste
Viri
- Repo: WP-Bench
- Kontekst: AI Building Blocks for WordPress
- WordPress Slack kanal: #core-ai
Reference / Viri
Maja Novak
Urednica slovenskega tima, zagovornica zelenega kodiranja in trajnostnega spletnega razvoja. Energetsko učinkovite spletne strani in ogljično ozaveščen razvoj sta moja cilja.
Vse objaveVeč od Maja Novak
WP Media Cleanup: kako varno pobrati neuporabljene WordPress slike in znižati stroške gostovanja
GDPR skladnost za lastnike spletnih strani: popoln checklist z implementacijskimi koraki
Kritična ranljivost v WordPress vtičniku Modular DS (CVE-2026-23550) je že v zlorabi: kako preveriš in zaščitiš spletno mesto