101 lines
1.7 KiB
Markdown
101 lines
1.7 KiB
Markdown
# GAME GENERATOR
|
|
|
|
## 🚀 TỐI ƯU API CALLS
|
|
|
|
| Trước | Sau |
|
|
|-------|-----|
|
|
| Analyzer: 1 call | Analyzer: 1 call |
|
|
| Generate: N calls (1 per game) | Generate: **1 call** (tất cả games) |
|
|
| Validator: N calls | Validator: **0 call** (Python) |
|
|
| **Tổng: N+1 calls** | **Tổng: 1-2 calls** |
|
|
|
|
---
|
|
|
|
## 📁 Cấu trúc
|
|
|
|
```
|
|
gen_using_graph/
|
|
├── api.py # FastAPI server
|
|
├── requirements.txt
|
|
│
|
|
└── src/
|
|
├── core.py # Core engine (tối ưu API calls)
|
|
├── game_registry.py # Auto-load games
|
|
├── validator.py # Hallucination check (không dùng API)
|
|
│
|
|
└── games/ # Game definitions
|
|
├── _template.py # Template
|
|
├── quiz.py # Quiz game
|
|
└── fill_blank.py # Fill-blank game
|
|
```
|
|
|
|
---
|
|
|
|
## 🔌 API ENDPOINTS
|
|
|
|
### Generate games
|
|
```bash
|
|
POST /generate
|
|
{
|
|
"text": "Văn bản...",
|
|
"enabled_games": ["quiz", "fill_blank"],
|
|
"run_analyzer": true,
|
|
"run_validator": true,
|
|
"max_items": 3
|
|
}
|
|
|
|
# Response includes:
|
|
# "api_calls": 2 <-- Số lần gọi LLM
|
|
```
|
|
|
|
### Xem games
|
|
```bash
|
|
GET /games
|
|
```
|
|
|
|
### Bật/Tắt game
|
|
```bash
|
|
POST /games/quiz/activate
|
|
POST /games/quiz/deactivate
|
|
```
|
|
|
|
### Reload
|
|
```bash
|
|
POST /reload
|
|
```
|
|
|
|
---
|
|
|
|
## 🎮 THÊM GAME MỚI
|
|
|
|
1. Copy `src/games/_template.py` → `src/games/new_game.py`
|
|
2. Sửa nội dung
|
|
3. Gọi `POST /reload`
|
|
|
|
---
|
|
|
|
## ✅ BẬT/TẮT GAME
|
|
|
|
```python
|
|
# Trong file game
|
|
GAME_CONFIG = {
|
|
"active": True, # Bật
|
|
"active": False, # Tắt
|
|
}
|
|
```
|
|
|
|
Hoặc qua API:
|
|
```bash
|
|
curl -X POST http://localhost:8000/games/quiz/deactivate
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Chạy
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
export GOOGLE_API_KEY=your_key
|
|
uvicorn api:app --port 8000
|
|
```
|