Rubberduck🦆: 주요 LLM 제공자의 API를 에뮬레이션하는 LLM API Caching Reverse Proxy Server

9bow
Sun, 24 Aug 2025 05:30:52 +0000
읽을거리&정보공유

Rubberduck 소개

최근 몇 년간 OpenAI, Anthropic, Google, Microsoft 같은 주요 기업들이 제공하는 대규모 언어 모델(LLM)을 활용한 서비스가 폭발적으로 늘어나고 있습니다. 하지만 LLM API를 직접 호출하면서 개발하거나 테스트를 진행하다 보면 여러 가지 어려움이 있습니다. 예를 들어, 네트워크 지연이나 속도 제한, 예측 불가능한 에러가 발생할 수 있고, 이런 문제는 실제 서비스 환경에서 갑자기 드러나는 경우가 많습니다. 또한 API 호출 비용도 무시하기 힘든 수준입니다.

이런 상황에서 유용하게 사용할 수 있는 도구가 바로 Rubberduck입니다. Rubberduck은 로컬 환경에서 동작하는 **LLM 캐싱 리버스 프록시 서버(LLM API Caching Reverse Proxy Server)**로, OpenAI, Anthropic, Azure OpenAI, AWS Bedrock, Google Vertex AI 등 주요 LLM 제공자의 API를 에뮬레이션할 수 있습니다. 즉, 실제 환경과 거의 똑같은 방식으로 동작하면서도 비용 부담 없이 다양한 상황을 시뮬레이션할 수 있습니다.

개발자는 Rubberduck을 통해 요청/응답 캐싱, 실패 주입, 속도 제한, 토큰 사용량 추적, 사용자별 프록시 인스턴스 격리 등을 손쉽게 테스트할 수 있습니다. 또한 React 기반의 직관적인 웹 대시보드도 제공하여 프록시 생성과 모니터링을 시각적으로 쉽게 할 수 있습니다.

많은 개발자들이 OpenAI API나 Anthropic API를 이용해 챗봇, 문서 요약, 코드 보조 도구 등을 만들고 있습니다. 하지만 이 과정에서 다음과 같은 고민이 생깁니다:

비용 문제: 매번 실제 API를 호출하면 토큰 사용량이 쌓여 금방 비용이 올라갑니다.

불안정성 문제: API 제공자가 속도 제한을 걸거나, 간헐적인 에러를 반환할 수 있는데 이를 테스트하기 어렵습니다.

테스트 어려움: 로컬 개발 환경에서 QA 테스트를 할 때, 다양한 네트워크 상황을 재현하기 어렵습니다.

Rubberduck은 이런 문제를 해결하기 위해 만들어졌습니다. 마치 “LLM API의 샌드박스 환경”이라고 생각하면 이해하기 쉽습니다.

Rubberduck의 주요 기능

LLM Provider의 API 에뮬레이션

Rubberduck은 OpenAI, Anthropic, Google, Microsoft, AWS 같은 주요 LLM 제공자를 그대로 흉내냅니다. 예를 들어, OpenAI SDK를 사용할 때 단순히 base_url만 변경하면 Rubberduck을 통해 호출이 가능하며, 실제 API 호출과 동일하게 동작합니다.

import openai

client = openai.OpenAI(
    api_key="your-openai-key",
    base_url="http://localhost:8001"  # Rubberduck 프록시 포트
)

response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "안녕하세요!"}]
)

캐싱 기능

성공적인 응답(2xx)만 캐싱

동일 요청이 반복되면 즉시 응답 반환 → 비용 절감 및 속도 향상

프록시 인스턴스별 캐시 무효화 가능

실패 시뮬레이션

실제 환경에서는 다양한 에러가 발생할 수 있습니다. Rubberduck은 이런 상황을 직접 재현할 수 있게 해줍니다.

Timeout: 응답 지연 혹은 무한 대기 시뮬레이션

Error Injection: 429(속도 제한), 500(서버 에러), 400(잘못된 요청) 등 원하는 에러율 설정

Rate Limiting: LLM 제공자의 현실적인 속도 제한 상황 재현

로깅과 모니터링

요청별 토큰 사용량, 응답 시간, 캐시 적중률 추적

CSV/JSON 내보내기 지원 → 분석 도구와 연계 가능

전체 프록시 상태를 실시간으로 확인 가능한 대시보드 제공

Web UI

React 기반의 대시보드에서 클릭 몇 번으로 프록시를 생성하고 관리할 수 있습니다.

로그 스트리밍, 사용자 계정 관리, 설정 변경도 가능합니다.

라이선스

Rubberduck 프로젝트는 MIT 라이선스로 배포되며, 상업적 사용에도 제약이 없습니다.

Rubberduck 프로젝트 GitHub 저장소

https://github.com/Zipstack/rubberduck

이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.

파이토치 한국 사용자 모임 이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일 로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

아래 쪽에 좋아요 를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~

1개의 게시물 - 1명의 참여자

전체 주제 읽기