피드로 돌아가기
Dev.toAI/ML
원문 읽기
Abstract Base Client 도입을 통한 AI Provider Lock-in 해소 및 유지보수 비용 절감
Stop hardcoding AI providers: a generic client approach
AI 요약
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과 같은 기존 추상화 라이브러리의 기능 범위와 제어권 수준 비교 분석