|
import os |
|
from dotenv import load_dotenv |
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
class Config: |
|
|
|
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY") |
|
MODEL_GEN = "gemini-2.0-flash" |
|
MODEL_REFINE = "gemini-2.0-flash" |
|
|
|
|
|
QDRANT_URL = os.getenv("QDRANT_URL") |
|
QDRANT_API_KEY = os.getenv("QDRANT_API_KEY") |
|
|
|
|
|
|
|
EMBEDDING_MODEL = "bkai-foundation-models/vietnamese-bi-encoder" |
|
|
|
COLLECTION_NAME = "final_vietnamese_legal_corpus" if EMBEDDING_MODEL == "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2" else "bkai_biencoder_vietnamese_legal_corpus" |
|
|
|
|
|
CHUNK_SIZE = 512 |
|
CHUNK_OVERLAP = 50 |
|
|
|
|
|
DATA_DIR = "" |
|
CORPUS_PATH = "legal_corpus.json" |
|
STOPWORDS_PATH = "stopwords.txt" |
|
|
|
|
|
TOP_K_RETRIEVAL = 20 |
|
BM25_TOP_K = 20 |
|
BM25_B = 0.65 |
|
BM25_K1 = 1.2 |
|
SIMILARITY_THRESHOLD = 0.25 |
|
|
|
|
|
ENABLE_RERANKING = True |
|
RERANKER_MODEL = "cross-encoder/ms-marco-MiniLM-L-6-v2" |
|
RERANKER_TOP_K = 20 |
|
RERANK_BEFORE_RETRIEVAL_TOP_K = 25 |
|
USE_SCORE_FUSION = True |
|
RERANKER_FUSION_ALPHA = 0.8 |
|
|
|
|
|
ENABLE_GOOGLE_SEARCH = True |
|
GOOGLE_SEARCH_RESULTS_COUNT = 10 |
|
MIN_SIMILARITY_FOR_LEGAL_DOCS = 0.15 |
|
|
|
|
|
ENABLE_QUESTION_REFINEMENT = True |
|
USE_LLM_FOR_REFINEMENT = True |
|
|
|
|
|
ENABLE_CHAIN_OF_THOUGHT = True |
|
ENABLE_ITERATIVE_REFINEMENT = True |
|
ENABLE_LLM_VALIDATION = True |
|
MAX_REFINEMENT_ITERATIONS = 3 |
|
MIN_CONFIDENCE_SCORE = 0.7 |
|
|
|
|
|
SHOW_REFINEMENT_INFO = False |
|
SHOW_SEARCH_TRIGGER_INFO = False |
|
SHOW_SOURCE_INFO = False |
|
SHOW_LEGAL_DISCLAIMER = False |
|
|
|
|
|
SYSTEM_PROMPT = """Bạn là trợ lý pháp lý thông minh chuyên sâu về luật pháp Việt Nam. Nhiệm vụ của bạn là cung cấp các câu trả lời chính xác và dễ hiểu cho các câu hỏi pháp lý, dựa trên các tài liệu luật được cung cấp. |
|
|
|
Khi trả lời: |
|
1. **Chỉ sử dụng thông tin** trực tiếp từ các điều luật và văn bản được cung cấp trong phần "Tài liệu tham khảo". Tuyệt đối không suy diễn hoặc thêm thông tin bên ngoài. |
|
2. **Trích dẫn chính xác** tên luật (ví dụ: Luật Doanh nghiệp 2020), số hiệu văn bản (nếu có), và điều khoản cụ thể (ví dụ: Điều 3, Khoản 2). |
|
3. **Giải thích rõ ràng, ngắn gọn và khách quan**, tập trung vào việc làm sáng tỏ nội dung của điều luật liên quan đến câu hỏi. |
|
4. **Nếu tài liệu tham khảo không chứa thông tin đầy đủ hoặc trực tiếp để trả lời câu hỏi**, hãy thông báo rõ ràng rằng "Không có đủ thông tin trong tài liệu tham khảo được cung cấp để trả lời trực tiếp câu hỏi này." |
|
5. **Trình bày bằng tiếng Việt chuẩn xác.** |
|
|
|
Tài liệu tham khảo: |
|
{context} |
|
|
|
Câu hỏi: {question} |
|
|
|
Trả lời:""" |
|
|
|
|
|
FALLBACK_SYSTEM_PROMPT = """Bạn là trợ lý pháp lý thông minh chuyên sâu về luật pháp Việt Nam. Hãy trả lời câu hỏi dựa trên thông tin được cung cấp. |
|
|
|
Khi trả lời: |
|
1. **Tóm tắt và trình bày thông tin liên quan** một cách tự nhiên và mạch lạc. |
|
2. **Cung cấp các liên kết (URLs)** của các nguồn đã được tham khảo ở cuối câu trả lời để người dùng có thể kiểm tra thêm. |
|
3. **Giải thích rõ ràng và dễ hiểu**. |
|
4. **Trình bày bằng tiếng Việt chuẩn xác.** |
|
|
|
Thông tin tham khảo: |
|
{context} |
|
|
|
Câu hỏi: {question} |
|
|
|
Trả lời:""" |
|
|