Files
poc_system/chat/llm_providers/groq_llm.py

55 lines
2.2 KiB
Python

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}"