AI SDK Coreexperimental_createProviderRegistry

experimental_createProviderRegistry()

Provider management is an experimental feature.

When you work with multiple providers and models, it is often desirable to manage them in a central place and access the models through simple string ids.

createProviderRegistry lets you create a registry with multiple providers that you can access by their ids.

Import

import { experimental_createProviderRegistry as createProviderRegistry } from "ai"

API Signature

Registers a language model provider with a given id.

Parameters

providers:

Record<string, { languageModel: (id: string) => LanguageModel; textEmbedding: (id: string) => EmbeddingModel<string> }>
The unique identifier for the provider. It should be unique within the registry.

Returns

The experimental_createProviderRegistry function returns a experimental_ProviderRegistry instance. It has the following methods:

languageModel:

(id: string) => LanguageModel
A function that returns a language model by its id (format: providerId:modelId)

textEmbeddingModel:

(id: string) => EmbeddingModel<string>
A function that returns a text embedding model by its id (format: providerId:modelId)

Examples

Setup

You can create a registry with multiple providers and models using createProviderRegistry.

import { anthropic } from '@ai-sdk/anthropic';
import { createOpenAI } from '@ai-sdk/openai';
import { experimental_createProviderRegistry as createProviderRegistry } from 'ai';
export const registry = createProviderRegistry({
// register provider with prefix and default setup:
anthropic,
// register provider with prefix and custom setup:
openai: createOpenAI({
apiKey: process.env.OPENAI_API_KEY,
}),
});

Language models

You can access language models by using the languageModel method on the registry. The provider id will become the prefix of the model id: providerId:modelId.

import { generateText } from 'ai';
import { registry } from './registry';
const { text } = await generateText({
model: registry.languageModel('openai:gpt-4-turbo'),
prompt: 'Invent a new holiday and describe its traditions.',
});

Text embedding models

You can access text embedding models by using the textEmbeddingModel method on the registry. The provider id will become the prefix of the model id: providerId:modelId.

import { embed } from 'ai';
import { registry } from './registry';
const { embedding } = await embed({
model: registry.textEmbeddingModel('openai:text-embedding-3-small'),
value: 'sunny day at the beach',
});