피드로 돌아가기
Stop hardcoding AI providers: a generic client approach
Dev.toDev.to
AI/ML

Abstract Base Client 도입을 통한 AI Provider Lock-in 해소 및 유지보수 비용 절감

Stop hardcoding AI providers: a generic client approach

绍杉 贾2026년 5월 27일7intermediate

Context

특정 AI Provider API에 의존한 하드코딩 구조로 인해 모델 교체 시 코드 전면 수정이 필요한 API Lock-in 문제 발생. 단순 if-else 분기 처리는 Provider 증가에 따라 코드 복잡도가 기하급수적으로 증가하며 테스트 가능성을 저하시키는 병목 지점으로 작용.

Technical Solution

  • AIProvider라는 Abstract Base Class를 정의하여 chat 및 chat_stream 메서드의 표준 Interface 강제
  • OpenAIProvider, InterwestProvider 등 구체 클래스에서 각 Provider별 API 포맷과 인증 방식을 캡슐화
  • AIClient 클래스가 추상화된 Interface에만 의존하게 하여 런타임 시 Provider 주입이 가능한 Dependency Injection 구조 설계
  • HTTPX 및 Asyncio를 활용한 비동기 처리로 서로 다른 Streaming 방식(SSE, Chunked encoding)을 단일 AsyncIterator로 통합
  • Provider별 상이한 응답 스키마를 표준 텍스트 포맷으로 변환하는 Adapter 패턴 적용

1. 다수 LLM 도입 가능성이 있다면 초기 설계 단계부터 Provider Interface 추상화 적용

2. Provider별 상이한 Rate Limit 및 Error Code 처리를 위해 Wrapper 레벨의 Error Handling 전략 수립

3. Function Calling 등 Provider 특화 기능 필요 시 Interface 확장 또는 별도 Strategy 패턴 도입 검토

4. 자체 구현 전 LiteLLM과 같은 기존 추상화 라이브러리의 기능 범위와 제어권 수준 비교 분석

원문 읽기