Spaces:
Sleeping
Sleeping
File size: 3,017 Bytes
519b145 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# Fix: Server đang dùng Local LLM thay vì API Mode
## Vấn đề
Khi test chat trên web, server đang chạy local LLM trên máy thay vì gọi HF Spaces API.
## Nguyên nhân
1. **Global instance cache:** `get_llm_generator()` sử dụng global instance `_llm_generator` chỉ tạo một lần
2. **Server start với env cũ:** Nếu server start với `LLM_PROVIDER=local`, instance sẽ giữ provider=local
3. **Không reload khi env thay đổi:** Khi `.env` được update, server không tự động reload instance
## Đã sửa
### File: `backend/hue_portal/chatbot/llm_integration.py`
**Trước:**
```python
_llm_generator: Optional[LLMGenerator] = None
def get_llm_generator() -> Optional[LLMGenerator]:
global _llm_generator
if _llm_generator is None:
_llm_generator = LLMGenerator()
return _llm_generator if _llm_generator.is_available() else None
```
**Sau:**
```python
_llm_generator: Optional[LLMGenerator] = None
_last_provider: Optional[str] = None
def get_llm_generator() -> Optional[LLMGenerator]:
"""Get or create LLM generator instance.
Recreates instance if provider changed (e.g., from local to api).
"""
global _llm_generator, _last_provider
# Get current provider from env
current_provider = os.environ.get("LLM_PROVIDER", LLM_PROVIDER_NONE).lower()
# Recreate if provider changed or instance doesn't exist
if _llm_generator is None or _last_provider != current_provider:
_llm_generator = LLMGenerator()
_last_provider = current_provider
print(f"[LLM] 🔄 Recreated LLM generator with provider: {current_provider}", flush=True)
return _llm_generator if _llm_generator.is_available() else None
```
## Cách test
1. **Đảm bảo `.env` có đúng config:**
```bash
cd backend
cat .env | grep LLM
# Should show:
# LLM_PROVIDER=api
# HF_API_BASE_URL=https://davidtran999-hue-portal-backend.hf.space/api
```
2. **Restart server:**
```bash
pkill -f "manage.py runserver"
cd backend && source venv/bin/activate && cd hue_portal
python3 manage.py runserver 0.0.0.0:8000
```
3. **Test trong web UI:**
- Mở http://localhost:3000/chat
- Gửi câu hỏi: "Mức phạt vượt đèn đỏ là bao nhiêu?"
- Xem server logs để thấy:
- `[LLM] 🔄 Recreated LLM generator with provider: api`
- `[RAG] Using LLM provider: api`
- `[LLM] 🔗 Calling API: https://davidtran999-hue-portal-backend.hf.space/api/chatbot/chat/`
4. **Kiểm tra response:**
- Response phải từ HF Spaces API (có văn bản tự nhiên, không phải template)
- KHÔNG thấy logs về local model loading
## Lưu ý
- Server sẽ tự động recreate LLM instance khi provider thay đổi
- Không cần restart server khi thay đổi `.env` (nhưng nên restart để đảm bảo)
- Nếu vẫn dùng local LLM, kiểm tra:
- `.env` có `LLM_PROVIDER=api` không
- Server có load đúng `.env` không
- Xem server logs để biết provider nào đang được dùng
|