fix(openrouter): simplify parameter extraction and resolve basedpyright diagnostics

This commit is contained in:
yyouretoast 2026-10-16 18:39:33 +03:00
parent 4a1d158ccf
commit 5ce51cf5f0
4 changed files with 22 additions and 55 deletions

View file

@ -2240,7 +2240,7 @@ def _map_openrouter_exception(
message=f"OpenRouterRegionNotSupportedError: {exception_provider} - {error_str}",
model=model,
llm_provider=custom_llm_provider,
response=response_obj if isinstance(response_obj, httpx.Response) else None,
response=getattr(original_exception, "response", None),
litellm_debug_info=extra_information,
region=inferred_region,
)

View file

@ -61,25 +61,15 @@ class OpenrouterConfig(OpenAIGPTConfig):
api_base: str | None,
api_key: str | None,
model: str,
optional_params: dict, # mutable-ok: overrides OpenAIGPTConfig.get_complete_url signature
litellm_params: dict, # mutable-ok: overrides OpenAIGPTConfig.get_complete_url signature
optional_params: dict, # pyright: ignore[reportMissingTypeArgument,reportUnknownParameterType] # mutable-ok: overrides OpenAIGPTConfig.get_complete_url signature
litellm_params: dict, # pyright: ignore[reportMissingTypeArgument,reportUnknownParameterType] # mutable-ok: overrides OpenAIGPTConfig.get_complete_url signature
stream: bool | None = None,
) -> str:
casted_optional_params: Final[Mapping[str, object]] = (
cast( # cast-ok: type discipline for untyped optional_params
Mapping[str, object], optional_params
)
)
casted_litellm_params: Final[Mapping[str, object]] = (
cast( # cast-ok: type discipline for untyped litellm_params
Mapping[str, object], litellm_params
)
)
resolved_base: Final = resolve_openrouter_api_base(
api_base=api_base,
region=self.region,
litellm_params=casted_litellm_params,
optional_params=casted_optional_params,
litellm_params=litellm_params,
optional_params=optional_params,
).rstrip("/")
endpoint: Final = "chat/completions"
if endpoint in resolved_base:

View file

@ -39,11 +39,11 @@ _OPENROUTER_REGIONAL_HOSTNAMES: Final[Mapping[str, str]] = MappingProxyType(
_DEFAULT_OPENROUTER_API_BASE: Final[str] = "https://openrouter.ai/api/v1"
def _extract_region_value(params: Mapping[str, object] | None) -> str | None:
if params is None or not isinstance(params, Mapping):
def _extract_region_value(params: object) -> str | None:
if not isinstance(params, Mapping):
return None
for key in ("region", "region_name", "data_residency"):
val: Final[object] = params.get(key)
val: object = params.get(key)
if isinstance(val, str) and val.strip():
return val.strip()
return None
@ -51,9 +51,9 @@ def _extract_region_value(params: Mapping[str, object] | None) -> str | None:
def resolve_openrouter_api_base(
api_base: str | None = None,
region: str | None = None,
litellm_params: Mapping[str, object] | None = None,
optional_params: Mapping[str, object] | None = None,
region: object = None,
litellm_params: object = None,
optional_params: object = None,
) -> str:
"""
Resolve the OpenRouter API base URL based on custom api_base, explicit region, or environment.
@ -85,7 +85,8 @@ def resolve_openrouter_api_base(
else (litellm_data_residency if isinstance(litellm_data_residency, str) else None)
)
resolved_region: Final[str | None] = region_from_params or region_from_optional or region or attr_region
explicit_region: Final[str | None] = region.strip() if isinstance(region, str) and region.strip() else None
resolved_region: Final[str | None] = region_from_params or region_from_optional or explicit_region or attr_region
if resolved_region is not None:
normalized_region: Final[str] = resolved_region.strip().lower()

View file

@ -3413,29 +3413,18 @@ def _complete_openrouter(ctx: CompletionDispatchContext) -> _CompletionDispatchR
stream: Final = ctx.stream
timeout: Final = ctx.timeout
## Load Config
config: Final = litellm.OpenrouterConfig.get_config()
casted_optional_params: Final[Mapping[str, object]] = cast( # cast-ok: type discipline for untyped optional_params
Mapping[str, object], optional_params
)
raw_region: Final[object] = (
litellm_params.get("region")
or litellm_params.get("region_name")
or litellm_params.get("data_residency")
or casted_optional_params.get("region")
or casted_optional_params.get("region_name")
or casted_optional_params.get("data_residency")
or getattr(ctx.provider_config, "region", None)
or getattr(litellm.OpenrouterConfig, "region", None)
)
resolved_region: Final[str | None] = raw_region if isinstance(raw_region, str) else None
api_base = resolve_openrouter_api_base( # rebind-ok: regional endpoint resolution for openrouter
api_base=api_base,
region=resolved_region,
region=getattr(ctx.provider_config, "region", None) or getattr(litellm.OpenrouterConfig, "region", None),
litellm_params=litellm_params,
optional_params=optional_params,
)
litellm_params["api_base"] = api_base
litellm_params["data_residency"] = infer_openrouter_data_residency("openrouter", api_base)
## Load Config
config: Final = litellm.OpenrouterConfig.get_config()
api_key = (
api_key
or litellm.api_key
@ -6799,24 +6788,11 @@ def embedding(
headers=headers,
)
elif custom_llm_provider == "openrouter":
casted_optional_params: Final[Mapping[str, object]] = (
cast( # cast-ok: type discipline for untyped optional_params
Mapping[str, object], optional_params
)
)
raw_region: Final[object] = (
litellm_params_dict.get("region")
or litellm_params_dict.get("region_name")
or litellm_params_dict.get("data_residency")
or casted_optional_params.get("region")
or casted_optional_params.get("region_name")
or casted_optional_params.get("data_residency")
or getattr(litellm.OpenrouterConfig, "region", None)
)
resolved_region: Final[str | None] = raw_region if isinstance(raw_region, str) else None
api_base = resolve_openrouter_api_base( # rebind-ok: regional endpoint resolution for openrouter
api_base=api_base,
region=resolved_region,
region=getattr(litellm.OpenrouterConfig, "region", None),
litellm_params=litellm_params_dict,
optional_params=optional_params,
)
litellm_params_dict["api_base"] = api_base
litellm_params_dict["data_residency"] = infer_openrouter_data_residency("openrouter", api_base)