커스텀 프로바이더 작성

커스텀 프로바이더 작성 (Language Model Specification)

AI SDK는 Language Model Specification V4를 제공해, AI SDK와 호환되는 커스텀 프로바이더를 만들 수 있게 합니다. 이 스펙은 서로 다른 프로바이더 사이의 일관성을 보장하며, 여러분의 앱 코드가 프로바이더에 독립적(provider-agnostic)이고 미래 지향적으로 유지되도록 하는 통합 추상화 계층을 제공합니다.

출처: 공식문서

본문

배포

커스텀 프로바이더는 자신의 GitHub 저장소와 NPM 패키지로 게시하고, 호스팅·유지보수는 직접 책임집니다. 게시 후 AI SDK 저장소에 PR을 보내 Community Providers 문서 섹션에 추가할 수 있습니다. 문서는 OpenRouter 프로바이더 문서를 템플릿으로 사용합니다.

V4 스펙 아키텍처

V4 스펙은 세 가지 핵심 인터페이스를 정의합니다:

  • ProviderV4 — 여러 모델 타입의 팩토리 역할을 하는 최상위 인터페이스
  • LanguageModelV4 — 텍스트 생성 모델의 기본 인터페이스
  • EmbeddingModelV4 / ImageModelV4 — 임베딩·이미지 생성 인터페이스

ProviderV4 인터페이스는 진입점 역할을 합니다:

interface ProviderV4 {
  languageModel(modelId: string): LanguageModelV4;
  embeddingModel(modelId: string): EmbeddingModelV4<string>;
  imageModel(modelId: string): ImageModelV4;
}

LanguageModelV4 인터페이스는 프로바이더가 구현해야 할 메서드를 정의합니다:

interface LanguageModelV4 {
  specificationVersion: 'V4';
  provider: string;
  modelId: string;
  supportedUrls: Record<string, RegExp[]>;

  doGenerate(options: LanguageModelV4CallOptions): Promise<GenerateResult>;
  doStream(options: LanguageModelV4CallOptions): Promise<StreamResult>;
}

핵심 사항:

  • specificationVersion — 반드시 'V4'.
  • supportedUrls — 프로바이더가 네이티브로 처리할 수 있는 (파일 파트용) URL 선언.
  • doGenerate/doStream — 비스트리밍·스트리밍 생성 메서드.

입력 vs 출력

  • LanguageModelV4Content — 모델이 생성하는 것의 스펙.
  • LanguageModelV4Prompt — 모델로 보내는 것의 스펙.

V4는 모델이 생성할 수 있는 텍스트 콘텐츠 등 여러 콘텐츠 타입과 다양한 프롬프트 타입을 지원합니다.

규칙

  • 오픈소스 프로바이더라면 Community Providers 섹션에 추가되도록 PR을 보내 환영받습니다.
  • 여러분의 앱은 V4 스펙 덕분에 현재와 미래의 모든 AI 프로바이더에서 동일한 패턴·메서드로 상호작용할 수 있습니다.

더 알아보기