Files
Wizard/wizard_ai/README.md
T
marvinandClaude Opus 5.5 21a2b044d9 Trump card: draw from the stack, no trump for wizards and jesters
- Deal the hands from the shuffled stack and draw the trump card from it,
  so the trump card is in nobody's hand and cannot be played
- A wizard or jester as trump card means no trump suit (previously a
  wizard let the dealer choose); remove the trump selection phase, the
  ChooseTrump action, the trump picker UI and the AI trump actions
- Completed tricks carry their round's trump card, so the table keeps
  showing the matching trump card while the last trick of a round is
  displayed
- Card corners are no longer rotated, so 6 and 9 cannot be confused
- Trump label explains why there is no trump (wizard, jester, last round)
- Tests: trump card never dealt, special cards give no trump, tricks keep
  their trump card

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 10:28:53 +02:00

28 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# wizard_ai
AI player for the Wizard server. The actual RL model is still to be implemented; this package
provides everything around it.
- `agents/` — `Agent` interface (`act(observation) -> action`) plus `RandomAgent`,
`HeuristicAgent` (baseline / fallback) and `ModelAgent` (wraps a `Policy`)
- `model/encoding.py` — observation → fixed-size feature vector (`FEATURE_SIZE`), and the fixed
action space (21 bids + 60 cards) with legal-action masks; works for 3–6 players
- `model/policy.py` — **the place to plug in the model**: subclass `Policy`, implement
`select`, `update`, `save_weights`/`load`, register with `@register_policy`.
`UniformPolicy` is a placeholder so the pipeline runs end to end.
- `training/env.py` — turn-based multi-agent environment around `wizard_game`
(reward = score change per round / 100)
- `training/self_play.py` — self-play loop collecting per-player trajectories and calling
`Policy.update`, with checkpointing
- `training/evaluate.py` — play agents against each other (mean score, win rate)
- `service/client.py` — production: connects to `ws://wizard_server:8083/internal/ai`,
answers `decide` requests, reconnects automatically
```bash
pip install -r requirements-dev.txt
python -m wizard_ai train --episodes 5000 --out models/latest
python -m wizard_ai evaluate --agents model,heuristic,random,random --games 200
python -m wizard_ai serve # env: SERVER_URL, AI_SHARED_SECRET, AGENT, MODEL_PATH
pytest
```