| title: Chess | |
| emoji: ♟️ | |
| colorFrom: purple | |
| colorTo: gray | |
| sdk: gradio | |
| sdk_version: 5.50.0 | |
| app_file: app.py | |
| pinned: false | |
| license: mit | |
| short_description: Play against chess-playing reasoning LLM | |
| # ♔ Chess Reasoner | |
| Play chess against a reasoning LLM! This demo showcases **[nuriyev/chess-reasoner-grpo](https://huggingface.co/nuriyev/chess-reasoner-grpo)**, a Qwen3-4B model tuned to play chess with detailed reasoning traces. | |
| ## 🎮 How to Play | |
| 1. **You play as White** - click on pieces to move them | |
| 2. **AI plays as Black** - the model will respond with its move | |
| 3. **View AI Reasoning** - expand the "🧠 AI Reasoning" accordion to see the model's thought process | |
| 4. **AI First** - click this button if you want the AI to play White instead | |
| ## 🧠 Model Details | |
| | Attribute | Value | | |
| |-----------|-------| | |
| | Base Model | [Qwen/Qwen3-4B-Instruct-2507](https://huggingface.co/Qwen/Qwen3-4B-Instruct-2507) | | |
| | Training | SFT with LoRA (r=32) on reasoning traces | | |
| | Dataset | [aicrowd/ChessExplained](https://huggingface.co/datasets/aicrowd/ChessExplained) | | |
| | Output Format | `<reason>...</reason><uci_move>move</uci_move>` | | |
| ## 📋 Output Format | |
| The model outputs structured reasoning: | |
| ``` | |
| <reason>The opponent left their queen undefended. Taking it wins material.</reason> | |
| <uci_move>d4d8</uci_move> | |
| ``` | |
| ## ⚠️ Limitations | |
| Model is still very bad at playing chess! I am working on creating a beast. Coming soon... | |
| ## 🔗 Links | |
| - [Model Card](https://huggingface.co/nuriyev/chess-reasoner) | |
| - [LoRA Adapter](https://huggingface.co/nuriyev/chess-reasoner-lora) | |
| - [Training Dataset](https://huggingface.co/datasets/nuriyev/chess-reasoning) | |
| - [Training Code](https://colab.research.google.com/drive/1koRx4Aa8AzA1HGwvEFYll9dWmw0hyVzo) |