Spaces:
Sleeping
Sleeping
adding finetune for testing
Browse files- app/config.py +100 -99
app/config.py
CHANGED
|
@@ -1,99 +1,100 @@
|
|
| 1 |
-
import os
|
| 2 |
-
from functools import lru_cache
|
| 3 |
-
from typing import Optional
|
| 4 |
-
|
| 5 |
-
from pydantic_settings import BaseSettings
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
os.environ["WEAVE_CAPTURE_CODE"] = "false"
|
| 9 |
-
if os.getenv("HUGGINGFACE_DEMO"):
|
| 10 |
-
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
|
| 11 |
-
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
|
| 12 |
-
REDIS_PASSWORD = ""
|
| 13 |
-
REDIS_USE_SSL = False
|
| 14 |
-
else:
|
| 15 |
-
from app.aws.secrets import get_secret
|
| 16 |
-
|
| 17 |
-
ENV = os.getenv("ENV", "LOCAL")
|
| 18 |
-
secrets = get_secret()
|
| 19 |
-
if ENV != "PROD":
|
| 20 |
-
os.environ["WANDB_API_KEY"] = secrets["WANDB_API_KEY"]
|
| 21 |
-
OPENAI_API_KEY = secrets["OPENAI_API_KEY"]
|
| 22 |
-
ANTHROPIC_API_KEY = secrets["ANTHROPIC_API_KEY"]
|
| 23 |
-
REDIS_PASSWORD = secrets["REDIS_PASSWORD"] if ENV == "PROD" else ""
|
| 24 |
-
REDIS_USE_SSL = True if ENV == "PROD" or ENV == "UAT" else False
|
| 25 |
-
os.environ["WANDB_BASE_URL"] = "https://api.wandb.ai"
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
class Settings(BaseSettings):
|
| 29 |
-
# Supported openai models
|
| 30 |
-
OPENAI_MODELS: list = [
|
| 31 |
-
"gpt-4o", # first model is the default of the vendor
|
| 32 |
-
"gpt-4o-2024-11-20",
|
| 33 |
-
"gpt-4o-mini",
|
| 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 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
settings
|
| 99 |
-
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
from functools import lru_cache
|
| 3 |
+
from typing import Optional
|
| 4 |
+
|
| 5 |
+
from pydantic_settings import BaseSettings
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
os.environ["WEAVE_CAPTURE_CODE"] = "false"
|
| 9 |
+
if os.getenv("HUGGINGFACE_DEMO"):
|
| 10 |
+
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
|
| 11 |
+
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
|
| 12 |
+
REDIS_PASSWORD = ""
|
| 13 |
+
REDIS_USE_SSL = False
|
| 14 |
+
else:
|
| 15 |
+
from app.aws.secrets import get_secret
|
| 16 |
+
|
| 17 |
+
ENV = os.getenv("ENV", "LOCAL")
|
| 18 |
+
secrets = get_secret()
|
| 19 |
+
if ENV != "PROD":
|
| 20 |
+
os.environ["WANDB_API_KEY"] = secrets["WANDB_API_KEY"]
|
| 21 |
+
OPENAI_API_KEY = secrets["OPENAI_API_KEY"]
|
| 22 |
+
ANTHROPIC_API_KEY = secrets["ANTHROPIC_API_KEY"]
|
| 23 |
+
REDIS_PASSWORD = secrets["REDIS_PASSWORD"] if ENV == "PROD" else ""
|
| 24 |
+
REDIS_USE_SSL = True if ENV == "PROD" or ENV == "UAT" else False
|
| 25 |
+
os.environ["WANDB_BASE_URL"] = "https://api.wandb.ai"
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
class Settings(BaseSettings):
|
| 29 |
+
# Supported openai models
|
| 30 |
+
OPENAI_MODELS: list = [
|
| 31 |
+
"gpt-4o", # first model is the default of the vendor
|
| 32 |
+
"gpt-4o-2024-11-20",
|
| 33 |
+
"gpt-4o-mini",
|
| 34 |
+
"ft:gpt-4o-2024-08-06:dreem:selfridges-dresses-test:BVYmIA6e",
|
| 35 |
+
]
|
| 36 |
+
|
| 37 |
+
# Supported anthropic models
|
| 38 |
+
ANTHROPIC_MODELS: list = [
|
| 39 |
+
"claude-3-5-sonnet-latest" # first model is the default of the vendor
|
| 40 |
+
]
|
| 41 |
+
|
| 42 |
+
# Supprted AI Services
|
| 43 |
+
SUPPORTED_MODELS: list = OPENAI_MODELS + ANTHROPIC_MODELS
|
| 44 |
+
|
| 45 |
+
# API Keys
|
| 46 |
+
OPENAI_API_KEY: str
|
| 47 |
+
ANTHROPIC_API_KEY: str
|
| 48 |
+
|
| 49 |
+
DEFAULT_MAX_ATTEMPTS: int = 1
|
| 50 |
+
|
| 51 |
+
# AI Service Configuration
|
| 52 |
+
DEFAULT_MODEL: str = OPENAI_MODELS[0]
|
| 53 |
+
MAX_TOKENS: int = 2000
|
| 54 |
+
TEMPERATURE: float = 0.0
|
| 55 |
+
|
| 56 |
+
# CORS Configuration
|
| 57 |
+
CORS_ALLOW_ORIGINS: bool = True
|
| 58 |
+
|
| 59 |
+
# API Configuration
|
| 60 |
+
API_V1_PREFIX: str = "/api/v1"
|
| 61 |
+
PROJECT_NAME: str = "Dreem Attribution"
|
| 62 |
+
DEBUG: bool = False
|
| 63 |
+
|
| 64 |
+
# Rate Limiting
|
| 65 |
+
RATE_LIMIT_CALLS: int = 100
|
| 66 |
+
RATE_LIMIT_PERIOD: int = 60
|
| 67 |
+
|
| 68 |
+
# Cache Configuration
|
| 69 |
+
REDIS_PASSWORD: Optional[str] = REDIS_PASSWORD
|
| 70 |
+
REDIS_USE_SSL: Optional[bool] = REDIS_USE_SSL
|
| 71 |
+
|
| 72 |
+
# Logging
|
| 73 |
+
LOG_LEVEL: str = "INFO"
|
| 74 |
+
LOG_FORMAT: str = "json"
|
| 75 |
+
|
| 76 |
+
# API Keys
|
| 77 |
+
OPENAI_API_KEY: str = OPENAI_API_KEY
|
| 78 |
+
ANTHROPIC_API_KEY: str = ANTHROPIC_API_KEY
|
| 79 |
+
|
| 80 |
+
#
|
| 81 |
+
MAX_DOWNLOAD_RETRY: int = 10 # times
|
| 82 |
+
|
| 83 |
+
def validate_api_keys(self):
|
| 84 |
+
"""Validate that required API keys are present."""
|
| 85 |
+
if not self.OPENAI_API_KEY:
|
| 86 |
+
raise ValueError("OPENAI_API_KEY is required")
|
| 87 |
+
if not self.ANTHROPIC_API_KEY:
|
| 88 |
+
raise ValueError("ANTHROPIC_API_KEY is required")
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
# Create a cached instance of settings
|
| 92 |
+
@lru_cache
|
| 93 |
+
def get_settings() -> Settings:
|
| 94 |
+
"""
|
| 95 |
+
Create and cache a Settings instance.
|
| 96 |
+
Returns the same instance for subsequent calls.
|
| 97 |
+
"""
|
| 98 |
+
settings = Settings()
|
| 99 |
+
settings.validate_api_keys()
|
| 100 |
+
return settings
|