Spaces:
Sleeping
Sleeping
File size: 2,710 Bytes
afa78c4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
"""
Configuration file for the Law RAG Chatbot application
"""
import os
from typing import Optional
from pathlib import Path
from dotenv import load_dotenv
load_dotenv()
# Load environment variables from .env file if it exists
def load_dotenv():
"""Load environment variables from .env file"""
env_file = Path('.env')
if env_file.exists():
with open(env_file, 'r') as f:
for line in f:
line = line.strip()
if line and not line.startswith('#') and '=' in line:
key, value = line.split('=', 1)
os.environ[key] = value
# Load .env file
load_dotenv()
# Hugging Face Configuration
HF_TOKEN = os.getenv('HF_TOKEN')
HF_DATASET_NAME = "ymoslem/Law-StackExchange"
# Groq Configuration
GROQ_API_KEY = os.getenv('GROQ_API_KEY')
GROQ_MODEL = "llama3-8b-8192" # or "mixtral-8x7b-32768"
# Embedding Configuration
EMBEDDING_MODEL = "sentence-transformers/all-MiniLM-L6-v2"
EMBEDDING_DIMENSION = 384
# ChromaDB Configuration
CHROMA_PERSIST_DIR = "./chroma_db"
CHROMA_COLLECTION_NAME = "law_stackexchange"
# FastAPI Configuration
API_TITLE = "Law RAG Chatbot API"
API_VERSION = "1.0.0"
API_DESCRIPTION = "RAG-based legal assistance chatbot using Law-StackExchange data"
HOST = "0.0.0.0"
PORT = 8000
# RAG Configuration
CHUNK_SIZE = 1000
CHUNK_OVERLAP = 200
TOP_K_RETRIEVAL = 8 # Increased from 5
MAX_TOKENS = 4096
TEMPERATURE = 0.1
DEFAULT_CONTEXT_LENGTH = 5 # New default context length
# Token Management Configuration
MAX_CONTEXT_TOKENS = 4000 # Maximum tokens for context (reserve space for prompt)
MAX_PROMPT_TOKENS = 6000 # Maximum total prompt tokens (Groq limit)
MAX_SOURCES = 5 # Maximum number of sources to include
MAX_SEARCH_VARIATIONS = 2 # Maximum search variations to try
MAX_LEGAL_CONCEPTS = 2 # Maximum legal concepts to extract
# Dataset Configuration
DATASET_SPLIT = "train"
CACHE_DIR = ".cache"
# Error Messages
ERROR_MESSAGES = {
"no_hf_token": "Hugging Face token not found. Set HF_TOKEN environment variable.",
"no_groq_key": "Groq API key not found. Set GROQ_API_KEY environment variable.",
"auth_failed": "Authentication failed: {}",
"dataset_load_failed": "Failed to load dataset: {}",
"embedding_failed": "Failed to create embeddings: {}",
"vector_db_failed": "Failed to setup vector database: {}",
"llm_failed": "Failed to initialize LLM: {}"
}
# API Response Models
class ChatRequest:
question: str
context_length: Optional[int] = 3
class ChatResponse:
answer: str
sources: list
confidence: float
processing_time: float |