Small-profiili + >1 entiteettiä → generoi entiteetti kerrallaan: 1. Author (yksi entiteetti, 8b osaa) 2. Syötä Author-koodi → generoi Post + FK 3. Yhdistä ja testaa Large-profiili jatkaa kuten ennen (kaikki kerralla).
Kipinä CodeBench
LLM-koodingenerointibenchmark. Testaa Ollama-mallien kykyä generoida toimivia FastAPI+SQLAlchemy-projekteja ja ajaa testit Docker-kontissa.
Pikastart
# 1. Rakenna Docker-testikontti
docker build -t kipina-pytest -f Dockerfile.pytest .
# 2. Aja benchmark
node benchmark.mjs --ollama http://localhost:11434 --scenarios all
# 3. Avaa raportti
open /tmp/kipina-benchmark/report.html
Pipeline
1. LLM → vaatimusmäärittely (prompts/client.md)
2. LLM → JSON-speksi (prompts/spec.md)
3. LLM → 4 Python-tiedostoa (prompts/code.md + golden-examples/)
4. Staattinen validointi + LLM-korjaus (prompts/fix.md)
5. Docker: uv init + uv add + pytest
CLI-argumentit
| Argumentti | Oletus | Kuvaus |
|---|---|---|
--ollama |
http://localhost:11434 |
Ollama-palvelimen URL |
--hub |
- | Hub-reitti (vaihtoehto Ollamalle) |
--models |
kaikki | Pilkuilla erotettu mallilista |
--scenarios |
default (todo) |
all = todo, users, blog |
--output |
/tmp/kipina-benchmark |
Tuloshakemisto |
Hakemistorakenne
kipina-codebench/
├── benchmark.mjs ← runner
├── Dockerfile.pytest ← Python 3.14 + uv testikontti
├── report-template.html ← HTML-raporttipohja
├── package.json
├── prompts/ ← muokattavat promptit
│ ├── client.md ← vaatimusmäärittely
│ ├── spec.md ← JSON-speksi
│ ├── code.md ← koodigenerointi
│ └── fix.md ← korjaus
├── golden-examples/ ← referenssitoteutukset
│ ├── todo/ ← taso 1: perus-CRUD (6 testiä)
│ ├── blog/ ← taso 2: relaatiot (13 testiä)
│ └── DOCUMENTATION.md ← zensical-dokumentointiohjeet
└── results/ ← tallennetut tulokset
Promptien muokkaus
Promptit ovat prompts/-kansiossa Markdown-tiedostoina. Muokkaa suoraan — benchmark lataa ne käynnistyksessä.
Esimerkki: lisää sääntö prompts/code.md:hen:
- Tests: PUT/update test data MUST include ALL required fields
Kultaiset esimerkit
golden-examples/todo/ syötetään LLM:lle referenssinä. Malli näkee tarkalleen millaista koodia odotetaan:
- SQLAlchemy 2.0 (DeclarativeBase, Mapped, mapped_column)
- Pydantic v2 (ConfigDict)
- Python 3.14 syntaksi (str | None)
- Uniikki testidata per testi
Lisää uusia esimerkkejä luomalla hakemisto (esim. golden-examples/shop/).
Pisteytys
| Komponentti | Pisteet | Peruste |
|---|---|---|
| Speksi OK | 10p | JSON-speksi onnistui |
| Koodi generoitu | 10p | Kaikki 4 tiedostoa syntyneet |
| Testit | 0–60p | passed/total × 60 |
| Korjaukset | 0–20p | 0 kierrosta = 20p, 1 = 10p, 2+ = 0p |
Tähdet: ★★★★★ (90+), ★★★★☆ (70+), ★★★☆☆ (50+), ★★☆☆☆ (25+), ★☆☆☆☆ (1+)
Käyttö git-submodulena
git submodule add <repo-url> tools/codebench
cd tools/codebench
docker build -t kipina-pytest -f Dockerfile.pytest .
node benchmark.mjs --ollama http://localhost:11434 --scenarios all