Skip to content

Mock LLM Server ​

로컬 개발 환경 및 CI/CD 파이프라인에서 실제 LLM API 호출 없이도 초고속으로 대형 언어 모델의 응답 스펙을 모사(Mocking)해주는 테스트용 에뮬레이터 서버입니다.

📌 Status & Repository ​

  • 상태: Stable
  • 역할: 테스트에서 LLM 오류 응답과 지연을 재현하는 보조 서버
  • 라이선스: MIT
  • 주요 언어: Rust, Go

1. Problem ​

AI 에이전트나 Gateway 서비스를 테스트할 때 실제 외부 LLM API(OpenAI, Claude 등)를 호출하면 테스트가 Provider 상태에 종속됩니다. 응답 지연, Rate Limit과 네트워크 오류 때문에 같은 입력도 일관되게 재현하기 어렵습니다.

2. Why I Built It ​

OpenAI 및 vLLM 규격의 HTTP API 응답 스키마를 100% 모방하되, 실제 거대 연산(추론)을 돌리지 않고 사전에 설계된 템플릿 텍스트 또는 스트리밍 토큰 청크를 즉각 밀어주어, 단 1ms 미만의 지연시간 내에 신뢰할 수 있는 모사 응답을 제공하는 고속 검증 서버를 구축했습니다.

3. Scope ​

  • /v1/chat/completions 및 /v1/embeddings API 스키마 모사
  • 스트리밍 응답(stream: true)의 Server-Sent Events(SSE) 프로토콜 토큰 전송 시뮬레이션
  • 특정 키워드 수신 시 지정된 지연시간(Latency simulation) 또는 의도된 HTTP 오류 코드(429, 502 등) 반환 기능
  • Pydantic 규격에 호환되는 더미 토큰 생성

4. Architecture ​


5. Request Flow ​


6. Key Design Decisions ​

  • 경량 무의존성 단일 바이너리: 실제 파이썬 기반 추론 스택(vLLM)을 전혀 올리지 않기 때문에, 수 메가바이트 크기의 가볍고 빠른 단일 바이너리로 구동할 수 있어 CI/CD 컨테이너 내에서 단 10ms 만에 즉시 실행됩니다.
  • 룰 기반 예외 상황 주입: 단순히 더미 텍스트만 주는 것이 아니라, "특정 프롬프트가 들어올 시 10초 딜레이", "특정 헤더 누락 시 401 반환" 등 복잡한 에지 케이스 테스트 시나리오를 구성할 수 있도록 룰 엔진을 도입했습니다.

7. Security Considerations ​

  • 로컬 또는 격리된 CI 파이프라인 내부에서만 바인딩되어 외부 트래픽 유입에 무관하며, 내부망 밖으로 실 데이터가 흘러나갈 가능성을 원천적으로 배제합니다.

8. Observability ​

  • 매 API 쿼리 및 매칭된 모사 규칙에 대한 로그를 표준 출력으로 명확하게 덤프하여 개발자가 어떤 목업 룰이 매칭되었는지 확인하기 쉽도록 제공합니다.

9. Technology Stack ​

  • Engine: Rust (Axum / Tokio) 또는 Go (Gin)
  • Format: JSON, Server-Sent Events

10. Running Locally ​

로컬에서 8080 포트로 목업 서버를 즉시 띄울 수 있습니다.

bash
# 로컬 백엔드 서버 가동 (OpenAI API 모사 포트: 8080)
mock-llm --port 8080

11. Current Limitations ​

  • 사전에 고정 정의되거나 정해진 단순 규칙 이외의 복잡한 추론 로직(자유도 높은 문맥 응답)은 흉내 낼 수 없어, 고차원 에이전트의 판단 논리 루프 검증에는 어려움이 있습니다.

12. Next Steps ​

  • OpenAI Assistant API 스펙 추가 모사 및 다중 대화 세션 컨텍스트 저장 시뮬레이션 지원.

마지막 수정:

Boundary · Execution · Verification · Operation