feat(providers): add OrcaRouter as a named gateway provider

Registers OrcaRouter (https://www.orcarouter.ai) as a built-in OpenAI-compatible gateway provider mirroring the OpenRouter wiring: registry spec (sk-orca- key prefix, default base URL), ProvidersConfig field, WebUI icon/brand + deferred model list, docs, and tests.
This commit is contained in:
XiaoHuo888
2026-08-16 00:26:51 +08:00
committed by Xubin Ren
parent 50391b2fb7
commit fd2d419956
7 changed files with 152 additions and 0 deletions
@@ -3132,6 +3132,10 @@ async def test_settings_api_returns_safe_subset_and_updates_whitelist(
assert providers["azure_openai"]["api_key_required"] is False # AAD auth supported; no static key required
assert providers["openrouter"]["configured"] is False
assert providers["openrouter"]["api_key_required"] is True
assert providers["orcarouter"]["label"] == "OrcaRouter"
assert providers["orcarouter"]["configured"] is False
assert providers["orcarouter"]["api_key_required"] is True
assert providers["orcarouter"]["default_api_base"] == "https://api.orcarouter.ai/v1"
assert providers["skywork"]["label"] == "Skywork"
assert providers["skywork"]["default_api_base"] == "https://api.apifree.ai/agent/v1"
assert providers["ant_ling"]["label"] == "Ant Ling"
+1
View File
@@ -262,6 +262,7 @@ class ProvidersConfig(Base):
anthropic: ProviderConfig = Field(default_factory=ProviderConfig)
openai: ProviderConfig = Field(default_factory=ProviderConfig)
openrouter: ProviderConfig = Field(default_factory=ProviderConfig)
orcarouter: ProviderConfig = Field(default_factory=ProviderConfig) # OrcaRouter API gateway
assemblyai: ProviderConfig = Field(default_factory=ProviderConfig) # AssemblyAI voice transcription
huggingface: ProviderConfig = Field(default_factory=ProviderConfig)
skywork: ProviderConfig = Field(default_factory=ProviderConfig) # Skywork / APIFree API gateway
+12
View File
@@ -199,6 +199,18 @@ PROVIDERS: tuple[ProviderSpec, ...] = (
supports_prompt_caching=True,
gateway_reasoning_style="reasoning_effort",
),
# OrcaRouter: global gateway, keys start with "sk-orca-"
ProviderSpec(
name="orcarouter",
keywords=("orcarouter",),
env_key="ORCAROUTER_API_KEY",
display_name="OrcaRouter",
backend="openai_compat",
is_gateway=True,
detect_by_key_prefix="sk-orca-",
detect_by_base_keyword="orcarouter",
default_api_base="https://api.orcarouter.ai/v1",
),
# Eden AI: OpenAI-compatible gateway. Models use the "provider/model"
# naming scheme (e.g. "anthropic/claude-sonnet-4-5"); the full id is sent upstream.
ProviderSpec(