Skip to content

Model Registry

The ModelRegistry class manages model registration, search, scoring, and selection.

Key Types

ModelInfo

typescript
interface ModelInfo<TProvider = string> {
  id: string;
  provider: TProvider;
  name: string;
  contextWindow: number;
  maxOutputTokens: number;
  tier: ModelTier;
  capabilities: Set<ModelCapability>;
  supportedParameters: Set<ModelParameter>;
  pricing: ModelPricing;
  metrics?: ModelMetrics;
  tokenizer?: ModelTokenizer;
  metadata?: Record<string, any>;
}

ModelCapability

typescript
type ModelCapability =
  | 'chat' | 'tools' | 'vision' | 'hearing'
  | 'json' | 'structured' | 'streaming' | 'reasoning'
  | 'image' | 'audio' | 'embedding' | 'zdr';

ModelTier

typescript
type ModelTier = 'flagship' | 'efficient' | 'legacy' | 'experimental';

ModelPricing

typescript
interface ModelPricing {
  text?: { input: number; output: number; cached?: number };
  audio?: { input?: number; output?: number; perSecond?: number };
  image?: { input?: number; output?: Array<{ quality: string; sizes: Array<{ cost: number }> }> };
  reasoning?: { input: number; output: number; cached?: number };
  embeddings?: { cost: number };
  perRequest?: number;
}

Prices are in dollars per million tokens (text, reasoning, embeddings).

ModelMetrics

typescript
interface ModelMetrics {
  tokensPerSecond?: number;
  latencyMs?: number;
  accuracyScore?: number;
}

ModelSelectionWeights

typescript
interface ModelSelectionWeights {
  cost: number;
  speed: number;
  accuracy: number;
  contextWindow?: number;
}

ScoredModel

typescript
interface ScoredModel<TProvider = string> {
  model: ModelInfo<TProvider>;
  score: number;
  provider?: Provider;
}

SelectedModel

typescript
interface SelectedModel<TProviders, TProviderName = string> {
  model: ModelInfo<TProviderName>;
  provider: Provider;
  config?: Partial<Request>;
}

ModelParameter

typescript
type ModelParameter =
  | 'temperature' | 'maxTokens' | 'topP' | 'topK'
  | 'frequencyPenalty' | 'presencePenalty' | 'stop'
  | 'logProbabilities' | 'logitBias' | 'seed' | 'n'
  | 'responseFormat' | 'toolChoice'
  | 'speechVoice' | 'speechSpeed' | 'speechInstructions'
  | 'transcribePrompt' | 'transcribeStream'
  | 'embeddingDimensions'
  | 'imageMultiple' | 'imageBackground' | 'imageFormat' | 'imageStyle' | 'imageStream';

ModelOverride

typescript
interface ModelOverride<TProvider = string> {
  provider?: TProvider;
  modelId?: string;
  modelPattern?: RegExp;
  overrides: Partial<Omit<ModelInfo, 'id' | 'provider'>>;
}

ModelSource

typescript
interface ModelSource {
  name: string;
  fetchModels(config?: any): Promise<ModelInfo[]>;
}

Scoring Algorithm

See Model Selection guide for the full scoring algorithm explanation.

Released under the GPL-3.0 License.