promptfoo
무엇인가
promptfoo는 LLM 애플리케이션의 평가(eval)와 레드팀을 수행하는 CLI 겸 TypeScript 라이브러리다. 대상은 프롬프트, 에이전트, RAG 파이프라인이다. 애플리케이션 런타임이 아니라 개발·배포 파이프라인에 붙는 검증 계층에 속한다.
어떻게 동작하나
선언적 설정 파일에 프롬프트, 제공자, 테스트 케이스를 기술하면 CLI가 각 제공자 API를 호출해 응답을 모으고 지표로 비교한다. 평가는 전부 로컬에서 실행되며 프롬프트가 외부로 나가지 않는다. 결과는 캐시되고 파일이 바뀌면 라이브 리로드로 다시 돌린다. 레드팀 모드에서는 공격 프롬프트를 생성해 취약점을 스캔하고 보안 취약점 보고서를 만든다. PR에 대해서는 코드 스캐닝으로 LLM 관련 보안·컴플라이언스 문제를 검토한다.
무엇과 다른가
채팅 UI에서 두 모델을 나란히 놓고 눈으로 비교하는 방식, 제공자별로 평가 스크립트를 따로 짜는 방식과 자리가 겹친다. 프록시나 게이트웨이처럼 요청 경로에 상주하지 않고 배포 전후에 별도로 실행되는 하네스다. 평가 데이터가 로컬에 남는 점이 호스티드 평가 서비스와의 구조적 차이다.
어떻게 쓰나
brew install promptfoo, pip install promptfoo, npx promptfoo@latest 중 하나로 실행한다. 대부분의 LLM 제공자는 API 키를 환경 변수로 설정해야 한다. 예제 디렉터리에서 평가를 돌려 결과를 확인하고, 같은 명령을 CI/CD 파이프라인에 넣어 자동 검사로 쓴다.
전제와 한계
npm·npx 사용 시 Node.js 22.22.0 이상이 필요하고 Node.js 24 LTS가 권장된다. 모델 호출은 각 제공자 API에 의존하므로 해당 키가 전제다. MIT 라이선스이며 OpenAI 산하에 편입된 뒤에도 오픈소스로 유지된다. 애플리케이션 트래픽을 대신 서빙하지는 않는다.
관련 논문 5
유사 도구
- Tracely-ai에이전트 트레이스를 OTLP로 수집해 실패를 클러스터링하고, 실패한 실행을 회귀 테스트로 고정해 PR을 차단하는 CI/CD 도구다.
- teamai-cli팀의 스킬·규칙·MCP 설정·지식을 하나의 git 저장소에 모아 Claude Code, Codex, Cursor 등 여러 AI 에이전트에 배포하고 회수하는 TypeScript CLI다.
- byterover-cli프로젝트 지식을 컨텍스트 트리로 큐레이션해 AI 코딩 에이전트에 영구 기억으로 붙이는 TypeScript CLI다. git식 버전 관리와 클라우드 동기화를 쓴다.
- ai-reviewPR diff를 LLM에 보내 인라인·요약 리뷰 코멘트를 자동 생성하는 Python CLI다. 6개 VCS와 7개 LLM 제공자를 설정 파일로 교체한다.
- Graft코드베이스를 링크된 마크다운 노드 그래프로 만들어 저장소에 두고, 코딩 에이전트가 탐색 없이 읽게 하는 TypeScript CLI다.
- zcfClaude Code와 Codex의 초기 설정을 대화형 메뉴로 대신 처리하는 TypeScript CLI다. 제공자 프리셋과 에이전트 구성을 한 번에 적용한다.