`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을 참고하세요.