Model alias #945
Closed
akshaydeo
started this conversation in
Tech Specs
Model alias
#945
Replies: 8 comments 1 reply
|
So, any progress? It's the blocker to replace litellm. |
0 replies
|
@larrykoo711 yes - we actually changed the scope to cover a bit of routing as well. Should go live by 3rd week of Jan 2026 |
0 replies
|
In the age of Opus 4.6, Codex 5.3, GLM-5, Kimi-2.5 and MiniMax-M2.5, this can't be hard to implement... For anyone using LiteLLM, it's a must have... |
0 replies
|
Any news about this? |
0 replies
|
Waiting so hard!Make it happen! |
0 replies
|
Hello, we are finally picking it up next week first thing🙇🏼♂️ |
0 replies
|
Glad to hear you're looking into this, there's a lot of buzz over litellm alternatives with the recent vulnerability, the main thing I use that for is model aliasing. |
0 replies
|
This is released already with v1.5.0-prerelease2 |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Model aliases
We have been receiving a lot of requests to add model aliases similar to LiteLLM. Model aliases are an important abstraction that make it easy to switch underlying models without making a lot of changes in the code that interacts with the gateway.
Based on our experience while building Maxim AI, most real-world use cases quickly outgrow simple 1:1 mappings. To address this, we are extending the concept of aliases to support rule-based alias mappings in addition to static mappings.
The idea is that model aliases will be top-level entities in provider configuration. Users will be able to create and manage aliases directly from the dashboard (and via
config.json). Dynamic aliases will be evaluated at runtime based on the incoming request, with nanosecond-level overhead compared to static 1:1 mappings.Please let us know if you have any suggestions about this approach.
Goals
Core concepts
Static alias
A static alias maps one alias name to a single underlying provider model.
gpt-4-prod→openai/gpt-4.1-miniExample config:
{ "aliases": { "gpt-4-prod": { "type": "static", "target": { "provider": "openai", "model": "gpt-4.1-mini" } } } }Dynamic alias
A dynamic alias maps an alias name to a set of rules. At runtime, the first matching rule (or a configured strategy) selects the concrete model.
chat-defaultresolves differently based on tenant, use case, or request metadata.Example config (illustrative):
{ "aliases": { "chat-default": { "type": "dynamic", "rules": [ { "name": "Enterprise tenant – premium model", "match": "tenant_id == 'acme-enterprise'", "target": { "provider": "openai", "model": "gpt-4.1" } }, { "name": "Cost-optimized default", "match": "fallback == true", "target": { "provider": "openai", "model": "gpt-4.1-mini" } } ] } } }Configuration & precedence
(provider, model)pair.static_precedence/dynamic_precedence).priorityfield can be added to each rule; if present, rules are sorted by descending priority, then by order.Rule language & capabilities
Dynamic alias (CEL expressions) rules are evaluated against a request context object. At minimum, the rule engine will support:
Context fields (examples):
Operators (CEL-based):
Rules are expressed using CEL (Common Expression Language), which provides:
==,!=)in,not in)&&,||,!)<,>,<=,>=).startsWith(),.endsWith(),.contains(),.matches())condition ? true_value : false_value)Runtime resolution failures
ALIAS_RESOLUTION_FAILEDerror with the alias name.default_targetinside the alias config that is used as a fallback.ALIAS_NOT_FOUNDerror, including the alias name.All errors should be:
Observability
Alias resolution should be visible in both logs and traces.
Tracing (OTel / similar):
Add span attributes such as:
bifrost.alias.namebifrost.alias.type(static|dynamic)bifrost.alias.rule(for dynamic; rule name/id)bifrost.model.providerbifrost.model.nameLogging:
Log alias resolution decisions at debug level, including:
Metrics (optional but recommended):
Counters such as:
alias_resolution_total{alias=...,type=...,status=...}These help track alias usage and failure patterns.
Performance characteristics
Expected overhead:
Dashboard UX (high-level)
A dedicated “Model aliases” section in the provider/gateway configuration:
static/dynamic), target(s), and basic usage indicators.Hot reload:
Alias changes should be applied without restarting nodes (where supported by the config engine).
All reactions