Spaces:
Sleeping
Sleeping
# RAG Configuration File | |
# Update these settings as needed | |
import os | |
from dotenv import load_dotenv | |
# Load environment variables from .env file | |
load_dotenv() | |
# Common LLM Settings | |
MAX_TOKENS = 1200 | |
TEMPERATURE = 0.4 | |
# OCR Settings | |
OCR_SPACE_API_KEY = os.getenv("OCR_SPACE_API_KEY", "") | |
# OpenAI Settings | |
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") | |
OPENAI_MODEL = "gpt-3.5-turbo" | |
# Gemini Settings | |
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "") | |
GEMINI_MODEL = "gemini-1.5-flash" | |
# Groq Settings | |
GROQ_API_KEY = os.getenv("GROQ_API_KEY") | |
GROQ_MODEL = os.getenv("GROQ_MODEL", "llama3-70b-8192") | |
GROQ_API_KEY_LITE = os.getenv("GROQ_API_KEY_LITE") | |
GROQ_MODEL_LITE = "llama3-8b-8192" | |
# API Authentication | |
BEARER_TOKEN = os.getenv("BEARER_TOKEN", "c6cee5b5046310e401632a7effe9c684d071a9ef5ce09b96c9ec5c3ebd13085e") | |
# Chunking (TOKEN-BASED) | |
CHUNK_SIZE = 1600 # | |
CHUNK_OVERLAP = 200 | |
# Retrieval Settings | |
TOP_K = 12 | |
SCORE_THRESHOLD = 0.3 | |
RERANK_TOP_K = 9 | |
BM25_WEIGHT = 0.3 | |
SEMANTIC_WEIGHT = 0.7 | |
# Advanced RAG Settings | |
ENABLE_RERANKING = True | |
ENABLE_HYBRID_SEARCH = True | |
ENABLE_QUERY_EXPANSION = True | |
RERANKER_MODEL = "cross-encoder/ms-marco-MiniLM-L-6-v2" | |
QUERY_EXPANSION_COUNT = 3 | |
MAX_CONTEXT_LENGTH = 15000 | |
USE_TOTAL_BUDGET_APPROACH = True | |
# Embedding Settings | |
EMBEDDING_MODEL = "BAAI/bge-large-en" | |
BATCH_SIZE = 16 | |
# Paths | |
OUTPUT_DIR = os.getenv("RAG_EMBEDDINGS_PATH", "./RAG/rag_embeddings") | |
# API Settings | |
API_HOST = "0.0.0.0" | |
API_PORT = 8000 | |
API_RELOAD = True | |
# Multi-LLM failover system | |
sequence = ["primary", "secondary", "ternary", "quaternary", "quinary", "senary", "septenary", "octonary", "nonary", "denary"] | |
def get_provider_configs(): | |
""" | |
Get configurations for all provider instances with failover support. | |
Supports multiple instances of each provider type for reliability. | |
""" | |
configs = { | |
"groq": [], | |
"gemini": [], | |
"openai": [] | |
} | |
# Groq configurations with multiple API keys for failover | |
DEFAULT_GROQ_MODEL = "qwen/qwen3-32b" | |
configs["groq"] = [{ | |
"name": sequence[i-1], | |
"api_key": os.getenv(f"GROQ_API_KEY_{i}"), | |
"model": os.getenv(f"GROQ_MODEL_{i}", DEFAULT_GROQ_MODEL)} for i in range(1, 10) if os.getenv(f"GROQ_API_KEY_{i}", "") | |
] | |
# Add main GROQ key as primary | |
if os.getenv("GROQ_API_KEY"): | |
configs["groq"].insert(0, { | |
"name": "main", | |
"api_key": os.getenv("GROQ_API_KEY"), | |
"model": DEFAULT_GROQ_MODEL | |
}) | |
# Gemini configurations with multiple API keys for failover | |
DEFAULT_GEMINI_MODEL = "gemini-1.5-flash" | |
configs["gemini"] = [{ | |
"name": sequence[i-1], | |
"api_key": os.getenv(f"GEMINI_API_KEY_{i}"), | |
"model": os.getenv(f"GEMINI_MODEL_{i}", DEFAULT_GEMINI_MODEL) | |
} for i in range(1, 10) if os.getenv(f"GEMINI_API_KEY_{i}", "") | |
] | |
# Add main GEMINI key as primary | |
if os.getenv("GEMINI_API_KEY"): | |
configs["gemini"].insert(0, { | |
"name": "main", | |
"api_key": os.getenv("GEMINI_API_KEY"), | |
"model": DEFAULT_GEMINI_MODEL | |
}) | |
# OpenAI configurations with multiple API keys for failover | |
DEFAULT_OPENAI_MODEL = "gpt-4o-mini" | |
configs["openai"] = [{ | |
"name": sequence[i-1], | |
"api_key": os.getenv(f"OPENAI_API_KEY_{i}"), | |
"model": os.getenv(f"OPENAI_MODEL_{i}", DEFAULT_OPENAI_MODEL) | |
} for i in range(1, 10) if os.getenv(f"OPENAI_API_KEY_{i}", "") | |
] | |
# Add main OPENAI key as primary | |
if os.getenv("OPENAI_API_KEY"): | |
configs["openai"].insert(0, { | |
"name": "main", | |
"api_key": os.getenv("OPENAI_API_KEY"), | |
"model": DEFAULT_OPENAI_MODEL | |
}) | |
return configs | |
# Specialized API keys for different tasks | |
GROQ_API_KEY_TABULAR = os.getenv("GROQ_API_KEY_TABULAR", GROQ_API_KEY) | |
GEMINI_API_KEY_IMAGE = os.getenv("GEMINI_API_KEY_IMAGE", GEMINI_API_KEY) | |
GEMINI_API_KEY_MULTILINGUAL = os.getenv("GEMINI_API_KEY_MULTILINGUAL", GEMINI_API_KEY) | |
# Validation (optional - comment out for production) | |
# assert OPENAI_API_KEY, "OPENAI KEY NOT SET" | |
# assert GEMINI_API_KEY, "GEMINI KEY NOT SET" | |
# assert GROQ_API_KEY, "GROQ KEY NOT SET" | |