mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-30 06:43:27 +00:00
fix(openrouter): align get_complete_url signature and eliminate basedpyright type errors
This commit is contained in:
parent
9577025e35
commit
5bb33e6b8e
4 changed files with 47 additions and 30 deletions
|
|
@ -61,15 +61,17 @@ class OpenrouterConfig(OpenAIGPTConfig):
|
|||
api_base: str | None,
|
||||
api_key: str | None,
|
||||
model: str,
|
||||
optional_params: Mapping[str, object] | None = None,
|
||||
litellm_params: Mapping[str, object] | None = None,
|
||||
optional_params: dict,
|
||||
litellm_params: dict,
|
||||
stream: bool | None = None,
|
||||
) -> str:
|
||||
casted_optional_params: Final[Mapping[str, object]] = cast(Mapping[str, object], optional_params)
|
||||
casted_litellm_params: Final[Mapping[str, object]] = cast(Mapping[str, object], litellm_params)
|
||||
resolved_base: Final = resolve_openrouter_api_base(
|
||||
api_base=api_base,
|
||||
region=self.region,
|
||||
litellm_params=litellm_params,
|
||||
optional_params=optional_params,
|
||||
litellm_params=casted_litellm_params,
|
||||
optional_params=casted_optional_params,
|
||||
).rstrip("/")
|
||||
endpoint: Final = "chat/completions"
|
||||
if endpoint in resolved_base:
|
||||
|
|
|
|||
|
|
@ -39,22 +39,21 @@ _OPENROUTER_REGIONAL_HOSTNAMES: Final[Mapping[str, str]] = MappingProxyType(
|
|||
_DEFAULT_OPENROUTER_API_BASE: Final[str] = "https://openrouter.ai/api/v1"
|
||||
|
||||
|
||||
def _extract_region_value(params: object) -> str | None:
|
||||
if not isinstance(params, Mapping):
|
||||
def _extract_region_value(params: Mapping[str, object] | None) -> str | None:
|
||||
if params is None or not isinstance(params, Mapping):
|
||||
return None
|
||||
for key in ("region", "region_name", "data_residency"):
|
||||
if key in params:
|
||||
val: Final[object] = params[key]
|
||||
if isinstance(val, str) and val.strip():
|
||||
return val.strip()
|
||||
val: Final[object] = params.get(key)
|
||||
if isinstance(val, str) and val.strip():
|
||||
return val.strip()
|
||||
return None
|
||||
|
||||
|
||||
def resolve_openrouter_api_base(
|
||||
api_base: str | None = None,
|
||||
region: str | None = None,
|
||||
litellm_params: object = None,
|
||||
optional_params: object = None,
|
||||
litellm_params: Mapping[str, object] | None = None,
|
||||
optional_params: Mapping[str, object] | None = None,
|
||||
) -> str:
|
||||
"""
|
||||
Resolve the OpenRouter API base URL based on custom api_base, explicit region, or environment.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@ OpenRouter is OpenAI-compatible and supports embeddings via the /v1/embeddings e
|
|||
Docs: https://openrouter.ai/docs
|
||||
"""
|
||||
|
||||
from typing import TYPE_CHECKING, Any, Final
|
||||
from collections.abc import Mapping
|
||||
from typing import TYPE_CHECKING, Any, Final, cast
|
||||
|
||||
import httpx
|
||||
|
||||
|
|
@ -85,10 +86,12 @@ class OpenrouterEmbeddingConfig(BaseEmbeddingConfig):
|
|||
"""
|
||||
Get the complete URL for OpenRouter Embedding API endpoint.
|
||||
"""
|
||||
casted_optional_params: Final[Mapping[str, object]] = cast(Mapping[str, object], optional_params)
|
||||
casted_litellm_params: Final[Mapping[str, object]] = cast(Mapping[str, object], litellm_params)
|
||||
resolved_base: Final = resolve_openrouter_api_base(
|
||||
api_base=api_base,
|
||||
litellm_params=litellm_params,
|
||||
optional_params=optional_params,
|
||||
litellm_params=casted_litellm_params,
|
||||
optional_params=casted_optional_params,
|
||||
).rstrip("/")
|
||||
|
||||
# Return the embeddings endpoint
|
||||
|
|
|
|||
|
|
@ -3415,20 +3415,24 @@ def _complete_openrouter(ctx: CompletionDispatchContext) -> _CompletionDispatchR
|
|||
|
||||
## Load Config
|
||||
config: Final = litellm.OpenrouterConfig.get_config()
|
||||
config_region: Final[str | None] = (
|
||||
ctx.provider_config.region
|
||||
if isinstance(ctx.provider_config, litellm.OpenrouterConfig) and isinstance(ctx.provider_config.region, str)
|
||||
else (litellm.OpenrouterConfig.region if isinstance(litellm.OpenrouterConfig.region, str) else None)
|
||||
casted_optional_params: Final[Mapping[str, object]] = cast(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=config_region,
|
||||
litellm_params=litellm_params,
|
||||
optional_params=optional_params,
|
||||
region=resolved_region,
|
||||
)
|
||||
if litellm_params is not None:
|
||||
litellm_params["api_base"] = api_base
|
||||
litellm_params["data_residency"] = infer_openrouter_data_residency("openrouter", api_base)
|
||||
litellm_params["api_base"] = api_base
|
||||
litellm_params["data_residency"] = infer_openrouter_data_residency("openrouter", api_base)
|
||||
|
||||
api_key = (
|
||||
api_key
|
||||
|
|
@ -6793,14 +6797,23 @@ def embedding(
|
|||
headers=headers,
|
||||
)
|
||||
elif custom_llm_provider == "openrouter":
|
||||
casted_optional_params: Final[Mapping[str, object]] = cast(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,
|
||||
litellm_params=litellm_params_dict,
|
||||
optional_params=optional_params,
|
||||
region=resolved_region,
|
||||
)
|
||||
if litellm_params_dict is not None:
|
||||
litellm_params_dict["api_base"] = api_base
|
||||
litellm_params_dict["data_residency"] = infer_openrouter_data_residency("openrouter", api_base)
|
||||
litellm_params_dict["api_base"] = api_base
|
||||
litellm_params_dict["data_residency"] = infer_openrouter_data_residency("openrouter", api_base)
|
||||
|
||||
api_key = (
|
||||
api_key
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue