`customProvider()`

customProvider()

커스텀 프로바이더를 사용하면 id를 어떤 모델에도 매핑할 수 있습니다. 이를 통해 커스텀 모델 구성, 별칭 이름 등을 설정할 수 있습니다. 커스텀 프로바이더는 폴백 프로바이더도 지원하는데, 이는 기존 프로바이더를 감싸고 추가 기능을 더할 때 유용합니다. 커스텀 프로바이더는 언어, 임베딩, 이미지, 전사, 음성, reranking, 비디오, 파일, 스킬 능력을 노출할 수 있습니다.

출처: 문서

본문

예제: 커스텀 모델 설정

customProvider를 사용하여 커스텀 프로바이더를 만들 수 있습니다.

import { openai } from '@ai-sdk/openai';
import { customProvider } from 'ai';

// custom provider with different model settings:
export const myOpenAI = customProvider({
  languageModels: {
    // replacement model with custom settings:
    'gpt-6-astra': wrapLanguageModel({
      model: openai('gpt-6-astra'),
      middleware: defaultSettingsMiddleware({
        settings: {
          providerOptions: {
            openai: {
              reasoningEffort: 'high',
            },
          },
        },
      }),
    }),
    // alias model with custom settings:
    'gpt-6-astra-reasoning-high': wrapLanguageModel({
      model: openai('gpt-6-astra'),
      middleware: defaultSettingsMiddleware({
        settings: {
          providerOptions: {
            openai: {
              reasoningEffort: 'high',
            },
          },
        },
      }),
    }),
  },
  fallbackProvider: openai,
});

Import

import { customProvider } from "ai"

API Signature

Parameters (파라미터)

  • languageModels: Record<string, LanguageModel> (선택) — 언어 모델 레코드입니다. 키는 모델 ID이고 값은 LanguageModel 인스턴스입니다.
  • embeddingModels: Record<string, EmbeddingModel<string>> (선택) — 텍스트 임베딩 모델 레코드입니다. 키는 모델 ID이고 값은 EmbeddingModel<string> 인스턴스입니다.
  • imageModels: Record<string, ImageModel> (선택) — 이미지 모델 레코드입니다. 키는 모델 ID이고 값은 이미지 모델 인스턴스입니다.
  • transcriptionModels: Record<string, TranscriptionModel> (선택) — 전사 모델 레코드입니다. 키는 모델 ID이고 값은 TranscriptionModel 인스턴스입니다.
  • speechModels: Record<string, SpeechModel> (선택) — 음성 모델 레코드입니다. 키는 모델 ID이고 값은 SpeechModel 인스턴스입니다.
  • rerankingModels: Record<string, RerankingModel> (선택) — reranking 모델 레코드입니다. 키는 모델 ID이고 값은 RerankingModel 인스턴스입니다.
  • videoModels: Record<string, VideoModel> (선택) — 비디오 모델 레코드입니다. 키는 모델 ID이고 값은 VideoModel 인스턴스입니다.
  • files: FilesV4 (선택) — 커스텀 프로바이더를 통해 노출할 파일 API 인터페이스입니다.
  • skills: SkillsV4 (선택) — 커스텀 프로바이더를 통해 노출할 스킬 API 인터페이스입니다.
  • fallbackProvider: Provider (선택) — 커스텀 프로바이더에서 요청된 모델이나 능력을 찾지 못했을 때 사용할 선택적 폴백 프로바이더입니다.

Returns (반환값)

customProvider 함수는 Provider 인스턴스를 반환합니다. 다음과 같은 메서드를 가집니다.

  • languageModel: (id: string) => LanguageModel — 커스텀 프로바이더 모델 ID로 언어 모델을 반환하는 함수입니다.
  • embeddingModel: (id: string) => EmbeddingModel<string> — 커스텀 프로바이더 모델 ID로 텍스트 임베딩 모델을 반환하는 함수입니다.
  • imageModel: (id: string) => ImageModel — 커스텀 프로바이더 모델 ID로 이미지 모델을 반환하는 함수입니다.
  • transcriptionModel: (id: string) => TranscriptionModel — 커스텀 프로바이더 모델 ID로 전사 모델을 반환하는 함수입니다.
  • speechModel: (id: string) => SpeechModel — 커스텀 프로바이더 모델 ID로 음성 모델을 반환하는 함수입니다.
  • rerankingModel: (id: string) => RerankingModel — 커스텀 프로바이더 모델 ID로 reranking 모델을 반환하는 함수입니다.
  • videoModel: (id: string) => VideoModelV4 — 커스텀 프로바이더 모델 ID로 비디오 모델을 반환하는 함수입니다.
  • files: () => FilesV4 (선택) — 직접 구성되거나 폴백 프로바이더에서 상속된 커스텀 프로바이더 파일 API 인터페이스를 반환하는 함수입니다.
  • skills: () => SkillsV4 (선택) — 직접 구성되거나 폴백 프로바이더에서 상속된 커스텀 프로바이더 스킬 API 인터페이스를 반환하는 함수입니다.

Experimental evaluation models (실험적 평가 모델)

evaluationModels: Record<string, Experimental_EvaluationModel>을 전달하여 평가 모델 인스턴스 또는 문자열 ID에 대한 별칭을 정의할 수 있습니다. 반환된 프로바이더는 evaluationModel(alias): Experimental_EvaluationModelV4를 추가합니다. 문자열 별칭은 기본적으로 Gateway를 통해, 또는 evaluationModel 메서드가 있는 명시적으로 구성된 기본 프로바이더를 통해 해석됩니다. 알 수 없는 별칭은 가능할 때 폴백 프로바이더의 evaluation 팩토리를 사용합니다. 모델 실패와 지원되지 않는 질문은 대체를 트리거하지 않습니다.

사용 불가한 평가 능력 또는 모델은 modelType: 'evaluationModel'과 함께 NoSuchModelError를 발생시키고, 알 수 없는 레지스트리 프로바이더는 NoSuchProviderError를 발생시킵니다. 이러한 능력은 구조적 확장이며 안정적인 ProviderV4 계약에 추가되지 않습니다. 직접적인 평가 문자열 ID는 기본 프로바이더가 구성되지 않았을 때 기본적으로 Gateway를 사용합니다. 실행 가능한 사용 패턴은 Evaluation을 참고하세요.

더 알아보기 (Learn more)