Provider·모델 관리

Provider·모델 관리 (Provider & Model Management)

애플리케이션이 규모가 커지면 여러 provider·모델이 등장하고, 코드 곳곳에 모델 ID가 박히면서 관리가 어려워집니다. AI SDK 5는 글로벌 provider 설정, Provider Registry(레지스트리), 커스텀 provider, 미들웨어를 조합해 모델 관리를 중앙화하는 방법을 제공합니다.

출처: 공식문서

본문

글로벌 provider 설정

AI SDK 5의 글로벌 provider 기능을 쓰면, 모델을 평범한 모델 ID 문자열 하나만으로 지정할 수 있습니다. gateway의 Gateway 탭에서 "xai/grok-4.6"처럼 providerId/modelId 형태를 쓰거나, 커스텀 provider별로 문자열을 매핑해 씁니다. 이렇게 하면 호출 코드가 특정 provider에 결합되지 않아 이식성이 높아집니다.

커스텀 provider 결합

커스텀 provider를 직접 만들 때는 런타임에 주입되는 레거시 생성자(예: createOpenAI(...))나 모델 ID 기반 방식이 있고, 보안·인증이 필요한 환경에서는 ModelRegistry와 함께 resolve 콜백으로 지연(lazy) 생성하는 패턴을 권장합니다. 모델이 실제로 요청될 때만 생성되므로 민감 정보 노출을 줄입니다.

Provider Registry + 미들웨어

createProviderRegistrywrapLanguageModel을 조합하면 모델에 **별칭(alias)**과 기본 설정·검증을 부여할 수 있습니다.

  • 모델 이름 별칭: 여기서는 anthropic > fast, anthropic > writing, anthropic > reasoning으로 지정
  • 사전 설정: anthropic > reasoning 모델에 기본 설정을 미리 심어 둠
  • provider 전용 옵션 검증: AnthropicLanguageModelOptions로 타입 검증
// 확장된 추론 모델 구성
reasoning: wrapLanguageModel({
  model: anthropic('claude-sonnet-4-5'),
  middleware: defaultSettingsMiddleware({
    settings: { maxOutputTokens: 100000 }, // 예시 기본 설정
  }),
})
// 사용 예 — 레지스트리가 중앙 관리하므로 모델 스위칭이 쉬움
const model = registry.languageModel('anthropic > reasoning');

이렇게 하면 애플리케이션 코드는 registry.languageModel('...')만 호출하고, provider·모델·설정 변경은 레지스트리 정의 한 곳에서만 수정하면 됩니다.

미들웨어와의 관계

Provider 관리와 미들웨어는 함께 쓰일 때 힘이 납니다. defaultSettingsMiddleware로 모델별 기본 설정을, defaultInstructionsMiddleware로 기본 지시문을 적용하는 식으로, 레지스트리가 내놓은 모델에 공통 동작을 얹습니다. 자세한 설정 방식은 Language Model Middleware 문서를 참고합니다.

더 알아보기