Sửa lỗi API Mode - HF Spaces không nhận được documents
Vấn đề
Khi backend gọi HF Spaces API, nó chỉ gửi query đơn giản, không gửi prompt đã build từ documents. Do đó HF Spaces không nhận được thông tin từ documents đã retrieve.
Đã sửa
1. llm_integration.py - Line 309
Trước:
elif self.provider == LLM_PROVIDER_API:
result = self._generate_api(query, context)
Sau:
elif self.provider == LLM_PROVIDER_API:
# For API mode, send the full prompt (with documents) as the message
# This ensures HF Spaces receives all context from retrieved documents
result = self._generate_api(prompt, context)
2. llm_integration.py - _generate_api() method
Trước:
def _generate_api(self, query: str, context: Optional[List[Dict[str, Any]]] = None) -> Optional[str]:
payload = {
"message": query, # Chỉ gửi query đơn giản
"reset_session": False
}
Sau:
def _generate_api(self, prompt: str, context: Optional[List[Dict[str, Any]]] = None) -> Optional[str]:
# Send the full prompt (with documents) as the message to HF Spaces
payload = {
"message": prompt, # Gửi prompt đầy đủ có documents
"reset_session": False
}
3. Thêm logging chi tiết
- Log khi gọi API:
[LLM] 🔗 Calling API: ... - Log payload:
[LLM] 📤 Payload: ... - Log response:
[LLM] 📥 Response status: ... - Log errors chi tiết
Cách test
- Restart backend server:
pkill -f "manage.py runserver"
cd backend && source venv/bin/activate && cd hue_portal
python3 manage.py runserver 0.0.0.0:8000
- Test trong UI:
- Mở http://localhost:3000
- Gửi câu hỏi: "Mức phạt vượt đèn đỏ là bao nhiêu?"
- Xem server logs để thấy:
[RAG] Using LLM provider: api[LLM] 🔗 Calling API: ...[LLM] 📥 Response status: 200[LLM] ✅ Got message from API
- Kiểm tra response:
- Response phải từ LLM (có văn bản tự nhiên, không phải template)
- Response phải chứa thông tin từ documents đã retrieve
Lưu ý
- Prompt có thể dài (có documents), nhưng HF Spaces API hỗ trợ prompt dài
- Nếu timeout, có thể tăng timeout trong
_generate_api()(hiện tại 60s) - Nếu vẫn không hoạt động, kiểm tra:
- HF Spaces có đang chạy không
- Internet connection
- Server logs để xem lỗi cụ thể