본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 15. 06:16

sxueck/llm-gateway

요약

sxueck/llm-gateway는 프로덕션 환경에 최적화된 LLM 관리 시스템으로, 500억 토큰 이상의 부하를 처리한 안정성을 자랑합니다. 다양한 LLM 제공업체를 통합 관리하며 가상 키, 라우팅, PII 보호 및 실시간 모니터링 기능을 제공합니다.

핵심 포인트

  • OpenAI, Anthropic 등 20개 이상의 LLM 제공업체 통합 지원
  • 가상 키를 통한 속도 제한(Rate Limiting) 및 액세스 제어
  • 부하 분산 및 장애 조치를 위한 지능형 라우팅 설정
  • 개인 식별 정보(PII) 자동 감지 및 비식별화 기능
  • 실시간 상태 모니터링 및 대시보드 제공

프로덕션급 LLM 게이트웨이 관리 시스템, 배포 6개월 만에 500억 토큰 이상의 안정적인 부하 처리 달성 (지속적으로 누적 중). 여러 LLM 제공업체, 가상 키(Virtual Key), 라우팅 설정 및 모델 관리를 위한 직관적인 Web UI 인터페이스를 제공합니다.

기능설명
제공업체 관리20개 이상의 주요 LLM 제공업체 지원: OpenAI, Anthropic, Google, DeepSeek 등
가상 키가상 API 키 생성 및 관리, 속도 제한(Rate Limiting) 및 액세스 제어 지원
라우팅 설정부하 분산(Load Balancing) 및 장애 조치(Failover) 전략을 통한 서비스 가용성 향상
모델 관리모든 제공업체의 모델을 통합 관리, 일괄 가져오기 및 사용자 정의 설정 지원
멀티 엔드포인트 지원/v1/chat/completions, /v1/responses, /v1/messages 등의 엔드포인트와 호환
상태 모니터링로그인 없이 접근 가능한 상태 체크 페이지, 모델 가용률, 지연 시간 분위수(P50/P95) 및 에러 분포를 실시간 전시
사용자 인증JWT 기반의 보안 인증 메커니즘
실시간 모니터링대시보드를 통해 시스템 상태 및 설정 정보 전시
중계 스테이션 지원Codex 등 상위(Upstream)에서 강제로 주입하는 프롬프트(Prompt)를 격리하여, 하위(Downstream) 애플리케이션이 프롬프트를 더 규격화된 방식으로 따를 수 있도록 함
내장 PII 보호요청 내 개인 식별 정보(PII)를 자동 감지 및 비식별화, 스트리밍 응답 복구 지원
의존성버전 요구사항설명
Node.js>= v22런타임 환경
...
# 저장소 클론
git clone https://github.com/sxueck/llm-gateway.git
cd llm-gateway
...

.env 파일을 생성하고 환경 변수를 설정합니다:

cp .env.example .env

.env 파일을 편집합니다 (최소한 MySQL과 JWT_SECRET 설정이 필요합니다):

PORT=3000
NODE_ENV=development
LOG_LEVEL=info
...

중요: 프로덕션 환경에서는 반드시 JWT_SECRET을 강력한 랜덤 문자열(최소 32자 이상)로 수정하십시오.

# 백엔드(3000)와 프론트엔드(5173)를 동시에 시작
bun run dev:all
서비스주소
Web UIhttp://localhost:5173
Backend APIhttp://localhost:3000

개별 시작:

# 백엔드만 시작
bun run dev:backend
# 프론트엔드만 시작
...

프로덕션 빌드 및 시작 (프론트엔드/백엔드 분리 배포):

# 프론트엔드 및 백엔드 빌드
bun run build
# 백엔드 시작 (프로덕션 모드)
...

팁: 프론트엔드 결과물은 packages/web/dist에 위치하며, Nginx 또는 정적 파일 서버를 사용하여 별도로 배포하십시오.

Docker 배포 가이드를 참조하십시오.

공급업체 추가 - DeepSeek와 같은 AI 서비스 제공업체를 추가하고 공급업체 키를 입력합니다.
모델 추가 - 공급업체가 제공하는 AI 모델(예: DeepSeek의 deepseek-chat)을 추가합니다.
가상 키 생성 - LLM Gateway의 API에 액세스하는 데 사용됩니다.
(선택 사항) 프롬프트 관리 규칙 구성 - 프롬프트의 동적 수정 및 강화를 구현합니다.
가상 키를 사용하여 API 액세스 - 애플리케이션에서 LLM Gateway를 호출합니다.

LLM Gateway는 공개 상태 모니터링 페이지를 제공하며, 로그인 없이도 접근하여 각 모델의 가용성과 성능 지표를 실시간으로 확인할 수 있습니다.

  • "시스템 설정 -> 모니터링 설정"에서 "지속적 모니터링 활성화"를 켭니다.
  • 처음 활성화할 때 시스템은 자동으로 "모니터링 전용 가상 키"를 생성합니다:
    • 모든 모델에 대한 액세스 권한을 가집니다.
    • 상태 체크 전용으로만 사용됩니다.
    • 기본적으로 요청 본문/응답 본문 로그는 비활성화됩니다.

"지속적 모니터링"이 활성화된 상태에서만 다음 기능이 작동합니다:

  • 백엔드 상태 체크 스케줄러 실행 (대상에 대해 주기적으로 상태 체크 수행)
  • 공개 모니터링 페이지 및 관련 인증 없는 API 접근 가능

팁: 언제든지 "지속적 모니터링"을 끌 수 있으며, 끌 경우 스케줄러가 중단되고 공개 접근이 차단됩니다 (공개 엔드포인트는 404 반환).

http://your-gateway-url/status에 접속하면 상태 모니터링 페이지를 볼 수 있습니다.

실시간 상태 모니터링 - 구성된 모든 모델 대상의 현재 상태(정상/성능 저하/다운)를 표시
가용률 통계 - 1시간 및 24시간 가용률 표시
지연 시간 지표 - P50 및 P95 지연 시간 통계
에러 추적 - 에러 유형 및 에러 메시지를 기록하고 표시
자동 새로고침 - 기본 60초마다 데이터 자동 새로고침
상세 이력 - 대상을 클릭하여 상세한 체크 이력을 확인 가능

상태 모니터링은 다음과 같은 공개 API 엔드포인트를 제공합니다 (인증 불필요):

엔드포인트 (Endpoint)설명
GET /public/health/summary모든 대상의 요약 정보 가져오기
GET /public/health/targets대상 목록 가져오기
GET /public/health/detail?target_id=xxx단일 대상의 상세 정보 가져오기
GET /public/health/runs?target_id=xxx&window=24h&page=1&page_size=50체크 이력 가져오기

상태 체크 (Health Check) 대상은 데이터베이스를 통해 설정하며, 모든 모델 또는 가상 모델에 대해 상태 체크를 설정할 수 있습니다:

-- 예시: 모델에 상태 체크 추가
INSERT INTO health_targets (id, name, type, target_id, enabled, check_interval_seconds, check_prompt)
VALUES ('target-1', 'DeepSeek Chat', 'model', 'model-id-here', 1, 300, 'Say "OK"');

주요 설정 파라미터 (Parameters):

파라미터설명기본값
check_interval_seconds체크 주기 (초)300초 (5분)
check_prompt상태 체크에 사용되는 프롬프트 (Prompt)"Say 'OK'"
check_config타임아웃(Timeout), 재시도(Retry) 등의 파라미터를 설정할 수 있는 JSON 설정-

상태 모니터링 API는 기본적으로 속도 제한 (Rate Limiting) 보호가 활성화되어 있습니다:

  • 각 IP당 분당 최대 60개의 요청
  • 제한 초과 시 429 에러 반환

Issue 및 Pull Request 제출을 환영합니다!

MIT License - LLM Gateway

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0