architecture/provider-abstraction.md
This document explains how AI functions, model specifications, and provider implementations connect in the AI SDK. It starts with an abstract high-level view and then details each V4 model type, including the AI functions that use it and small UML diagrams.
streamText)LanguageModelV4LanguageModelV4classDiagram
class AIFunction
class LanguageModelV4 {
<<interface>>
}
class ProviderLanguageModelImplementationA
class ProviderLanguageModelImplementationB
AIFunction ..> LanguageModelV4 : uses
ProviderLanguageModelImplementationA ..|> LanguageModelV4 : implements
ProviderLanguageModelImplementationB ..|> LanguageModelV4 : implements
If you're unable to find any of the functions mentioned below in the codebase, they may only exist with an experimental_ prefix. This means they're experimental, and stable versions will likely be implemented at a later point.
LanguageModelV4)Language models are used for text generation and structured generation workflows from prompt or message input.
generateText - packages/ai/src/generate-text/generate-text.ts - Generates a complete text result from a language model in a single call.streamText - packages/ai/src/generate-text/stream-text.ts - Streams language model output incrementally as it is produced.LanguageModelV4 - packages/provider/src/language-model/v4/language-model-v4.tsclassDiagram
class generateText
class streamText
class LanguageModelV4 {
<<interface>>
}
class OpenAILanguageModel
generateText ..> LanguageModelV4 : uses
streamText ..> LanguageModelV4 : uses
OpenAILanguageModel ..|> LanguageModelV4 : implements
EmbeddingModelV4)Embedding models are used to convert text into numeric vectors for similarity and retrieval use cases.
embed - packages/ai/src/embed/embed.ts - Creates a single embedding vector for one text value.embedMany - packages/ai/src/embed/embed-many.ts - Creates embedding vectors for multiple text values, batching calls when needed.EmbeddingModelV4 - packages/provider/src/embedding-model/v4/embedding-model-v4.tsclassDiagram
class embed
class embedMany
class EmbeddingModelV4 {
<<interface>>
}
class OpenAIEmbeddingModel
embed ..> EmbeddingModelV4 : uses
embedMany ..> EmbeddingModelV4 : uses
OpenAIEmbeddingModel ..|> EmbeddingModelV4 : implements
ImageModelV4)Image models are used to generate image outputs from text prompts.
generateImage - packages/ai/src/generate-image/generate-image.ts - Generates one or more images from prompt input.ImageModelV4 - packages/provider/src/image-model/v4/image-model-v4.tsclassDiagram
class generateImage
class ImageModelV4 {
<<interface>>
}
class OpenAIImageModel
generateImage ..> ImageModelV4 : uses
OpenAIImageModel ..|> ImageModelV4 : implements
RerankingModelV4)Reranking models are used to reorder candidate documents by relevance to a query.
rerank - packages/ai/src/rerank/rerank.ts - Reorders documents and returns a relevance-ranked result set for a query.RerankingModelV4 - packages/provider/src/reranking-model/v4/reranking-model-v4.tsclassDiagram
class rerank
class RerankingModelV4 {
<<interface>>
}
class CohereRerankingModel
rerank ..> RerankingModelV4 : uses
CohereRerankingModel ..|> RerankingModelV4 : implements
TranscriptionModelV4)Transcription models are used to convert audio input into text transcripts.
transcribe - packages/ai/src/transcribe/transcribe.ts - Transcribes audio into text with segment and metadata support.TranscriptionModelV4 - packages/provider/src/transcription-model/v4/transcription-model-v4.tsclassDiagram
class transcribe
class TranscriptionModelV4 {
<<interface>>
}
class OpenAITranscriptionModel
transcribe ..> TranscriptionModelV4 : uses
OpenAITranscriptionModel ..|> TranscriptionModelV4 : implements
SpeechModelV4)Speech models are used to synthesize audio from text input.
generateSpeech - packages/ai/src/generate-speech/generate-speech.ts - Generates speech audio from text input.SpeechModelV4 - packages/provider/src/speech-model/v4/speech-model-v4.tsclassDiagram
class generateSpeech
class SpeechModelV4 {
<<interface>>
}
class OpenAISpeechModel
generateSpeech ..> SpeechModelV4 : uses
OpenAISpeechModel ..|> SpeechModelV4 : implements
VideoModelV4)Video models are used to generate video outputs from prompts.
generateVideo - packages/ai/src/generate-video/generate-video.ts - Generates one or more videos from prompt input.VideoModelV4 - packages/provider/src/video-model/v4/video-model-v4.tsclassDiagram
class generateVideo
class VideoModelV4 {
<<interface>>
}
class FalVideoModel
generateVideo ..> VideoModelV4 : uses
FalVideoModel ..|> VideoModelV4 : implements