SLA-RedM/api/config.py

97 lines
2.3 KiB
Python

"""
Configuration module for Red Mountain Dev Assistant API
"""
import os
from typing import Dict, Any
# API Keys from environment variables
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY", "")
AZURE_OPENAI_API_KEY = os.getenv("AZURE_OPENAI_API_KEY", "")
AZURE_OPENAI_ENDPOINT = os.getenv("AZURE_OPENAI_ENDPOINT", "")
# Default model configuration
DEFAULT_MODEL_PROVIDER = os.getenv("MODEL_PROVIDER", "openai")
DEFAULT_MODEL_NAME = os.getenv("MODEL_NAME", "gpt-4")
# Embedder configuration
DEFAULT_EMBEDDER_TYPE = os.getenv("EMBEDDER_TYPE", "openai")
# RAG configuration
RAG_CONFIG: Dict[str, Any] = {
"retriever": {
"top_k": 5,
"similarity_threshold": 0.7
},
"text_splitter": {
"split_by": "word",
"chunk_size": 500,
"chunk_overlap": 100
}
}
# Repository filters (similar to DeepWiki)
DEFAULT_EXCLUDED_DIRS = [
"node_modules",
".git",
"__pycache__",
".venv",
"venv",
"dist",
"build",
".next",
"target"
]
DEFAULT_EXCLUDED_FILES = [
".pyc",
".pyo",
".pyd",
".so",
".dll",
".dylib",
".exe",
"package-lock.json",
"yarn.lock"
]
# Server configuration
API_HOST = os.getenv("API_HOST", "0.0.0.0")
API_PORT = int(os.getenv("API_PORT", "8001"))
# Red Mountain platform specific configuration
REDMOUNTAIN_API_BASE = os.getenv("REDMOUNTAIN_API_BASE", "")
REDMOUNTAIN_API_KEY = os.getenv("REDMOUNTAIN_API_KEY", "")
def get_config() -> Dict[str, Any]:
"""Get complete configuration"""
return {
"api_keys": {
"openai": OPENAI_API_KEY,
"google": GOOGLE_API_KEY,
"azure": AZURE_OPENAI_API_KEY,
},
"models": {
"provider": DEFAULT_MODEL_PROVIDER,
"name": DEFAULT_MODEL_NAME,
},
"embedder": {
"type": DEFAULT_EMBEDDER_TYPE,
},
"rag": RAG_CONFIG,
"filters": {
"excluded_dirs": DEFAULT_EXCLUDED_DIRS,
"excluded_files": DEFAULT_EXCLUDED_FILES,
},
"server": {
"host": API_HOST,
"port": API_PORT,
},
"redmountain": {
"api_base": REDMOUNTAIN_API_BASE,
"api_key": REDMOUNTAIN_API_KEY,
}
}