feat: add OrcaRouter as a first-class API model provider - #2614
Open
nissrin2020ali-ux wants to merge 1 commit into
Open
feat: add OrcaRouter as a first-class API model provider#2614nissrin2020ali-ux wants to merge 1 commit into
nissrin2020ali-ux wants to merge 1 commit into
Conversation
Add an OrcaRouterAPI wrapper (plus a streaming variant) mirroring the existing OpenAISDK integration, defaulting to the OrcaRouter gateway base URL and ORCAROUTER_API_KEY env var. Includes unit tests and an evaluation example. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
OpenCompass calls itself "a compass for the complex landscape of evaluating large language models", and its API model ecosystem currently covers OpenAI, LiteLLM (as a unified gateway), ChatGLM, MiniMax, XunFei and others. LiteLLM already lets users reach many providers, but gateways such as OrcaRouter also expose their own provider/model namespace and value-add features that sit behind the OpenAI-compatible endpoint. Today an OpenCompass user who wants OrcaRouter has to treat it as an anonymous custom
openai_api_base, losing the ergonomics of a first-class provider.OrcaRouter is an OpenAI-compatible AI gateway built for both models and agents. Like OpenRouter, it exposes a provider/model namespace across many models — but it also combines adaptive routing, automatic failover, zero-markup inference, observability, guardrails, and agent-tool governance behind the same endpoint. Adding
orcarouteras a first-class provider means this project's users can use that stack directly, without treating OrcaRouter as an anonymous custom base URL. It also runs gateway-level, zero-trust security for AI agents on the same endpoint — screening every prompt/response and governing every tool call on a default-deny basis, with no application code changes.Modification
opencompass/models/orcarouter_api.pywithOrcaRouterAPI(registered) andOrcaRouterAPIStreaming(registered). Both mirror the existingOpenAISDK/OpenAISDKStreamingintegrations (the same classes OpenCompass already uses for DeepSeek-R1 and similar OpenAI-compatible endpoints), defaulting to the OrcaRouter gateway base URLhttps://api.orcarouter.ai/v1/and reading the key from theORCAROUTER_API_KEYenv var whenkey='ENV'.opencompass/models/__init__.py.tests/models/test_orcarouter_api.pycovering registry registration, key/base defaults and theORCAROUTER_API_KEYfallback, explicit key override, reasoning-content merging, and streaming chunk parsing.examples/eval_orcarouter.pydemonstrating a minimal evaluation config.docs/en/user_guides/models.mdunder API-based Models.Use cases
Verification
pytest tests/models/test_orcarouter_api.py— 10/10 passed.pytest tests/models/test_openai_api.py tests/models/test_litellm_api.py— 45/45 passed (no regressions).flake8,isort,yapf, andcodespellclean on all changed files.https://api.orcarouter.ai/v1throughOrcaRouterAPI.generate()returned a real completion (200), and the streaming variant streamed chunks back successfully.Checklist
I'm an engineer on the OrcaRouter team.
Discord: discord.gg/YEubt8enRA · X: https://x.com/OrcaRouter