LLM 게이트웨이는 앱과 여러 LLM 제공자 사이에 두는 중간 프록시로, 앱은 주소 하나만 부르고 게이트웨이가 Claude·GPT·Gemini 같은 알맞은 모델로 요청을 넘긴다. 모델을 둘 이상 바꿔 가며 쓰거나 팀 단위로 키·비용·장애 대응을 한곳에서 관리할 때 쓴다.
| 항목 | 제공자 직접 호출 | LLM 게이트웨이 |
|---|---|---|
| 모델 교체 | 제공자마다 코드 수정 | 모델 이름만 변경 |
| API 키 | 앱마다 원본 키 보관 | 게이트웨이에만 보관 |
| 장애 대응 | 재시도 코드 직접 작성 | 설정으로 폴백 |
| 비용·사용량 | 제공자 콘솔마다 따로 | 한곳에서 집계 |
제공자마다 API 형식이 달라 모델을 바꿀 때마다 코드를 고쳐야 하는 문제를 풀려고 나왔다. 게이트웨이는 보통 OpenAI 호환 형식 하나로 요청을 받아 각 제공자 형식으로 바꿔 보낸다. 중계하는 김에 아래 일도 함께 맡는다.
| 기능 | 하는 일 |
|---|---|
| 로드밸런싱 | 같은 모델의 여러 키·리전에 요청을 나눈다 |
| 폴백 | 한 모델이 실패하면 다른 모델로 넘긴다 |
| 속도 제한 | 사용자·팀별 호출량을 묶는다 |
| 비용 추적 | 키·팀·모델별 사용량을 기록한다 |
LiteLLM을 직접 띄운다면 설정 파일(config.yaml)의 모델 목록에 쓸 모델과 제공자 키를 적고 litellm --config config.yaml로 프록시를 실행한다. 그다음 앱에서 OpenAI SDK의 base_url을 게이트웨이 주소로 바꾸면, model 값만 바꿔 Claude와 GPT를 같은 코드로 부를 수 있다.
직접 운영하기 싫다면 Portkey·Helicone 같은 서비스형 게이트웨이를 쓴다. 서버 없이 대시보드에서 비용과 지연 시간을 바로 볼 수 있다. 쿠버네티스에서 이미 Envoy나 APISIX로 트래픽을 관리하고 있다면, 그 위에 AI 게이트웨이 기능을 얹는 방법도 있다.
| 상황 | 판단 |
|---|---|
| 제공자 하나, 앱 하나 | 공식 SDK 직접 호출로 충분 |
| 여러 모델을 비교·교체 | 게이트웨이가 편하다 |
| 여러 팀이 키를 나눠 씀 | 게이트웨이로 키·예산 관리 |
| 끊기면 안 되는 서비스 | 폴백 설정이 유용 |
거쳐 가는 단계가 하나 늘어 지연 시간이 조금 늘고, 게이트웨이가 멈추면 모든 호출이 함께 멈춘다. 직접 운영한다면 이중화와 모니터링도 같이 챙겨야 한다.
제공자 고유 기능(도구 호출 세부 방식, 프롬프트 캐시, 추론 강도 옵션 등)은 공통 형식으로 옮기는 과정에서 빠지거나 다르게 동작할 수 있다. 내가 쓰는 기능이 그대로 전달되는지 먼저 시험해 본다. 서비스형을 쓰면 프롬프트가 제3자 서버를 거친다는 점도 고려한다.
가장 흔한 건 회사나 팀의 공용 LLM 창구로 두는 방식이다. 원본 키는 게이트웨이에만 두고, 사람이나 앱마다 따로 키를 나눠 주며 예산과 사용량을 한곳에서 본다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 사내 AI 플랫폼 | 팀별로 키를 발급하고 예산·호출량 한도를 걸어 비용을 나눠 관리 |
| 코딩 에이전트·채팅 도구 | 접속 주소를 게이트웨이로 바꿔 사내 키와 사용량 기록을 거치게 함 |
| 운영 중인 서비스 | 주 모델이 실패하거나 느려지면 다른 제공자 모델로 자동 폴백 |
| 모델 비교·교체 | model 값만 바꿔 같은 프롬프트로 여러 모델의 품질과 비용을 비교 |