Skip to main content

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

  1. Clusters similar prompts together
  2. Learns which model performs best per cluster
  3. 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


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.2.3.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nordlys-0.2.3-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file nordlys-0.2.3.tar.gz.

File metadata

  • Download URL: nordlys-0.2.3.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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

Hashes for nordlys-0.2.3.tar.gz
Algorithm Hash digest
SHA256 28eaa41c2114488b8634ffdd7f85db627ce13ae5e56e69b3eb1e90a0c0122265
MD5 c63f2fe823228fb80c1f26e5c8c39e35
BLAKE2b-256 586fa7c419e2219d0ce84db12309e3f4d920332b78902505c8644a71fe0e59ae

See more details on using hashes here.

File details

Details for the file nordlys-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: nordlys-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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

Hashes for nordlys-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 47226aab4e3a5fcc8e15f38bf6f7de2948f592a953da3d556fc7713ab9733149
MD5 dd88ba3146164430b2293ec10585cf6e
BLAKE2b-256 c713978b9a513358eddc8a0d1890a2d51a6dc206a22c1509ae5bb4bb709a6f4b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page