import os import json from log import log class ServiceConfig: def __init__(self, config_path="service_config.json"): self.config_path = config_path self.work_mode = None self.cloud_token = None self.system_prompt = None self.llm_inference_service_url = None self.projects = {} self.apis = {} def load(self): try: log(f"📥 Loading service config from {self.config_path}...") with open(self.config_path, "r", encoding="utf-8") as f: config_data = json.load(f) general = config_data.get("config", {}) self.work_mode = general.get("work_mode") self.cloud_token = general.get("cloud_token") self.system_prompt = general.get("system_prompt") self.llm_inference_service_url = general.get("llm_inference_service_url") self.apis = config_data.get("apis", {}) projects_data = config_data.get("projects", {}) for project_name, project_info in projects_data.items(): project = { "project_name": project_info.get("project_name"), "project_version": project_info.get("project_version"), "llm": project_info.get("llm", {}), "intents": project_info.get("intents", []) } self.projects[project_name] = project log("✅ Service config loaded successfully.") except Exception as e: log(f"❌ Error loading service config: {e}") raise def get_project(self, project_name): return self.projects.get(project_name) def get_project_llm_config(self, project_name): project = self.get_project(project_name) return project.get("llm") if project else None def get_project_intents(self, project_name): project = self.get_project(project_name) return project.get("intents") if project else [] def get_api_config(self, api_name): return self.apis.get(api_name) def get_auth_token(self): if self.work_mode == "hfcloud": return os.getenv("HF_TOKEN") elif self.work_mode == "cloud": return self.cloud_token else: return None