Spaces:
Sleeping
Sleeping
File size: 3,088 Bytes
78e8dd4 |
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 |
"""
Configuration management for the RAG system
"""
import os
import json
from typing import Optional, Dict
from pathlib import Path
from dotenv import load_dotenv
# Load environment variables from .env file if it exists
load_dotenv()
class Config:
"""Centralized configuration management"""
def __init__(self):
self.base_dir = Path(__file__).parent.parent
self.car_manual_dir = self.base_dir / "car_manual"
self.output_dir = self.base_dir / "output"
self.user_data_dir = self.base_dir / "user_data"
self.config_file = self.base_dir / "config" / "vector_store_config.json"
# Create necessary directories
self.car_manual_dir.mkdir(exist_ok=True)
self.output_dir.mkdir(exist_ok=True)
self.user_data_dir.mkdir(exist_ok=True)
# OpenAI settings
self.openai_api_key = os.getenv("OPENAI_API_KEY")
if not self.openai_api_key:
# Provide helpful error message
env_file = self.base_dir / ".env"
raise ValueError(
f"OPENAI_API_KEY not found!\n\n"
f"Please set your OpenAI API key using one of these methods:\n"
f"1. Create a .env file in the project root with: OPENAI_API_KEY=your-key-here\n"
f"2. Set environment variable: export OPENAI_API_KEY=your-key-here (Linux/Mac) or "
f"$env:OPENAI_API_KEY='your-key-here' (Windows PowerShell)\n"
f"3. Set environment variable: set OPENAI_API_KEY=your-key-here (Windows CMD)\n\n"
f"You can copy .env.example to .env and add your key there."
)
self.model = "gpt-4o-mini"
self.vector_store_name = "mercedes_manual_store"
# Available topics
self.available_topics = [
"Function of Active Distance Assist DISTRONIC",
"Function of Active Lane Change Assist",
"Function of Active Steering Assist",
"Function of Active Stop-and-Go Assist"
]
def get_vector_store_id(self) -> Optional[str]:
"""Load vector store ID from config file"""
if self.config_file.exists():
try:
with open(self.config_file, 'r') as f:
config = json.load(f)
return config.get('id')
except Exception as e:
print(f"Error loading vector store config: {e}")
return None
def save_vector_store_id(self, vector_store_id: str, name: str = None):
"""Save vector store ID to config file"""
config = {
'id': vector_store_id,
'name': name or self.vector_store_name,
'created_at': str(Path(self.config_file).stat().st_mtime)
}
with open(self.config_file, 'w') as f:
json.dump(config, f, indent=2)
def get_pdf_files(self) -> list:
"""Get list of PDF files in car_manual directory"""
pdf_files = list(self.car_manual_dir.glob("*.pdf"))
return [str(f) for f in pdf_files]
|