LLM-API-Key-Proxy
무엇인가
LLM-API-Key-Proxy는 여러 LLM 제공자 앞에 세우는 자체 호스팅 게이트웨이다. 클라이언트는 제공자별 SDK 대신 이 프록시의 주소 하나만 바라보고, 프록시가 요청을 해당 백엔드로 넘긴다. 저장소는 FastAPI로 만든 API 프록시와 재사용 가능한 Python 라이브러리인 Resilience Library 두 부분으로 나뉜다.
어떻게 동작하나
프록시는 /v1/chat/completions(OpenAI 형식)와 /v1/messages(Anthropic 형식) 두 엔드포인트를 연다. 요청 본문의 모델 이름은 provider/model_name 형식이어야 하며, provider/ 접두사가 어느 백엔드로 라우팅할지 결정한다. 제공자 간 변환은 LiteLLM 폴백 경로가 담당한다. Resilience Library가 키 선택, 로테이션, 실패 시 페일오버, 모델별 쿨다운을 처리한다. 자격 증명은 .env 파일에 저장되고, OAuth 자격 증명은 oauth_creds/ 디렉터리에, 사용량 통계는 usage/ 디렉터리에 남는다.
무엇과 다른가
제공자마다 클라이언트 설정을 따로 두는 방식과 달리, 여기서는 PROXY_API_KEY 하나로 모든 제공자에 접근한다. Anthropic Messages API와 호환되므로 Claude Code나 Anthropic SDK 클라이언트를 Gemini, OpenAI 같은 비-Anthropic 모델에 그대로 연결할 수 있다. Gemini CLI처럼 다른 곳에서는 제공하지 않는 제공자도 포함한다.
어떻게 쓰나
Windows에서는 릴리스 압축을 풀고 proxy_app.exe를 실행하면 대화형 TUI 런처가 열린다. 소스에서 실행할 때 --host, --port 같은 인자를 주면 TUI를 건너뛰고 바로 서버가 뜬다. Docker 이미지와 Docker Compose 구성도 제공된다. 클라이언트에는 base URL http://127.0.0.1:8000/v1, API 키 PROXY_API_KEY, 모델 provider/model_name을 넣는다. /v1/models로 사용 가능한 모델 목록을 가져올 수 있고, ?enriched=false를 붙이면 가격 정보 없는 최소 응답을 받는다.
전제와 한계
모델 이름에 provider/ 접두사를 생략할 수 없다. LiteLLM 폴백 경로를 쓰는 제공자는 LiteLLM이 지원하는 범위에 묶인다. OAuth 제공자는 로컬에서 먼저 인증을 마친 뒤 oauth_creds/를 마운트하거나 자격 증명을 환경 변수로 내보내야 한다. Docker Compose로 사용량 통계를 호스트에 남기려면 실행 전에 usage/ 디렉터리를 만들어야 한다. 쿨다운은 모델 단위로 10초, 30초, 60초, 120초 순으로 늘어난다.
관련 논문 1
유사 도구
- litellm100개 이상 LLM 제공자를 OpenAI 포맷 단일 엔드포인트로 중계하는 오픈소스 AI 게이트웨이다. 가상 키·비용 추적·로드밸런싱을 프록시 계층에서 처리한다.
- tensorzeroLLM 게이트웨이·관측성·평가·최적화·실험을 하나의 자체 호스팅 서버로 묶은 Rust 기반 LLMOps 플랫폼이다.
- optillmOpenAI 호환 API 요청을 가로채 추론 시점 최적화 기법을 끼워 넣는 Python 프록시다. 모델 재학습 없이 추론 정확도를 높인다.
- Rapid-MLXApple Silicon에서 MLX로 모델을 돌리며 OpenAI·Anthropic 호환 엔드포인트를 여는 로컬 추론 서버다. 클라이언트 수정 없이 교체한다.
- open-webuiOllama와 OpenAI 호환 API를 하나의 웹 화면으로 묶는 셀프 호스팅 AI 플랫폼이다. 플러그인·RAG·RBAC를 내장하고 완전 오프라인 실행을 지원한다.
- lemonade로컬 GPU와 NPU에서 LLM·음성·이미지 모델을 실행하고 OpenAI·Anthropic·Ollama 호환 API로 노출하는 C++ 추론 서버다.