Download backend/config/settings.py from jessejohnson/plg4-dev-server: direct link, hf CLI and curl.
- Browser
- Download file 7.98 kB
-
https://huggingface.co/spaces/jessejohnson/plg4-dev-server/resolve/main/backend/config/settings.py
- Command line
-
hf download hf://spaces/jessejohnson/plg4-dev-server/backend/config/settings.py
-
curl -L -o settings.py https://huggingface.co/spaces/jessejohnson/plg4-dev-server/resolve/main/backend/config/settings.py
7.98 kB
| # Configuration settings for the Recipe Recommendation Bot | |
| import os | |
| from typing import Optional, List | |
| from dotenv import load_dotenv | |
| # Load environment variables from .env file | |
| load_dotenv() | |
| class Settings: | |
| """Simple settings class that reads environment variables directly""" | |
| def __init__(self): | |
| # =========================================== | |
| # Server Configuration | |
| # =========================================== | |
| self.PORT = int(os.getenv("PORT", 8000)) | |
| self.HOST = os.getenv("HOST", "0.0.0.0") | |
| self.ENVIRONMENT = os.getenv("ENVIRONMENT", "development") | |
| self.DEBUG = os.getenv("DEBUG", "true").lower() == "true" | |
| # =========================================== | |
| # CORS Configuration | |
| # =========================================== | |
| cors_origins = os.getenv("CORS_ORIGINS", '["http://localhost:3000","http://localhost:5173","http://localhost:8080"]') | |
| self.CORS_ORIGINS = self._parse_list(cors_origins) | |
| self.CORS_ALLOW_CREDENTIALS = os.getenv("CORS_ALLOW_CREDENTIALS", "true").lower() == "true" | |
| cors_methods = os.getenv("CORS_ALLOW_METHODS", '["GET","POST","PUT","DELETE","OPTIONS"]') | |
| self.CORS_ALLOW_METHODS = self._parse_list(cors_methods) | |
| cors_headers = os.getenv("CORS_ALLOW_HEADERS", '["*"]') | |
| self.CORS_ALLOW_HEADERS = self._parse_list(cors_headers) | |
| # =========================================== | |
| # LLM & Embedding Provider Configuration | |
| # =========================================== | |
| self.LLM_PROVIDER = os.getenv("LLM_PROVIDER", "google") | |
| self.EMBEDDING_PROVIDER = os.getenv("EMBEDDING_PROVIDER", self.LLM_PROVIDER) # Default to same as LLM | |
| # OpenAI Configuration | |
| self.OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") | |
| self.OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-5-nano") | |
| self.OPENAI_TEMPERATURE = float(os.getenv("OPENAI_TEMPERATURE", "0.7")) | |
| self.OPENAI_MAX_TOKENS = int(os.getenv("OPENAI_MAX_TOKENS", "1000")) | |
| # Google AI Configuration | |
| self.GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY") | |
| self.GOOGLE_MODEL = os.getenv("GOOGLE_MODEL", "gemini-2.5-flash") | |
| self.GOOGLE_TEMPERATURE = float(os.getenv("GOOGLE_TEMPERATURE", "0.7")) | |
| self.GOOGLE_MAX_TOKENS = int(os.getenv("GOOGLE_MAX_TOKENS", "1000")) | |
| # Hugging Face Configuration | |
| self.HUGGINGFACE_API_TOKEN = os.getenv("HUGGINGFACE_API_TOKEN") | |
| self.HUGGINGFACE_MODEL = os.getenv("HUGGINGFACE_MODEL", "microsoft/DialoGPT-medium") | |
| self.HUGGINGFACE_API_URL = os.getenv("HUGGINGFACE_API_URL", "https://api-inference.huggingface.co/models/") | |
| self.HUGGINGFACE_USE_GPU = os.getenv("HUGGINGFACE_USE_GPU", "false").lower() == "true" | |
| self.HUGGINGFACE_USE_API = os.getenv("HUGGINGFACE_USE_API", "false").lower() == "true" | |
| # Ollama Configuration | |
| self.OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434") | |
| self.OLLAMA_MODEL = os.getenv("OLLAMA_MODEL", "llama3.1:8b") | |
| self.OLLAMA_TEMPERATURE = float(os.getenv("OLLAMA_TEMPERATURE", "0.7")) | |
| # =========================================== | |
| # Embedding Model Configuration | |
| # =========================================== | |
| # Note: Embedding provider is determined by LLM_PROVIDER setting above | |
| # OpenAI Embeddings | |
| self.OPENAI_EMBEDDING_MODEL = os.getenv("OPENAI_EMBEDDING_MODEL", "text-embedding-ada-002") | |
| # Google Embeddings | |
| self.GOOGLE_EMBEDDING_MODEL = os.getenv("GOOGLE_EMBEDDING_MODEL", "models/embedding-001") | |
| # Hugging Face Embeddings | |
| self.HUGGINGFACE_EMBEDDING_MODEL = os.getenv("HUGGINGFACE_EMBEDDING_MODEL", "sentence-transformers/all-MiniLM-L6-v2") | |
| # Ollama Embeddings | |
| self.OLLAMA_EMBEDDING_MODEL = os.getenv("OLLAMA_EMBEDDING_MODEL", "nomic-embed-text") | |
| # =========================================== | |
| # Logging Configuration | |
| # =========================================== | |
| self.LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") | |
| self.LOG_FORMAT = os.getenv("LOG_FORMAT", "%(asctime)s - %(name)s - %(levelname)s - %(message)s") | |
| self.LOG_FILE = os.getenv("LOG_FILE", "./logs/app.log") | |
| # =========================================== | |
| # Langchain Debugging Configuration | |
| # =========================================== | |
| # Note: set to "true" to enable detailed Langchain logs | |
| self.LANGCHAIN_DEBUG = os.getenv("LANGCHAIN_DEBUG", "false").lower() == "true" | |
| def _parse_list(self, value: str) -> List[str]: | |
| """Parse a string representation of a list into an actual list""" | |
| try: | |
| # Remove brackets and quotes, split by comma | |
| if value.startswith('[') and value.endswith(']'): | |
| value = value[1:-1] | |
| items = [item.strip().strip('"').strip("'") for item in value.split(',')] | |
| return [item for item in items if item] # Remove empty items | |
| except: | |
| return ["*"] # Fallback to allow all | |
| def get_llm_config(self): | |
| """Get LLM configuration based on selected provider""" | |
| if self.LLM_PROVIDER == "openai": | |
| return { | |
| "provider": "openai", | |
| "api_key": self.OPENAI_API_KEY, | |
| "model": self.OPENAI_MODEL, | |
| "temperature": self.OPENAI_TEMPERATURE, | |
| "max_tokens": self.OPENAI_MAX_TOKENS | |
| } | |
| elif self.LLM_PROVIDER == "google": | |
| return { | |
| "provider": "google", | |
| "api_key": self.GOOGLE_API_KEY, | |
| "model": self.GOOGLE_MODEL, | |
| "temperature": self.GOOGLE_TEMPERATURE, | |
| "max_tokens": self.GOOGLE_MAX_TOKENS | |
| } | |
| elif self.LLM_PROVIDER == "huggingface": | |
| return { | |
| "provider": "huggingface", | |
| "api_token": self.HUGGINGFACE_API_TOKEN, | |
| "model": self.HUGGINGFACE_MODEL, | |
| "api_url": self.HUGGINGFACE_API_URL, | |
| "use_gpu": self.HUGGINGFACE_USE_GPU, | |
| "use_api": self.HUGGINGFACE_USE_API | |
| } | |
| elif self.LLM_PROVIDER == "ollama": | |
| return { | |
| "provider": "ollama", | |
| "base_url": self.OLLAMA_BASE_URL, | |
| "model": self.OLLAMA_MODEL, | |
| "temperature": self.OLLAMA_TEMPERATURE | |
| } | |
| else: | |
| raise ValueError(f"Unsupported LLM provider: {self.LLM_PROVIDER}") | |
| def get_embedding_config(self): | |
| """Get embedding configuration based on EMBEDDING_PROVIDER setting""" | |
| provider = self.EMBEDDING_PROVIDER | |
| if provider == "openai": | |
| return { | |
| "provider": "openai", | |
| "api_key": self.OPENAI_API_KEY, | |
| "model": self.OPENAI_EMBEDDING_MODEL | |
| } | |
| elif provider == "google": | |
| return { | |
| "provider": "google", | |
| "api_key": self.GOOGLE_API_KEY, | |
| "model": self.GOOGLE_EMBEDDING_MODEL | |
| } | |
| elif provider == "huggingface": | |
| return { | |
| "provider": "huggingface", | |
| "model": self.HUGGINGFACE_EMBEDDING_MODEL | |
| } | |
| elif provider == "ollama": | |
| return { | |
| "provider": "ollama", | |
| "base_url": self.OLLAMA_BASE_URL, | |
| "model": self.OLLAMA_EMBEDDING_MODEL | |
| } | |
| else: | |
| raise ValueError(f"Unsupported provider: {provider}. Supported providers: openai, google, huggingface, ollama") | |
| # Create global settings instance | |
| settings = Settings() | |
| # Note: Vector store and database configuration is in database.py | |
| # from config.database import db_settings | |