Automatic LLM Routing
A multimodal adaptive router
Neurova's LLM Router picks the best model based on the request type, covering ten request types with multimodal capability matching.
Request type detection
| Request type | Description | Capability matched |
|---|---|---|
| CHAT | Text chat | TEXT |
| IMAGE_UNDERSTANDING | Image understanding | VISION |
| AUDIO_UNDERSTANDING | Audio understanding | AUDIO |
| VIDEO_UNDERSTANDING | Video understanding | VIDEO |
| TEXT_TO_IMAGE | Text to image | IMAGE_GENERATION |
| IMAGE_TO_IMAGE | Image to image | IMAGE_GENERATION |
| TEXT_TO_VIDEO | Text to video | VIDEO_GENERATION |
| IMAGE_TO_VIDEO | Image to video | VIDEO_GENERATION |
| TEXT_TO_SPEECH | Speech synthesis | TTS |
| SPEECH_TO_TEXT | Speech recognition | STT |
The selection algorithm
- Capability matching — filters out models that lack the required capability
- Health check — skips unhealthy providers
- Priority ordering — sorts by priority weight
- Response time optimization — favours faster models
- Weighted scoring — a composite score decides the best model
Automatic routing example
result = router.select_model(request_type)
# → routed automatically to the best model
```
## How it relates to LLM Provider management
The LLM Router decides "which model to use"; the LLM Provider Manager decides "which models are available" (metadata / discovery / routing). Together: **the Router detects the request type → the Provider supplies candidate models → the Router decides on capability, health and weighted score**.
## Key files
neurova/llm/
├── llm_router.py # request type detection + model selection
├── provider_manager.py # provider management (the candidate model source)
└── multi_model_client.py # multi-model client (streaming / async)