fix(providers): add OpenRouter support to _create_provider_llm #10950

Merged
HAL9000 merged 1 commits from bugfix/m3-openrouter-create-llm into master 2026-05-03 01:37:50 +00:00

1 Commits

Author SHA1 Message Date
hurui200320 cf078c2c53 fix(providers): add OpenRouter support to _create_provider_llm
CI / lint (pull_request) Successful in 1m6s
CI / quality (pull_request) Successful in 1m48s
CI / typecheck (pull_request) Successful in 1m49s
CI / security (pull_request) Successful in 1m49s
CI / build (pull_request) Successful in 38s
CI / helm (pull_request) Successful in 27s
CI / push-validation (pull_request) Successful in 20s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Failing after 47s
CI / e2e_tests (pull_request) Successful in 3m45s
CI / integration_tests (pull_request) Successful in 4m43s
CI / unit_tests (pull_request) Successful in 9m28s
CI / docker (pull_request) Successful in 2m17s
CI / coverage (pull_request) Successful in 15m41s
CI / status-check (pull_request) Successful in 4s
Add a ProviderType.OPENROUTER branch to ProviderRegistry._create_provider_llm()
so that create_llm("openrouter") returns a configured LangChain BaseLanguageModel
instead of raising ValueError("Unsupported provider type: openrouter").

The new branch creates a ChatOpenAI instance with openai_api_base set to the
OpenRouter gateway URL and openai_api_key from settings, matching the credentials
used by create_ai_provider(). Optional default_headers are sanitized to
dict[str, str] (string-coerced keys and values) via inline dict comprehension.

Also includes review fixes:
- M1: Added openrouter_organization header support (HTTP-Referer, X-Title)
- m1: Added explicit ValueError when openrouter_api_key is empty/missing
- M2: Added openai_api_key assertions to all OpenRouter BDD scenarios
- m2: Added default model fallback scenario for model_id=None
- m4: Added empty default_headers edge case scenario
- m5: Added extra kwargs forwarding scenario (temperature)
- m6: Added empty API key error scenario
- m7: Added negative assertion verifying original integer key 123 is absent
- m8: Added openai_api_key assertion to sanitized headers scenario

ISSUES CLOSED: #10948
2026-05-03 01:12:09 +00:00