프롬프트 자동 테스트 생성기 PromptPex
초록
PromptPex는 대형 언어 모델(LLM) 프롬프트의 입력·출력 사양을 자동으로 추출하고, 이를 기반으로 다양한 단위 테스트를 생성·평가하는 도구이다. 추출된 사양을 바탕으로 만든 테스트는 모델 교체나 프롬프트 수정 시 회귀를 탐지하고, 서로 다른 모델이 프롬프트를 어떻게 해석하는지 비교할 수 있게 해준다. 논문에서는 22개의 벤치마크 프롬프트와 4가지 모델을 대상으로 실험하여, 기존 LLM 기반 베이스라인보다 더 많은 비규격 출력을 유발하는 테스트를 생성함을 보였다.
상세 분석
PromptPex의 핵심 아이디어는 “프롬프트를 프로그램처럼 다루어, 사전·사후 조건 형태의 명시적 사양을 추출한다”는 점이다. 이를 위해 저자들은 먼저 Prompt Under Test(PUT)에서 입력 제약과 출력 규칙을 식별한다. 입력 사양(IS)은 예를 들어 “문장과 그 안에 포함된 단어”와 같은 형태로 구체화되며, 출력 규칙(OR)은 “POS 태그만 반환한다”, “알 수 없으면 Unknown, 답변 불가면 CantAnswer”와 같이 명시적 규칙으로 전환된다. 이러한 사양은 GPT‑OSS와 같은 강력한 LLM을 활용해 자동으로 생성되며, 인간 개발자가 검증·수정할 수 있는 형태로 제공된다.
사양이 확보되면 PromptPex는 또 다른 LLM을 호출해 사양에 부합하도록 테스트 입력을 생성한다. 테스트는 두 가지 축을 갖는다. 첫째, 입력 변형을 통해 사양 경계를 탐색하고, 둘째, 출력 규칙을 위반하도록 설계된 엣지 케이스를 만든다. 생성된 테스트는 여러 Model Under Test(MUT) – 논문에서는 gpt‑4o‑mini, gemma2‑9b, qwen2.5‑3b, llama3.2‑1b 등 네 가지 모델 – 에 적용된다. 각 모델의 응답은 사양 검증 LLM에 의해 자동 평가되며, 규칙 위반 여부가 “비규격”으로 기록된다.
실험 결과, PromptPex가 만든 테스트는 베이스라인(LM 기반 자동 테스트 생성기)보다 평균 15 %~20 % 더 많은 비규격 출력을 유발했다. 특히 모델 간 차이점이 두드러지는 경우(예: gpt‑oss는 규칙을 잘 따르지만 gpt‑3.5는 “Output:” 접두사를 붙이는 등) PromptPex는 이러한 차이를 명확히 드러냈다. 이는 프롬프트가 모델에 의존적인 특성을 갖는다는 논문 주장과 일치한다.
또한 PromptPex는 프롬프트 개발자가 사양을 시각화하고, 모호한 부분(예: “Return only the part of speech tag”가 설명을 허용하는지 여부)을 발견하도록 돕는다. 사양 추출 단계에서 발견된 입력·출력의 모호성은 테스트 생성 시 의도적인 엣지 케이스로 활용돼, 프롬프트 수정 시 위험 요소를 사전에 파악하게 한다.
한계점으로는 (1) 사양 추출이 LLM의 이해에 크게 의존하므로, 원본 프롬프트가 매우 복잡하거나 비표준적인 표현을 포함하면 추출 정확도가 떨어질 수 있다. (2) 현재 PromptPex는 전체 기능을 포괄하는 테스트를 자동 생성하기보다는 사양 위반을 찾는 “부정적” 테스트에 초점을 맞추므로, 정상 동작을 검증하는 “긍정적” 테스트는 별도 작성이 필요하다. (3) 평가에 사용된 네 가지 모델은 비교적 소규모이거나 공개된 모델에 국한돼 있어, 최신 상업용 모델에 대한 일반화 여부는 추가 검증이 필요하다.
전반적으로 PromptPex는 프롬프트를 소프트웨어 구성 요소로 바라보고, 사양 기반 테스트 자동화를 구현함으로써 LLM 기반 애플리케이션의 신뢰성을 향상시키는 실용적인 프레임워크를 제시한다. 향후 사양 추출 정확도 향상, 테스트 커버리지 확대, CI/CD 파이프라인과의 통합 등이 연구·개발 과제로 남는다.
댓글 및 학술 토론
Loading comments...
의견 남기기