이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.
TL;DR
llm-mock은 LLM API 호출을 기록하고 재사용하여 결정론적 테스트 환경을 제공하는 파이썬 라이브러리이다. 실제 API 호출을 HTTP 계층에서 가로채 JSON 파일로 저장함으로써 테스트 시 네트워크 비용과 비결정성을 제거한다. pytest와 통합되어 별도의 코드 수정 없이 기존 파이프라인에 적용 가능하다. 개발자는 기록 모드에서 실제 API 응답을 저장하고, 이후 테스트에서 이를 재사용하여 오프라인 환경에서도 테스트를 수행한다.
배경
Python 3.10+, pytest
대상 독자
LLM 애플리케이션 개발자
의미 / 영향
LLM 기반 애플리케이션의 테스트 비용과 비결정성 문제를 해결하여 개발 생산성을 높인다. 특히 CI/CD 환경에서 외부 API 의존성을 제거하여 안정적인 배포 파이프라인 구축을 지원한다.
섹션별 상세
LLM API 호출의 비결정성과 비용 문제는 CI/CD 환경에서 테스트를 어렵게 만든다. llm-mock은 HTTP 전송 계층을 가로채어 API 응답을 로컬 JSON 파일로 저장하고 이를 재사용하는 방식을 채택한다.
기록 모드에서는 실제 API 키를 사용하여 응답을 저장하고, 재생 모드에서는 저장된 JSON 픽스처를 사용하여 네트워크 호출 없이 테스트를 수행한다. 이 과정에서 애플리케이션 코드는 수정할 필요가 없다.
python
with llm_mock(mode="record", fixture="tests/fixtures/summarize"):
result = my_pipeline("Summarize this document...")실제 LLM API 호출을 기록하여 JSON 픽스처로 저장하는 예시
근거
- llm-mock은 HTTP 전송 계층을 가로채므로 애플리케이션 코드 수정이 필요 없다. — How it works 섹션
- 요청 매칭은 모델, 메시지, 온도의 SHA256 해시를 사용한다. — How it works 섹션
pytest 데코레이터와 컨텍스트 매니저를 지원하여 테스트 코드 내에서 간편하게 모드 전환이 가능하다. 요청은 모델, 메시지, 온도(temperature)의 SHA256 해시를 기준으로 매칭되어 정확한 응답을 보장한다.
python
@pytest.mark.llm_replay(fixture="summarize")
def test_summarize():
result = my_pipeline("Summarize this document...")
assert "key points" in result저장된 픽스처를 사용하여 네트워크 호출 없이 테스트를 수행하는 예시
Anthropic과 OpenAI SDK를 지원하며, 테스트 실행 시 API 키 없이도 즉각적인 응답을 반환하여 개발 속도와 테스트 효율을 높인다.
용어 해설
- Deterministic Testing
- — 동일한 입력에 대해 항상 동일한 결과를 반환하는 테스트 방식. LLM의 비결정적 특성을 제어하여 테스트 신뢰성을 확보하는 데 필수적이다.
- Fixture
- — 테스트 실행 전후에 필요한 데이터나 환경을 설정하는 단위. 여기서는 LLM API 응답 데이터를 JSON 파일로 저장하여 재사용하는 용도로 활용된다.
- HTTP Interception
- — 네트워크 요청을 중간에서 가로채어 실제 서버로 보내지 않고 미리 정의된 응답을 반환하는 기술. 외부 API 의존성을 제거하고 테스트 속도를 높인다.
언급된 리소스
GitHubllm-mock GitHub
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 05. 21.수집 2026. 05. 21.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.