WP-Bench: službeni WordPress AI benchmark koji konačno mjeri “znaš li WordPress?”
AI modeli sve bolje pišu kod, ali WordPress je specifična zvijer: hookovi, capabilites, core API-jevi, coding standards, kompatibilnost unatrag i tisuću načina da slučajno napraviš sigurnosnu rupu. Upravo zato je zanimljiva vijest da WordPress projekt gura WP-Bench kao službeni AI benchmark fokusiran baš na WordPress development.
Ideja je jednostavna: umjesto generičkih zadataka tipa “napiši REST endpoint”, WP-Bench testira koliko model razumije WordPress koncepte i može li isporučiti kod koji stvarno radi u WordPress runtimeu, uz provjere standarda i sigurnosti.
Što je WP-Bench i kome je namijenjen
WP-Bench je benchmark (standardizirani set testova) za evaluaciju LLM-ova (large language models) u kontekstu WordPressa. Pokriva dvije velike zone: teorijsko razumijevanje (znanje) i praktičnu isporuku koda (izvršavanje).
Ako radiš na AI-powered pluginovima, internim alatima ili samo biraš coding assistant za WordPress projekte, ovakav benchmark je koristan jer ti daje usporedivu metriku za WordPress-specifične zadatke, a ne opći dojam “dobro piše PHP”.
Zašto WordPressu treba poseban AI benchmark
- WordPress je dominantna platforma, ali većina evaluacija AI modela je općenita i rijetko ulazi u specifičnosti WordPress ekosustava.
- WordPress development ima jasna pravila igre: coding standards, sanitization/escaping, nonces, permission checks, pravilna uporaba hookova i API-ja.
- Novi API-ji se teško “hvataju”: WP-Bench namjerno naglašava moderne stvari poput Abilities API-ja i Interactivity API-ja, gdje se modeli često spotiču jer te značajke dolaze nakon većine njihovih trening setova (prema samoj objavi).
- Transparentnost i usporedivost: cilj je ići prema javnom leaderboardu, kako bi rezultati bili provjerljivi i korisni za zajednicu.
Kako WP-Bench mjeri sposobnosti: Knowledge vs Execution
WP-Bench razdvaja evaluaciju u dvije dimenzije:
- Knowledge: pitanja na više ponuđenih odgovora koja ciljaju WordPress koncepte, core API-je, hookove, sigurnosne obrasce i coding standards (s naglaskom na modernije dodatke poput Abilities API-ja i Interactivity API-ja).
- Execution: zadaci generiranja koda koji se ocjenjuju tako da se kod zaista pokrene u WordPress runtimeu, uz statičku analizu i runtime asercije.
Praktično, to znači da “model zna objasniti što je wp_nonce_field()” nije dovoljno. Benchmark želi vidjeti može li model proizvesti kod koji prođe provjere i odradi zadatak u sandboxu bez lomljenja standarda i bez očitih sigurnosnih problema.
Kako izgleda ocjenjivanje (grading) u praksi
Jedan detalj koji WP-Bench čini zanimljivim je to što WordPress sam glumi ocjenjivača: generirani kod se šalje u WordPress runtime i tamo prolazi kroz analize i testne asercije.
- Harness šalje prompt modelu i traži WordPress kod za određeni zadatak.
- Generirani kod se prosljeđuje WordPress runtimeu kroz WP-CLI (CLI alat za upravljanje WordPressom).
- Runtime radi statičke provjere: sintaksu, coding standards i sigurnosne aspekte.
- Kod se izvršava u sandboxiranom okruženju, uz test asercije koje provjeravaju očekivano ponašanje.
- Rezultati se vraćaju kao JSON sa scoreovima i detaljnim feedbackom.
Zašto je ovo bitno
Kod “AI evaluacija” često je problem što se ocjenjuje samo tekstualni output. Ovdje je naglasak na tome da se WordPress kod stvarno pokrene i provjeri, što je bliže realnom developmentu.
Brzi start: pokretanje WP-Bench-a lokalno
WP-Bench repozitorij je organiziran tako da ima Python dio (harness) i zaseban runtime dio (WordPress grader + konfiguracija). Minimalni put do prvog rezultata izgleda ovako.
1) Instalacija Python harnessa
python3 -m venv .venv && source .venv/bin/activate
pip install -e ./python
2) API ključevi (model provideri)
WP-Bench se oslanja na API-je providera. Kreiraš .env datoteku i upišeš ključeve za one koje koristiš.
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...
3) Pokretanje WordPress runtimea za grading
cd runtime
npm install
npm start
4) Pokretanje benchmarka
cd ..
wp-bench run --config wp-bench.example.yaml
Rezultati se upisuju u output/results.json, a per-test logovi idu u output/results.jsonl. JSONL format je praktičan ako kasnije želiš filtrirati i analizirati rezultate po testovima.
Usporedba više modela u jednom runu
Ako radiš evaluaciju za tim ili želiš standardizirano usporediti modele koje već koristiš, WP-Bench podržava multi-model konfiguraciju u jednom pokretanju.
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-flash
Nazivi modela prate LiteLLM konvencije (prema dokumentaciji na LiteLLM), što olakšava rad s različitim providerima bez ručnog “spajanja” svakog SDK-a.
Konfiguracija koja se stvarno koristi (dataset, grader, concurrency)
Osnovna konfiguracija se radi preko YAML-a. Tipično kopiraš wp-bench.example.yaml i prilagodiš dataset, modele i način ocjenjivanja.
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.jsonl
Dva praktična parametra su limit (koristan za brze probe) i concurrency (koliko paralelno ide). Imaj na umu da paralelizacija znači i više istovremenih API poziva prema providerima, pa to može utjecati na trošak i rate limit.
Korisne CLI opcije
wp-bench run --config wp-bench.yaml # run s config datotekom
wp-bench run --model-name gpt-4o --limit 5 # brzi single-model test
wp-bench dry-run --config wp-bench.yaml # validacija configa bez pozivanja modela
Struktura repozitorija: gdje su datasetovi i što se izvršava
Repozitorij je posložen tako da jasno razdvaja “orchestrator” (Python) i WordPress grading runtime.
.
├── 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 suiteovi: što se zapravo testira
Test suiteovi su u datasets/suites/<suite-name>/ i tipično imaju dvije mape:
execution/— zadaci generiranja koda s asercijama (obično jedan JSON po kategoriji).knowledge/— multiple-choice pitanja (također jedan JSON po kategoriji).
Default suite wp-core-v1 pokriva core API-je, hookove, rad s bazom, te sigurnosne obrasce. Ako želiš dataset povlačiti izvana, podržan je i Hugging Face kao izvor.
dataset:
source: huggingface
name: WordPress/wp-bench-v1
Trenutno stanje i ograničenja (realno, ovo je “early release”)
U najavi je jasno naglašeno da je WP-Bench rani release i da ima nekoliko očekivanih ograničenja:
- Veličina dataseta: trenutačni set testova je relativno mali; treba više slučajeva preko šireg spektra WordPress API-ja i obrazaca.
- Pokrivenost verzija: fokus naginje prema novijim značajkama (spominje se WordPress 6.9 i API-ji poput Abilities i Interactivity), što je djelomično namjerno, ali uvodi bias jer ti dijelovi često nisu bili u trening podacima modela.
- Saturacija benchmarka: modeli su u ranim testovima postizali visoke rezultate na starijim konceptima, pa takva pitanja manje razlikuju modele. Izazov je složiti zadatke koji su stvarno teški, a ne samo “novi”.
Kako čitati rezultate
Ako model pada na novijim API-jima, to nije nužno “loš model” nego signal o svježini znanja i o tome kako se snalazi kad nema memorirani primjer. Za realne projekte to je često ključna razlika.
Što WP-Bench potencijalno mijenja za WordPress developere
Ako WP-Bench postane standard (što je jedan od deklariranih ciljeva), AI provideri bi mogli imati WordPress performanse kao dio internog pre-release testiranja, a ne kao sporednu metriku. Za nas koji radimo u WordPress ekosustavu to znači dvije stvari: bolji modeli za specifične WP zadatke i manje vremena potrošenog na provjeravanje generiranog koda koji “izgleda ok”, ali ne prolazi u realnom runtimeu.
Uz to, planirani open-source leaderboard bi mogao postati praktičan alat kad treba odlučiti koji model koristiti za određenu vrstu posla: npr. refactor legacy plugina vs. pisanje modernog interaktivnog bloka.
Resursi
- 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
Marko Kovačić
SaaS programer i stručnjak za pretplatničke modele. Zanimaju me Stripe i sustavi za ponavljajuća plaćanja. Održivi poslovni model je ključ.
Svi članciViše od Marko Kovačić
Kritična ranjivost u WordPress pluginu Modular DS aktivno se zloupotrebljava za admin pristup (CVE-2026-23550)
Automatizacija WordPress formi s n8n + WPForms: od prijave do workflowa bez ručnog copy/pastea
Kritična eskalacija privilegija u ACF Extended: kada registracijska forma može postati admin backdoor