TryAii-DRE
Embedding-based AI model router. Understands your prompt semantically and routes to the best model based on benchmarks, cost, speed, and quality.
from tryaii_dre import DREClient, Router
router = Router()
result = router.route("Write a Python function to merge sorted arrays")
print(result.best_model) # "gpt-5.2"
print(result.best_reasoning) # "Quality: 0.94 on [HumanEval (93%), SWE-bench (87%)]"
client = DREClient(api_key="sk-or-...")
response = client.chat("Write a quicksort implementation")
print(response.content)
Install
pip install tryaii-dre
The base install includes local embeddings via sentence-transformers - no API keys needed.
Optional extras for provider integrations:
pip install tryaii-dre[openrouter] # Route & call models via OpenRouter (adds httpx)
pip install tryaii-dre[openai] # Use OpenAI embeddings instead of local (adds openai)
pip install tryaii-dre[redis] # Redis client for planned distributed cache (not yet implemented)
pip install tryaii-dre[all] # All optional integrations
Quick Start
from tryaii_dre import Router, Priorities
router = Router()
# Route with default balanced priorities
result = router.route("Explain quantum entanglement simply")
print(result.best_model)
# Quality-first (ignore cost)
result = router.route(
"Debug this memory leak in my Node.js app",
priorities=Priorities(quality=5, cost=1, speed=2),
)
# Budget mode
result = router.route(
"Summarize this email",
priorities=Priorities.budget(),
)
CLI
Installing the package adds a tryaii-dre command (same surface as the Node SDK). It opens
with an animated blue→red banner, then runs your command. The banner prints to stderr and
auto-suppresses when output is piped, so --json stays clean.
tryaii-dre route "Write a Python function to merge sorted arrays" --quality=5 --cost=1
tryaii-dre eval prompts.json --output results/my-run --quality=5 --cost=1 --speed=1
tryaii-dre models --provider anthropic # add --json for machine-readable output
tryaii-dre benchmarks --json
tryaii-dre setup # download the embedding model + warm centroids
| Command | Key options |
|---|---|
route "<prompt>" |
--quality/--cost/--speed <1-5> (default 3), --top-k <n> |
eval <input.json> |
-o/--output <dir>, --max-price <usd>, --output-tokens <n>, --budget-mode strict|fit-output |
models |
--provider <name>, --json |
benchmarks |
--json |
setup / regenerate |
--model <name> |
Global flags: --no-banner (or TRYAII_NO_BANNER=1), NO_COLOR=1, -v/--verbose.
Eval over a dataset
# Balanced run into a named folder
tryaii-dre eval prompts.json --output results/my-run --quality=5 --cost=1 --speed=1
# Budget-aware: --max-price is the total budget for the whole dataset
tryaii-dre eval prompts.json --output results/budget --max-price=0.10 --output-tokens=2000
tryaii-dre eval prompts.json --output results/budget-fit --max-price=0.10 --output-tokens=2000 --budget-mode=fit-output
The input can be an array of strings or objects with prompt, optional id,
and optional category. In budgeted eval, quality/cost/speed priority flags
are ignored: price is the hard constraint, and the optimizer maximizes model
quality within that price. --budget-mode=fit-output lowers the fixed output
token estimate when the requested length cannot fit the total budget. The
command writes results.jsonl, summary.json, and index.html.
OpenRouter Integration
from tryaii_dre import Router
from tryaii_dre.integrations import OpenRouterIntegration
router = Router()
openrouter = OpenRouterIntegration(router, api_key="sk-or-...")
response = openrouter.chat("Write a quicksort implementation")
print(response.model_used) # Auto-selected best model
print(response.content) # Actual response
OpenAI Embeddings
from tryaii_dre import Router
from tryaii_dre.embeddings import OpenAIEmbeddingProvider
router = Router(
embedding_provider=OpenAIEmbeddingProvider(),
)
result = router.route("Summarize this architecture decision")
print(result.best_model)
Install the OpenAI client first:
pip install tryaii-dre[openai]
License
Apache 2.0
Metadata
Release files for tryaii-dre 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tryaii_dre-0.2.2.tar.gz | 124.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tryaii_dre-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 248.8 kB
Release files / tryaii_dre-0.2.2.tar.gz
| Download URL | tryaii_dre-0.2.2.tar.gz |
|---|---|
| Size | 124.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3c260f13e605ce085d3efd92c6468f27833ab362e7dbc404ba2ce76ebd9d474b
|
|
BLAKE2b-256 checksum How to use checksums |
0bebcf1e04f3a7df84aa47a50673c2c02db0784abcf1d72aa1f2f47bf092db84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / tryaii_dre-0.2.2-py3-none-any.whl
| Download URL | tryaii_dre-0.2.2-py3-none-any.whl |
|---|---|
| Size | 124.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e0d35c6c0cd5ae737572dd2e7b091932c5592cfd14caf9c7d9965b0b7c7f0caa
|
|
BLAKE2b-256 checksum How to use checksums |
f7bfd4780c930d447eaa1a38be8edc4894d034749c049649557d33a2c8c50059
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|