feat(ai): add OpenRouter provider order and fallback controls

This commit is contained in:
dwindown
2026-04-30 15:29:54 +07:00
parent 12d2d9458f
commit 4600cfe493
2 changed files with 25 additions and 1 deletions

View File

@@ -69,6 +69,14 @@ class Settings(BaseSettings):
description="Premium Llama model identifier",
)
OPENROUTER_TIMEOUT: int = Field(default=30, description="OpenRouter API timeout in seconds")
OPENROUTER_PROVIDER_ORDER: List[str] = Field(
default=["NovitaAI", "AkashML", "Inception"],
description="Preferred OpenRouter providers in priority order",
)
OPENROUTER_ALLOW_PROVIDER_FALLBACKS: bool = Field(
default=True,
description="Allow OpenRouter to fallback outside preferred providers",
)
# WordPress Integration
WORDPRESS_API_URL: str = Field(
@@ -103,6 +111,14 @@ class Settings(BaseSettings):
return [origin.strip() for origin in v.split(",") if origin.strip()]
return v
@field_validator("OPENROUTER_PROVIDER_ORDER", mode="before")
@classmethod
def parse_provider_order(cls, v: Union[str, List[str]]) -> List[str]:
"""Parse comma-separated OpenRouter provider list into array."""
if isinstance(v, str):
return [provider.strip() for provider in v.split(",") if provider.strip()]
return v
# Global settings instance
_settings: Union[Settings, None] = None