Back to Ai

Provider Abstraction Architecture

architecture/provider-abstraction.md

2.1.108.0 KB
Original Source

Provider Abstraction Architecture

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.

High-Level Architecture

  • AI functions: user-facing language functions (for example, streamText)
  • Model specification: LanguageModelV4
  • Provider implementations: provider-specific language model implementations of LanguageModelV4
mermaid
classDiagram
    class AIFunction
    class LanguageModelV4 {
      <<interface>>
    }
    class ProviderLanguageModelImplementationA
    class ProviderLanguageModelImplementationB

    AIFunction ..> LanguageModelV4 : uses
    ProviderLanguageModelImplementationA ..|> LanguageModelV4 : implements
    ProviderLanguageModelImplementationB ..|> LanguageModelV4 : implements

Model-Type Details

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.

Language Model (LanguageModelV4)

Language models are used for text generation and structured generation workflows from prompt or message input.

mermaid
classDiagram
    class generateText
    class streamText
    class LanguageModelV4 {
      <<interface>>
    }
    class OpenAILanguageModel

    generateText ..> LanguageModelV4 : uses
    streamText ..> LanguageModelV4 : uses
    OpenAILanguageModel ..|> LanguageModelV4 : implements

Embedding Model (EmbeddingModelV4)

Embedding models are used to convert text into numeric vectors for similarity and retrieval use cases.

mermaid
classDiagram
    class embed
    class embedMany
    class EmbeddingModelV4 {
      <<interface>>
    }
    class OpenAIEmbeddingModel

    embed ..> EmbeddingModelV4 : uses
    embedMany ..> EmbeddingModelV4 : uses
    OpenAIEmbeddingModel ..|> EmbeddingModelV4 : implements

Image Model (ImageModelV4)

Image models are used to generate image outputs from text prompts.

mermaid
classDiagram
    class generateImage
    class ImageModelV4 {
      <<interface>>
    }
    class OpenAIImageModel

    generateImage ..> ImageModelV4 : uses
    OpenAIImageModel ..|> ImageModelV4 : implements

Reranking Model (RerankingModelV4)

Reranking models are used to reorder candidate documents by relevance to a query.

mermaid
classDiagram
    class rerank
    class RerankingModelV4 {
      <<interface>>
    }
    class CohereRerankingModel

    rerank ..> RerankingModelV4 : uses
    CohereRerankingModel ..|> RerankingModelV4 : implements

Transcription Model (TranscriptionModelV4)

Transcription models are used to convert audio input into text transcripts.

mermaid
classDiagram
    class transcribe
    class TranscriptionModelV4 {
      <<interface>>
    }
    class OpenAITranscriptionModel

    transcribe ..> TranscriptionModelV4 : uses
    OpenAITranscriptionModel ..|> TranscriptionModelV4 : implements

Speech Model (SpeechModelV4)

Speech models are used to synthesize audio from text input.

mermaid
classDiagram
    class generateSpeech
    class SpeechModelV4 {
      <<interface>>
    }
    class OpenAISpeechModel

    generateSpeech ..> SpeechModelV4 : uses
    OpenAISpeechModel ..|> SpeechModelV4 : implements

Video Model (VideoModelV4)

Video models are used to generate video outputs from prompts.

mermaid
classDiagram
    class generateVideo
    class VideoModelV4 {
      <<interface>>
    }
    class FalVideoModel

    generateVideo ..> VideoModelV4 : uses
    FalVideoModel ..|> VideoModelV4 : implements