Igra: 1-5 igrača, nekoliko rundi (konfigurabilno). Svaku rundu svaki igrač kaže izmišljenog lika (širok pojam — bilo koji medij), Idriz presudi ko bi pobijedio i zašto. Pobjednik runde se banuje do kraja partije. Redoslijed se rotira svaku rundu (zadnji ima prednost). Najviše pobjeda runda = pobjednik partije. - idriz/gamestore.py: trajno skladište (heroji, Elo rejting, broj rundi), bez vanjskih zavisnosti (i admin ga uvozi). clear_favorite() drži borbe dosljedne kroz partije (jači heroj ne gubi od znatno slabijeg). - idriz/game.py: resolve_hero (najjači LLM gpt-5.5 + web search fallback samo kad ne zna lika), adjudicate (presuda + obrazloženje na bosanskom), Match (tok partije). - assistant.py: 4 realtime alata (nova_partija, izbor, presudi, kraj) + upute; igra ide odmah nazad modelu, ne kroz pozadinski posao. - config.py: game_model (default = text_model). - admin: tab "Superheroji" (broj rundi + rang-lista + reset pamćenja). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LzKpYaEsuWDevuNnvSjcFW
57 lines
2.8 KiB
Markdown
57 lines
2.8 KiB
Markdown
# Idriz
|
||
|
||
Glasovni pomoćnik za djecu, alternativa ekranu. Sluša preko mikrofona, govori na zvučnik, a rezultate štampa na printer.
|
||
Radi samo na mašini `idriz` (Debian 13); ovaj repozitorij služi za sigurnosne kopije koda.
|
||
|
||
## Šta zna (v0.2)
|
||
- **Razgovor:** odgovara na pitanja glasom, kratko. Dijete kroz razgovor traži "naprednije" ili "pojednostavi" i Idriz drži taj nivo do kraja razgovora.
|
||
- **Sažetak sa Wikipedije:** nađe članak na engleskoj Wikipediji, prevede ga i sažme na bosanski, prilagodi uzrastu i odštampa najviše 2 stranice.
|
||
- **Bojanka:** generiše crno-bijelu sliku sa konturama preko cijele A4 stranice i odštampa je.
|
||
|
||
Razgovor ide preko OpenAI Realtime API-ja (govor u govor). Tišina znači kraj komande. Idriz prije štampanja uvijek pita za potvrdu.
|
||
|
||
## Struktura
|
||
- `idriz/assistant.py` glavna petlja (Realtime sesija, alati, half-duplex audio)
|
||
- `idriz/audio.py` mikrofon i zvučnik preko `pacat` (PipeWire), PCM16 24 kHz
|
||
- `idriz/wiki.py` pretraga i preuzimanje članka
|
||
- `idriz/textgen.py` prevod i sažetak (chat model, JSON)
|
||
- `idriz/render.py` HTML → PDF (WeasyPrint), automatsko uklapanje u 2 stranice
|
||
- `idriz/coloring.py` generisanje slike i pretvaranje u čiste konture, A4 PDF
|
||
- `idriz/printer.py` `lp` na CUPS printer `idriz-printer`
|
||
- `systemd/idriz.service` korisnički servis
|
||
|
||
## Instalacija
|
||
```
|
||
scripts/install.sh
|
||
# upiši OPENAI_API_KEY u ~/.config/idriz/env
|
||
systemctl --user start idriz
|
||
journalctl --user -u idriz -f
|
||
```
|
||
|
||
## Konfiguracija (okolina)
|
||
`OPENAI_API_KEY`, `IDRIZ_REALTIME_MODEL` (gpt-realtime-2.1), `IDRIZ_TEXT_MODEL` (gpt-5.5), `IDRIZ_IMAGE_MODEL` (gpt-image-2),
|
||
`IDRIZ_VOICE` (cedar), `IDRIZ_PRINTER` (idriz-printer), `IDRIZ_DRY_RUN=1` (ne štampa), `IDRIZ_MAX_PAGES` (2),
|
||
`IDRIZ_VAD_SILENCE_MS` (900), `IDRIZ_MIC_DEVICE`, `IDRIZ_SPEAKER_DEVICE`.
|
||
|
||
Odštampani PDF-ovi ostaju u `~/.local/share/idriz/out/`.
|
||
|
||
## Test bez štampanja
|
||
```
|
||
IDRIZ_DRY_RUN=1 .venv/bin/python scripts/test_summary.py "Volcano" "8 godina"
|
||
```
|
||
|
||
## Igra "Superheroji"
|
||
|
||
Glasovna igra (bez štampanja). Tok: Idriz pita koliko igrača (1–5) i imena, pa se
|
||
igra nekoliko rundi. Svaku rundu svaki igrač kaže jednog izmišljenog lika (bilo koji
|
||
medij — Supermen, Mario, La Linea, Mad Max...), a Idriz presudi ko bi pobijedio i
|
||
zašto. Pobjednik runde se više ne može birati do kraja partije. Sistem pamti
|
||
relativne jačine likova (Elo) u `~/.local/share/idriz/heroes.json` da borbe budu
|
||
dosljedne kroz partije. Za prepoznavanje likova koristi se najjači tekstualni model
|
||
(`game_model`, default `gpt-5.5`) i njegovo znanje; web search (Responses API) samo
|
||
kad model ne zna lika.
|
||
|
||
- `idriz/gamestore.py` — trajno skladište (heroji, Elo, broj rundi), bez vanjskih zavisnosti.
|
||
- `idriz/game.py` — prepoznavanje likova, presuđivanje, tok partije (`Match`).
|
||
- Broj rundi i rang-lista heroja se podešavaju u admin panelu (tab "Superheroji").
|