런타임에 LLM 모델을 자동 발견하고 tier로 라우팅해보자
공급자 API를 직접 질의해 가용 모델을 실시간으로 발견하고 능력 기준으로 tier를 분류해 요청 특성에 맞는 모델로 자동 라우팅했다
런타임에 LLM 모델을 자동 발견하고 tier로 라우팅해보자
런타임에 LLM 모델을 자동 발견하고 tier로 라우팅해보자
공급자마다 가용 모델 목록이 수시로 바뀌어서 설정 파일을 손으로 갱신하는 게 번거로웠다. 공급자 API를 런타임에 직접 질의해 모델을 발견하고 이름 패턴으로 tier를 자동 분류하도록 바꿨다.
1. 서론 (Introduction)
- 문제/상황 (Problem): 공급자가 새 모델을 출시하거나 기존 모델을 내려도 설정 파일을 수동으로 고쳐야 했다. 반영이 늦으면 구버전 모델로 요청이 계속 가거나 존재하지 않는 모델 오류가 났다.
- 목적 (Purpose): 공급자 API를 런타임에 질의해 현재 가용 모델을 자동 발견하고, 이름 패턴으로 tier를 분류해 요청 특성에 맞게 라우팅한다.
- 대상 (Target Audience): 여러 LLM 공급자·모델을 동시에 운영하는 개발자.
2. 방법 및 과정 (Methods & Process)
배경 조사 및 데이터 (Data Collection): 더미 provider의
list_models()가 돌려주는 모델 5개(gemini-2.5-pro,gemini-2.5-flash,gpt-4-mini,claude-3-haiku,llama-3-70b)로 분류 로직을 검증했다.tier 판정 키워드 매칭된 모델 premium pro, opus, ultra gemini-2.5-pro standard (키워드 매칭 없을 때 기본값) llama-3-70b cheap mini, flash, haiku, nano, lite gemini-2.5-flash, gpt-4-mini, claude-3-haiku - 접근 방법 (Approach Methods):
- [방법 1]: 모델명 문자열에 tier별 키워드가 포함되는지 검사해
cheap/standard/premium3단계로 분류한다. 키워드가 없으면standard로 취급한다. - [방법 2]: 요청받은 tier에 가용 모델이 없으면 tier 순위(
cheap<standard<premium)를 따라 상위 tier로 순차 업그레이드한다.
- [방법 1]: 모델명 문자열에 tier별 키워드가 포함되는지 검사해
- 분석 및 해결 프로세스 (Analysis Flow):
- 도구/기술: Python 표준 라이브러리 +
dict기반 tier 버킷. 외부 SDK 의존 없이 이름 패턴만으로 동작. - 주요 단계:
list_models()호출 $\rightarrow$classify_tier로 모델별 tier 판정 $\rightarrow$ tier 버킷 구성 $\rightarrow$route()로 요청 tier에 맞는 모델 선택(없으면 업그레이드). - 결과 도출 및 검증: 더미 provider 5개 모델에 대해 cheap 3개, standard 1개, premium 1개로 정확히 분류됨을 확인했다. cheap 버킷을 비운 실험에서는 standard 모델로 자동 업그레이드되는 것도 확인했다.
- 도구/기술: Python 표준 라이브러리 +
3. 결과 (Results)
- 분석 결과 요약: cheap(
gemini-2.5-flash,gpt-4-mini,claude-3-haiku) 3개, standard(llama-3-70b) 1개, premium(gemini-2.5-pro) 1개로 분류됐다. 요청 tiercheap/standard/premium각각에 대해 해당 tier의 첫 모델이 정확히 선택됐다. cheap 버킷을 비운 시나리오에서는 standard 모델(gpt-4-mini-standin)로 자동 승격됐다.
4. 인사이트 및 액션 (Insights & Action)
- 인사이트 (Insight): 모델 발견을 자동화하면 공급자 업데이트에 코드·설정 변경 없이 적응한다. 다만 키워드 매칭은 이름에 tier를 유추할 단서가 없는 신규 모델을 전부 standard로 뭉뚱그린다는 한계가 그대로 남는다.
- 실행 방안 (Action Plan): 발견된 모델 목록을 캐싱해두면 공급자 API 장애 시에도 마지막으로 알려진 목록으로 계속 운영할 수 있다. tier 버킷이 비었을 때 업그레이드 로그를 남기면 운영 중 tier 불균형도 바로 확인된다.
- 한 줄 결론 (Key Takeaway): 런타임 모델 발견 + 키워드 기반 tier 분류로 공급자 변화가 설정 변경 없이 자동 반영된다. 샘플 코드
- 다음 스텝 (Next Step): 키워드 목록에 없는 신조어 모델명(예: 코드네임만 있는 프리뷰 모델)은 여전히 standard로 오분류된다. 공급자가 제공하는 실제 벤치마크 메타데이터를 tier 판정에 함께 반영하는 방향이 남아 있다.
This post is licensed under CC BY 4.0 by the author.