Compare commits

...

4 Commits

Author SHA1 Message Date
Cursor Agent
177ea25723 Merge main into feature/configurable-model-exclusions
- Resolved merge conflicts in .env.example and routstr/payment/models.py
- Kept configurable model exclusions approach from feature branch
- Added new excluded models (sonoma-dusk-alpha, sonoma-sky-alpha) to settings.py defaults
- Updated .env.example to include all excluded models
- Maintained compatibility with main branch changes including UI configuration
2025-11-22 01:31:47 +00:00
redshift
fe2b1846f7 Add EXCLUDED_MODEL_IDS configuration to .env.example
- Document the new EXCLUDED_MODEL_IDS environment variable
- Show example with default excluded model IDs
- Maintain existing configuration structure
2025-10-17 04:12:05 +00:00
redshift
80a7f5d2eb Replace hardcoded model exclusions with configurable setting
- Remove hardcoded model ID checks for openrouter/auto and google/gemini-2.5-pro-exp-03-25
- Use settings.excluded_model_ids list for model filtering
- Maintain backward compatibility with existing exclusion logic
- Add proper error handling for settings access
2025-10-17 04:11:46 +00:00
redshift
d693b559c0 Add configurable excluded model IDs setting
- Add excluded_model_ids field to Settings class
- Support comma-separated list via EXCLUDED_MODEL_IDS env var
- Include default exclusions for openrouter/auto and google/gemini-2.5-pro-exp-03-25
2025-10-17 04:10:25 +00:00
3 changed files with 29 additions and 12 deletions

View File

@@ -37,6 +37,7 @@ UPSTREAM_API_KEY=your-upstream-api-key
# BASE_URL=https://openrouter.ai/api/v1
# MODELS_PATH=models.json
# SOURCE=
# EXCLUDED_MODEL_IDS="openrouter/auto,google/gemini-2.5-pro-exp-03-25,opengvlab/internvl3-78b,openrouter/sonoma-dusk-alpha,openrouter/sonoma-sky-alpha"
# UI Configuration (for Next.js frontend)
# These variables are prefixed with NEXT_PUBLIC_ to be accessible in the browser

View File

@@ -16,7 +16,7 @@ class Settings(BaseSettings):
@classmethod
def parse_env_var(cls, field_name: str, raw_value: str) -> Any: # type: ignore[override]
if field_name in {"cashu_mints", "cors_origins", "relays"}:
if field_name in {"cashu_mints", "cors_origins", "relays", "excluded_model_ids"}:
v = str(raw_value).strip()
if v == "":
return []
@@ -55,6 +55,18 @@ class Settings(BaseSettings):
# Minimum per-request charge in millisatoshis when model pricing is free/zero
min_request_msat: int = Field(default=1, env="MIN_REQUEST_MSAT")
# Model filtering
excluded_model_ids: list[str] = Field(
default_factory=lambda: [
"openrouter/auto",
"google/gemini-2.5-pro-exp-03-25",
"opengvlab/internvl3-78b",
"openrouter/sonoma-dusk-alpha",
"openrouter/sonoma-sky-alpha"
],
env="EXCLUDED_MODEL_IDS"
)
# Network
cors_origins: list[str] = Field(default_factory=lambda: ["*"], env="CORS_ORIGINS")
tor_proxy_url: str = Field(default="socks5://127.0.0.1:9050", env="TOR_PROXY_URL")
@@ -305,4 +317,4 @@ class SettingsService:
for k, v in data.items():
setattr(settings, k, v)
cls._current = settings
return settings
return settings

View File

@@ -87,13 +87,15 @@ def fetch_openrouter_models(source_filter: str | None = None) -> list[dict]:
model["id"] = model_id[len(source_prefix) :]
model_id = model["id"]
# Check if model should be excluded based on configuration
try:
excluded_ids = getattr(settings, "excluded_model_ids", [])
except Exception:
excluded_ids = []
if (
"(free)" in model.get("name", "")
or model_id == "openrouter/auto"
or model_id == "google/gemini-2.5-pro-exp-03-25"
or model_id == "opengvlab/internvl3-78b"
or model_id == "openrouter/sonoma-dusk-alpha"
or model_id == "openrouter/sonoma-sky-alpha"
or model_id in excluded_ids
):
continue
@@ -128,13 +130,15 @@ async def async_fetch_openrouter_models(source_filter: str | None = None) -> lis
model["id"] = model_id[len(source_prefix) :]
model_id = model["id"]
# Check if model should be excluded based on configuration
try:
excluded_ids = getattr(settings, "excluded_model_ids", [])
except Exception:
excluded_ids = []
if (
"(free)" in model.get("name", "")
or model_id == "openrouter/auto"
or model_id == "google/gemini-2.5-pro-exp-03-25"
or model_id == "opengvlab/internvl3-78b"
or model_id == "openrouter/sonoma-dusk-alpha"
or model_id == "openrouter/sonoma-sky-alpha"
or model_id in excluded_ids
):
continue