File: provider-registry.md | Updated: 11/15/2025
Menu
v5 (Latest)
AI SDK 5.x
Model Context Protocol (MCP) Tools
Experimental_StdioMCPTransport
Copy markdown
=====================================================================================================================
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 in the format providerId:modelId.
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 { 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, }),});
By default, the registry uses : as the separator between provider and model IDs. You can customize this separator by passing a separator option:
const registry = createProviderRegistry( { anthropic, openai, }, { separator: ' > ' },);
// Now you can use the custom separatorconst model = registry.languageModel('anthropic > claude-3-opus-20240229');
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.1'), prompt: 'Invent a new holiday and describe its traditions.',});
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',});
You can access image models by using the imageModel method on the registry. The provider id will become the prefix of the model id: providerId:modelId.
import { generateImage } from 'ai';import { registry } from './registry';
const { image } = await generateImage({ model: registry.imageModel('openai:dall-e-3'), prompt: 'A beautiful sunset over a calm ocean',});
import { createProviderRegistry } from "ai"
Record<string, Provider>
The unique identifier for the provider. It should be unique within the registry.
Provider
(id: string) => LanguageModel
A function that returns a language model by its id.
(id: string) => EmbeddingModel<string>
A function that returns a text embedding model by its id.
(id: string) => ImageModel
A function that returns an image model by its id.
object
Optional configuration for the registry.
Options
string
Custom separator between provider and model IDs. Defaults to ":".
The createProviderRegistry function returns a Provider instance. It has the following methods:
(id: string) => LanguageModel
A function that returns a language model by its id (format: providerId:modelId)
(id: string) => EmbeddingModel<string>
A function that returns a text embedding model by its id (format: providerId:modelId)
(id: string) => ImageModel
A function that returns an image model by its id (format: providerId:modelId)
On this page
Deploy and Scale AI Apps with Vercel.
Vercel delivers the infrastructure and developer experience you need to ship reliable AI-powered applications at scale.
Trusted by industry leaders: