Phase 7: Hoàn thiện Modular RAG Backend với FastAPI và Đa LLM Provider

This commit is contained in:
2026-05-08 07:30:30 +00:00
commit 26d1298cf6
51 changed files with 5360 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
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}"