import logging from typing import List, Dict from core.config import settings from .base_llm import BaseLLMProvider logger = logging.getLogger("GroqLLM") class GroqLLM(BaseLLMProvider): def __init__(self): try: from openai import OpenAI except ImportError: logger.error("LỖI: Thư viện openai chưa được cài đặt.") raise if not settings.groq_api_key: raise ValueError("GROQ_API_KEY chưa được cấu hình trong .env!") # Groq hỗ trợ thư viện OpenAI SDK, chỉ cần đổi Base URL self.client = OpenAI( api_key=settings.groq_api_key, base_url="https://api.groq.com/openai/v1" ) self.model_name = settings.groq_model logger.info(f"Đã khởi tạo Groq Provider với model: {self.model_name}") def generate_response(self, prompt: str, context: str, history: List[Dict[str, str]] = None) -> str: system_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} """ messages = [{"role": "system", "content": system_prompt}] # Thêm lịch sử chat (nếu có) if history: for msg in history: messages.append({"role": msg.get("role", "user"), "content": msg.get("content", "")}) # Thêm câu hỏi hiện tại messages.append({"role": "user", "content": prompt}) try: response = self.client.chat.completions.create( model=self.model_name, messages=messages, temperature=0.2, # Giữ temperature thấp để AI không bịa chuyện max_tokens=1024 ) return response.choices[0].message.content except Exception as e: logger.error(f"Lỗi khi gọi Groq API: {e}") return f"Xin lỗi, tôi đang gặp sự cố khi xử lý câu trả lời qua Groq: {e}"