섹션별 상세
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 픽스처로 저장하는 예시
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 가로채기(HTTP Interception)
- — 네트워크 요청을 중간에서 가로채어 실제 서버로 보내지 않고 미리 정의된 응답을 반환하는 기술. 외부 API 의존성을 제거하고 테스트 속도를 높인다.
기술
- Python
- pytest
- httpx
- Anthropic SDK
- OpenAI SDK
활용 사례
- LLM 단위 테스트
- CI/CD 파이프라인
- 비용 절감 테스트
언급된 리소스
GitHubllm-mock GitHub
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 05. 21.수집 2026. 05. 21.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.