# Troubleshooting Các vấn đề và giải pháp phổ biến khi dùng 9Router. --- ## "Language model did not provide messages" **Vấn đề:** Request thất bại với phản hồi rỗng hoặc thông báo lỗi. **Nguyên nhân:** - Hết quota provider - API key không hợp lệ hoặc hết hạn - Model không khả dụng **Giải pháp:** 1. **Kiểm tra trạng thái quota:** ``` Dashboard → Providers → View quota tracker ``` Nếu hết quota, đợi reset hoặc đổi provider. 2. **Dùng fallback combo:** ``` Dashboard → Combos → Create fallback chain Example: cc/claude-opus → glm/glm-4.7 → if/kimi-k2 ``` 3. **Xác minh kết nối provider:** ``` Dashboard → Providers → Reconnect if needed ``` --- ## Rate Limiting **Vấn đề:** Lỗi "Rate limit exceeded" hoặc "Too many requests". **Nguyên nhân:** - Hết quota subscription (giới hạn 5h/ngày/tuần) - Đạt API rate limit - Quá nhiều request đồng thời **Giải pháp:** 1. **Kiểm tra thời gian reset:** ``` Dashboard → Quota Tracking → View reset countdown ``` 2. **Chuyển sang tier rẻ:** ``` Use: glm/glm-4.7 ($0.6/1M tokens) minimax/MiniMax-M2.1 ($0.20/1M tokens) ``` 3. **Thêm fallback combo:** ``` Dashboard → Combos → Add backup models Primary: cc/claude-opus (subscription) Backup: glm/glm-4.7 (cheap) Emergency: if/kimi-k2 (free) ``` --- ## OAuth Token hết hạn **Vấn đề:** Lỗi "Unauthorized" hoặc "Token expired". **Nguyên nhân:** - OAuth token hết hạn (auto-refresh thất bại) - Session provider không hợp lệ - Vấn đề network khi refresh **Giải pháp:** 1. **Auto-refresh (mặc định):** 9Router tự refresh tokens. Đợi 30 giây rồi thử lại. 2. **Kết nối lại thủ công:** ``` Dashboard → Providers → [Provider Name] → Reconnect → Complete OAuth flow again ``` 3. **Kiểm tra trạng thái provider:** Xác minh provider service đang online (Claude Code, Codex, v.v.) --- ## Chi phí cao **Vấn đề:** Sử dụng hoặc chi phí cao bất ngờ. **Nguyên nhân:** - Dùng model đắt không cần thiết - Không fallback sang tier rẻ hơn - Context window lớn **Giải pháp:** 1. **Kiểm tra usage stats:** ``` Dashboard → Usage Stats → View token consumption → Identify high-cost models ``` 2. **Chuyển sang model rẻ hơn:** ``` Replace: cc/claude-opus ($20-100/month subscription) With: glm/glm-4.7 ($0.6/1M tokens) minimax/MiniMax-M2.1 ($0.20/1M tokens) ``` 3. **Dùng free tier:** ``` if/kimi-k2-thinking (FREE) qw/qwen3-coder-plus (FREE) kr/claude-sonnet-4.5 (FREE) gc/gemini-3-flash-preview (FREE 180K/month) ``` 4. **Tối ưu prompt:** - Giảm context size - Dùng streaming cho phản hồi dài - Cache prompt thường dùng --- ## Connection Refused **Vấn đề:** Lỗi "ECONNREFUSED" hoặc "Cannot connect to localhost:20128". **Nguyên nhân:** - 9Router không chạy - Port 20128 bị chặn - Firewall chặn kết nối **Giải pháp:** 1. **Khởi động 9Router:** ```bash 9router ``` Dashboard sẽ mở tại http://localhost:3000 2. **Xác minh port 20128:** ```bash # Check if port is listening lsof -i :20128 # Or on Windows netstat -ano | findstr :20128 ``` 3. **Kiểm tra firewall:** - macOS: System Settings → Network → Firewall - Windows: Windows Defender Firewall → Allow app - Linux: `sudo ufw allow 20128` 4. **Dùng cloud endpoint:** Nếu localhost không hoạt động (ví dụ: Cursor IDE): ``` Endpoint: https://9router.com/v1 ``` --- ## Dashboard không mở **Vấn đề:** Dashboard không load tại http://localhost:3000. **Nguyên nhân:** - Port 3000 đã được dùng - 9Router bị crash - Vấn đề cache browser **Giải pháp:** 1. **Kiểm tra 9Router có chạy không:** ```bash # Check process ps aux | grep 9router # Check port 3000 lsof -i :3000 ``` 2. **Kill process xung đột:** ```bash # macOS/Linux lsof -ti:3000 | xargs kill -9 # Windows netstat -ano | findstr :3000 taskkill /PID /F ``` 3. **Khởi động lại 9Router:** ```bash # Stop pkill -f 9router # Start 9router ``` 4. **Xóa cache browser:** - Chrome: Ctrl+Shift+Delete → Clear cache - Thử chế độ ẩn danh 5. **Kiểm tra cài đặt firewall:** Đảm bảo port 3000 không bị chặn. --- ## Model Not Found **Vấn đề:** Lỗi "Model not found" hoặc "Invalid model". **Nguyên nhân:** - Provider chưa kết nối - Sai chính tả model ID - Provider không hoạt động **Giải pháp:** 1. **Xác minh kết nối provider:** ``` Dashboard → Providers → Check status (green = active) ``` 2. **Kiểm tra format model ID:** ``` Correct: cc/claude-opus-4-5-20251101 Wrong: claude-opus-4-5-20251101 Format: [provider-prefix]/[model-name] ``` 3. **Liệt kê model khả dụng:** ```bash curl http://localhost:20128/v1/models \ -H "Authorization: Bearer your-api-key" ``` 4. **Kết nối lại provider:** ``` Dashboard → Providers → [Provider] → Reconnect ``` --- ## Phản hồi chậm **Vấn đề:** Request mất quá lâu hoặc timeout. **Nguyên nhân:** - Độ trễ provider - Vấn đề network - Context/response lớn - Provider rate limiting **Giải pháp:** 1. **Kiểm tra trạng thái provider:** ``` Dashboard → Providers → View latency stats ``` 2. **Chuyển sang model nhanh hơn:** ``` Fast: cc/claude-haiku-4-5 (Haiku is faster than Opus) gc/gemini-3-flash-preview qw/qwen3-coder-flash ``` 3. **Dùng streaming:** ```json { "model": "cc/claude-opus-4-5", "messages": [...], "stream": true } ``` 4. **Kiểm tra network:** ```bash # Test latency ping api.anthropic.com ping api.openai.com ``` 5. **Giảm context size:** - Cắt bớt lịch sử tin nhắn - Dùng prompt nhỏ hơn - Bật context pruning trong CLI tool --- ## API Key không hợp lệ **Vấn đề:** Lỗi "Invalid API key" hoặc "Authentication failed". **Nguyên nhân:** - Sao chép sai API key - API key hết hạn - API key chưa được tạo **Giải pháp:** 1. **Tạo lại API key:** ``` Dashboard → Settings → API Keys → Generate New Key → Copy and use new key ``` 2. **Xác minh format key:** ``` Correct: 9r_xxxxxxxxxxxxxxxxxxxxxxxx Wrong: Missing 9r_ prefix ``` 3. **Kiểm tra key trong CLI config:** ```bash # Cursor Settings → Models → OpenAI API Key # Cline Settings → API Key # Environment variable export OPENAI_API_KEY="9r_your_key" ``` 4. **Test API key:** ```bash curl http://localhost:20128/v1/models \ -H "Authorization: Bearer 9r_your_key" ``` --- ## Cần trợ giúp thêm? - **GitHub Issues:** [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues) - **Documentation:** [9router.com/docs](https://9router.com/docs) - **FAQ:** [faq.md](faq.md)