import logging from typing import List, Dict from core.config import settings from .base_llm import BaseLLMProvider logger = logging.getLogger("GeminiLLM") class GeminiLLM(BaseLLMProvider): def __init__(self): try: import google.generativeai as genai except ImportError: logger.error("LỖI: Chưa cài đặt thư viện Gemini. Chạy lệnh: pip install google-generativeai") raise if not settings.gemini_api_key: raise ValueError("GEMINI_API_KEY chưa được cấu hình trong .env!") genai.configure(api_key=settings.gemini_api_key) # Sử dụng model flash mới nhất, cực nhanh và có ngữ cảnh lớn self.model = genai.GenerativeModel('gemini-1.5-flash') logger.info("Đã khởi tạo Gemini 1.5 Flash Provider.") def generate_response(self, prompt: str, context: str, history: List[Dict[str, str]] = None) -> str: full_prompt = f"""Bạn là một trợ lý ảo thông minh chuyên giải đáp thông tin dựa trên cơ sở dữ liệu nội bộ. Hãy trả lời câu hỏi của người dùng một cách chính xác, lịch sự và DỰA HOÀN TOÀN vào ngữ cảnh được cung cấp. === NGỮ CẢNH (CONTEXT) === {context} === LỊCH SỬ CHAT === {history if history else 'Không có'} === CÂU HỎI CỦA NGƯỜI DÙNG === {prompt} === TRẢ LỜI === """ try: response = self.model.generate_content(full_prompt) return response.text except Exception as e: logger.error(f"Lỗi khi gọi Gemini API: {e}") return f"Xin lỗi, tôi đang gặp sự cố khi xử lý câu trả lời: {e}"