Use validate_environment to resolve provider env var
Naively uppercasing the routing prefix breaks for providers whose LiteLLM env var name doesn't match the prefix verbatim: together_ai/... needs TOGETHERAI_API_KEY (no underscore) perplexity/... needs PERPLEXITYAI_API_KEY Ask LiteLLM directly via litellm.validate_environment(model=...) which env vars it consults for the chosen provider, then setdefault each one to LLM_API_KEY. This is the SDK-blessed lookup and stays correct for every provider LiteLLM supports without a hand-maintained name map. Lowercase the routed model name before lookup so mixed-case user input (e.g. Together_AI/...) still resolves.
This commit is contained in:
@@ -61,17 +61,20 @@ def configure_sdk_model_defaults(settings: Settings) -> None:
|
|||||||
def _mirror_api_key_to_provider_env(model_name: str | None, api_key: str) -> None:
|
def _mirror_api_key_to_provider_env(model_name: str | None, api_key: str) -> None:
|
||||||
if not model_name:
|
if not model_name:
|
||||||
return
|
return
|
||||||
|
import litellm
|
||||||
|
|
||||||
name = normalize_model_name(model_name)
|
name = normalize_model_name(model_name)
|
||||||
for prefix in ("litellm/", "any-llm/"):
|
for prefix in ("litellm/", "any-llm/"):
|
||||||
if name.lower().startswith(prefix):
|
if name.lower().startswith(prefix):
|
||||||
name = name[len(prefix) :]
|
name = name[len(prefix) :]
|
||||||
break
|
break
|
||||||
if "/" not in name:
|
try:
|
||||||
|
report = litellm.validate_environment(model=name.lower())
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
return
|
return
|
||||||
provider = name.split("/", 1)[0].strip().upper()
|
for env_key in report.get("missing_keys") or []:
|
||||||
if not provider:
|
if env_key.endswith("_API_KEY"):
|
||||||
return
|
os.environ.setdefault(env_key, api_key)
|
||||||
os.environ.setdefault(f"{provider}_API_KEY", api_key)
|
|
||||||
|
|
||||||
|
|
||||||
def _configure_litellm_compatibility() -> None:
|
def _configure_litellm_compatibility() -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user