LLMock: 프로세스 간 결정론적 LLM 테스트를 위한 HTTP 기반 모킹 서버

✍️ OpenClawRadar📅 게시일: March 14, 2026🔗 Source
LLMock: 프로세스 간 결정론적 LLM 테스트를 위한 HTTP 기반 모킹 서버
Ad

LLMock는 지정된 포트에서 실제 HTTP 서버로 실행되어 LLM API 호출을 가로채는 모킹 서버로, 유료 API를 호출하지 않고도 여러 프로세스에서 결정론적 테스트를 가능하게 합니다.

주요 내용

이 도구는 한 개발자가 실제 OpenAI API를 대상으로 Playwright 테스트를 실행하며 12달러를 소비한 후 발견되었습니다. 문제는 MSW(Mock Service Worker)를 사용할 때 발생했는데, MSW는 server.listen()을 호출하는 Node.js 프로세스 내부의 HTTP 모듈을 패치하지만, 별도의 프로세스(예: Python 에이전트)는 모킹을 전혀 인식하지 못했습니다.

LLMock를 사용하면 Node.js, Python 또는 기타 언어에 관계없이 모든 프로세스에서 OPENAI_BASE_URL 환경 변수를 모킹 서버로 지정합니다:

const mock = new LLMock({ port: 5555 });
await mock.start();
process.env.OPENAI_BASE_URL = "http://localhost:5555/v1";

픽스처는 사용자 메시지 부분 문자열이나 정규식 패턴과 일치하는 일반 JSON 파일로, 핸들러 보일러플레이트를 제거합니다:

{
  "fixtures": [
    {
      "match": { "userMessage": "stock price of AAPL" },
      "response": { "content": "The current stock price of Apple Inc. (AAPL) is $150.25." }
    }
  ]
}

소스에서 언급된 주요 기능:

  • 실제 OpenAI/Claude/Gemini SSE 형식을 정확히 지원합니다(이벤트 유형을 잘못 설정하면 스트리밍이 미묘하게 중단됨)
  • 전체 도구 호출 지원 - 에이전트 프레임워크가 정상적으로 실행함
  • 다중 에이전트 흐름을 위한 시스템 프롬프트 상태 또는 메시지 기록 검사를 위한 조건부 라우팅
  • 테스트 통과 여부뿐만 아니라 실제 호출 내용을 확인할 수 있는 요청 기록
  • 의존성 없음

해당 개발자는 3개의 Playwright 테스트에서 9번의 LLM 호출을 수행했으며, 비용은 0달러이고 매 실행마다 결정론적 결과를 얻었습니다.

📖 전체 소스 읽기: r/LocalLLaMA

Ad

👀 See Also