FluxyChat

Guides

Provider & Model Management

The provider registry lets you manage multiple providers and models centrally, access models through simple string IDs, and pre-configure model settings.

Provider & Model Management

The provider registry lets you manage multiple providers and models centrally, access models through simple string IDs, and pre-configure model settings.

AIProviderRegistry

The base registry for registering and resolving models:

import { AIProviderRegistry, DeterministicLanguageModel } from '@fluxy-chat/agent';

const registry = new AIProviderRegistry();
registry.register(new DeterministicLanguageModel('hello', undefined, 'my-model'));

const model = registry.resolve('fluxy-test:my-model');

createCustomProvider

Creates a provider with preset models and optional fallback:

import { createCustomProvider } from '@fluxy-chat/agent';

const myProvider = createCustomProvider({
  languageModels: {
    fast: someFastModel,
    reasoning: someReasoningModel,
  },
  fallbackProvider: baseRegistry,
});

ProviderRegistry

Manages multiple providers and resolves with providerId:modelId notation:

import { ProviderRegistry, AIProviderRegistry } from '@fluxy-chat/agent';

const registry = new ProviderRegistry({
  openai: openaiRegistry,
  anthropic: anthropicRegistry,
});

const model = registry.languageModel('openai:gpt-4');
// Or with custom separator:
// registry.languageModel('anthropic > claude-3')

Custom Separator

const registry = new ProviderRegistry(
  {
    openai: openaiRegistry,
    anthropic: anthropicRegistry,
  },
  { separator: ' > ' },
);

const model = registry.languageModel('openai > gpt-4');

Aliases with Preconfigured Settings

Combined with middleware for default settings:

import { createCustomProvider, wrapLanguageModel, defaultSettingsMiddleware } from '@fluxy-chat/agent';

const myProvider = createCustomProvider({
  languageModels: {
    'fast': wrapLanguageModel({
      model: baseModel,
      middleware: defaultSettingsMiddleware({
        settings: { temperature: 0.3 },
      }),
    }),
    'reasoning': wrapLanguageModel({
      model: baseModel,
      middleware: defaultSettingsMiddleware({
        settings: {
          providerOptions: { openai: { reasoningEffort: 'high' } },
        },
      }),
    }),
  },
});

createProviderRegistry

Factory function for creating a ProviderRegistry:

import { createProviderRegistry } from '@fluxy-chat/agent';

const registry = createProviderRegistry({
  openai: openaiRegistry,
  anthropic: anthropicRegistry,
});

registry.hasProvider('openai');  // true
registry.listProviders();        // ['anthropic', 'openai']

Type Reference

interface CustomProviderConfig {
  languageModels?: Record<string, AILanguageModel>;
  embeddingModels?: Record<string, AIEmbeddingModel>;
  rerankModels?: Record<string, AIRerankModel>;
  fallbackProvider?: AIProviderRegistry | AILanguageModel | (() => AILanguageModel);
}

interface ProviderRegistryConfig {
  [providerId: string]: AIProviderRegistry | CustomProviderConfig | AILanguageModel | (() => AILanguageModel);
}

function createCustomProvider(config: CustomProviderConfig): AIProviderRegistry;
function createProviderRegistry(config: ProviderRegistryConfig, options?: ProviderRegistryOptions): ProviderRegistry;

See Also

On this page