핵심 요약
LLM 기반 애플리케이션 개발 시 실제 API 호출은 비용 발생, 타임아웃, 비결정론적 응답으로 인해 테스트 자동화의 걸림돌이 된다. llmock은 이러한 문제를 해결하기 위해 OpenAI, Claude, Gemini API를 완벽하게 흉내 내는 로컬 HTTP 서버를 제공한다. 이 도구는 실제 포트에서 실행되어 모든 프로세스가 접근 가능하며, SSE 스트리밍과 WebSocket 통신을 지원하여 실제 운영 환경과 유사한 테스트를 가능하게 한다. 특히 매일 실제 API와의 정렬 상태를 확인하는 드리프트 감지 기능을 통해 모킹 데이터의 신뢰성을 보장한다.
배경
Node.js 및 npm/pnpm 패키지 관리자, OpenAI, Anthropic, Gemini 등 LLM API 사용 경험, 기본적인 E2E 테스트 프레임워크(Playwright 등) 지식
대상 독자
LLM 기반 에이전트나 복잡한 RAG 시스템을 개발하고 자동화된 E2E 테스트를 구축하려는 개발자
의미 / 영향
llmock은 LLM 애플리케이션 개발 주기에서 테스트 비용을 획기적으로 낮추고 CI/CD 파이프라인의 속도를 개선한다. 특히 실제 API와의 정렬을 보장하는 드리프트 감지 기능은 모킹 도구의 고질적인 문제인 '현실과의 괴리'를 해결하여 개발자가 안심하고 모킹 데이터를 신뢰할 수 있게 한다.
섹션별 상세
{
"fixtures": [
{
"match": {
"userMessage": "stock price of AAPL"
},
"response": {
"content": "The current stock price of Apple Inc. (AAPL) is $150.25."
}
}
]
}특정 사용자 메시지에 대해 텍스트 응답을 반환하도록 설정하는 JSON 피스처 예시
import { LLMock } from "@copilotkit/llmock";
const mock = new LLMock({ port: 5555 });
mock.loadFixtureDir("./fixtures/openai");
const url = await mock.start();
process.env.OPENAI_BASE_URL = `${url}/v1`;
process.env.OPENAI_API_KEY = "mock-key";llmock 서버를 시작하고 환경 변수를 설정하여 API 호출을 가로채는 TypeScript 코드
실무 Takeaway
- 비용과 지연 시간이 발생하는 실제 LLM API 대신 llmock을 사용하면 로컬 환경에서 1ms 미만의 응답 속도로 결정론적인 E2E 테스트를 수행할 수 있다.
- JSON 피스처에 Predicate 로직을 결합하여 시스템 프롬프트 상태나 대화 맥락에 따른 정교한 에이전트 응답 시나리오를 구축할 수 있다.
- Playwright와 같은 테스트 러너의 글로벌 셋업 단계에서 llmock을 실행하고 OPENAI_BASE_URL 환경 변수를 수정하는 것만으로 기존 코드 수정 없이 모킹을 적용할 수 있다.
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.