Intelligent LLM Infrastructure with Smart Model Selection
Project description
Nordlys
Smart LLM model router. Picks the best model for each prompt based on cost and quality.
Install
uv pip install -e .
Quick Start
from nordlys import Nordlys, ModelConfig
import pandas as pd
# 1. Define your models
models = [
ModelConfig(id="openai/gpt-4", cost_input=30.0, cost_output=60.0),
ModelConfig(id="openai/gpt-3.5-turbo", cost_input=0.5, cost_output=1.5),
]
# 2. Training data: questions + accuracy scores per model
df = pd.DataFrame({
"questions": ["Write code", "What is 2+2?", "Explain quantum physics"],
"openai/gpt-4": [0.95, 0.99, 0.92],
"openai/gpt-3.5-turbo": [0.70, 0.99, 0.60],
})
# 3. Fit and route
router = Nordlys(models=models)
router.fit(df)
result = router.route("Write a sorting algorithm", cost_bias=0.5)
print(result.model_id) # Best model for this prompt
How It Works
- Clusters similar prompts together
- Learns which model performs best per cluster
- Routes new prompts to the optimal model
Cost Bias
# cost_bias=0.0 → Always cheapest
router.route("prompt", cost_bias=0.0)
# cost_bias=1.0 → Always best quality
router.route("prompt", cost_bias=1.0)
# cost_bias=0.5 → Balanced
router.route("prompt", cost_bias=0.5)
Save & Load
router.save("router.json")
loaded = Nordlys.load("router.json")
Links
Citation
This project is inspired by the Universal Router approach:
@article{universalrouter2025,
title={Universal Router: Foundation Model Routing for Arbitrary Tasks},
author={},
journal={arXiv preprint arXiv:2502.08773},
year={2025},
url={https://arxiv.org/pdf/2502.08773}
}
Paper: Universal Router: Foundation Model Routing for Arbitrary Tasks
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nordlys-0.1.4.tar.gz
(18.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
nordlys-0.1.4-py3-none-any.whl
(26.8 kB
view details)
File details
Details for the file nordlys-0.1.4.tar.gz.
File metadata
- Download URL: nordlys-0.1.4.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f82c9a4d7003bcd222b93356f7562268cde820c05ecad3d8ff3c04202e5c1a06
|
|
| MD5 |
bbc96ffdf06394db9a088fe2ea9d68fa
|
|
| BLAKE2b-256 |
a9c66aa3350c3c5037a0b5bec937ba83978a4b83dec01a12113f81c4ffa3e12f
|
File details
Details for the file nordlys-0.1.4-py3-none-any.whl.
File metadata
- Download URL: nordlys-0.1.4-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5c09386bf2216c4f1c6d22693cd46816d4b3de98a424cb978078afe8ce4cdd0
|
|
| MD5 |
feae519f2d3176d22a306cb6ed75388b
|
|
| BLAKE2b-256 |
20f5b832798808d5c268f11005b6ebda1fc9dfe079d2e8717df36f972d547fb5
|