Home / Documentation / Configuration Guide

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 typeDescriptionCapability matched
CHATText chatTEXT
IMAGE_UNDERSTANDINGImage understandingVISION
AUDIO_UNDERSTANDINGAudio understandingAUDIO
VIDEO_UNDERSTANDINGVideo understandingVIDEO
TEXT_TO_IMAGEText to imageIMAGE_GENERATION
IMAGE_TO_IMAGEImage to imageIMAGE_GENERATION
TEXT_TO_VIDEOText to videoVIDEO_GENERATION
IMAGE_TO_VIDEOImage to videoVIDEO_GENERATION
TEXT_TO_SPEECHSpeech synthesisTTS
SPEECH_TO_TEXTSpeech recognitionSTT

The selection algorithm

  1. Capability matching — filters out models that lack the required capability
  2. Health check — skips unhealthy providers
  3. Priority ordering — sorts by priority weight
  4. Response time optimization — favours faster models
  5. 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)