Skip to main content

지난 장에서 우리는 좋은 결과를 비교하는 기준, 즉 루브릭을 만들었다. 이제 남은 질문은 하나다. 기준은 생겼는데, 실제로 어떻게 더 나은 프롬프트를 골라낼 것인가.

실무에서 프롬프트를 고칠 때 가장 흔한 방식은 이렇다. 한 번 써 보고, 뭔가 아쉬우면 문장을 조금 바꾼다. 다시 돌려 보고, 결과가 괜찮아 보이면 저장한다. 문제는 여기서부터다. 정말 나아진 것인지, 우연히 이번 입력에서만 잘 나온 것인지, 다음에 같은 문제가 생기면 왜 그렇게 고쳤는지 설명할 수 있는지 알기 어렵다.

그래서 중급 단계에서는 프롬프트 개선을 감각의 수정이 아니라 실험의 반복으로 바꿔야 한다. A/B 테스트는 그 출발점이다. 이름은 조금 거창해 보여도 뜻은 단순하다. 같은 일을 두 가지 방식으로 시켜 보고, 같은 기준으로 비교한 뒤, 무엇을 유지하고 무엇을 고칠지 결정하는 일이다.

프롬프트는 기억보다 기록을 믿을 때 더 빨리 좋아진다. 좋은 한 줄보다 좋은 실험 로그가 오래 간다.

A/B 테스트와 개선 기록

A/B 테스트는 왜 필요한가

A/B 테스트가 필요한 이유는 프롬프트가 생각보다 쉽게 착시를 만들기 때문이다. 방금 본 결과는 유난히 좋아 보이고, 가장 최근에 고친 문장은 왠지 효과가 있었던 것처럼 느껴진다. 하지만 실무는 한 번의 멋진 답변으로 굴러가지 않는다. 여러 입력에서 비슷하게 안정적인 결과를 내야 한다.

예를 들어 고객 문의 분류 프롬프트를 손본다고 해 보자. 출력 형식을 표로 바꾸고, few-shot 예시를 넣고, 불확실성 표시 문장도 추가했다. 결과가 좋아졌다. 그런데 무엇이 효과를 냈는지는 모른다. 세 가지를 한꺼번에 바꿨기 때문이다. 다음에 성능이 다시 흔들리면 어디를 되돌려야 할지도 알기 어렵다.

A/B 테스트는 바로 이 혼란을 줄여 준다. 프롬프트 A와 프롬프트 B를 같은 조건에서 비교하면, 적어도 어느 변화가 더 나은 방향인지 확인할 수 있다. 그리고 그 결과를 남기면 프롬프트 개선은 더 이상 감으로 고치는 일이 아니라, 쌓이는 실험이 된다.

좋은 A/B 테스트의 기본 원칙

A/B 테스트가 효과를 내려면 몇 가지 원칙이 필요하다. 이 원칙을 지키지 않으면 비교는 했지만 결론은 흐려진다.

  • 한 번에 한 가지 가설만 크게 바꾼다.

  • 입력 자료, 모델, 설정, 평가 기준을 최대한 같게 맞춘다.

  • 한 개의 예시가 아니라 여러 샘플로 비교한다.

  • 총점뿐 아니라 실패 유형을 함께 본다.

  • 결과와 판단 이유를 반드시 기록한다.

핵심은 공정한 비교다. 프롬프트 A는 쉬운 입력으로 시험하고 프롬프트 B는 어려운 입력으로 시험하면, 이긴 쪽이 좋은 프롬프트인지 운이 좋은 프롬프트인지 구분할 수 없다. 모델 버전, 시스템 설정, 첨부 자료 범위가 다르면 더더욱 그렇다.

또 하나 중요한 점은 가설이다. 좋은 실험은 늘 질문으로 시작한다. 출력 스키마를 더 명확히 쓰면 형식 오류가 줄어들까? 정보 부족 시 확인 질문을 허용하면 잘못된 단정이 줄어들까? few-shot 예시를 두 개 넣으면 분류 라벨 흔들림이 줄어들까?처럼 말이다. 질문이 분명해야 결과도 읽힌다.

무엇을 실험 대상으로 삼을 것인가

프롬프트는 길고 복잡해 보이지만, 실제로는 몇 가지 설계 요소의 조합이다. 그래서 A/B 테스트도 문장 전체를 막연히 비교하기보다, 어떤 요소를 바꾸는 실험인지 분명히 잡는 편이 좋다.

실험 요소바꾸는 이유기대 효과주의할 점
출력 형식 명시표, JSON, 체크리스트의 일관성 확보형식 준수 향상너무 빡빡하면 자연스러운 설명이 줄 수 있음
few-shot 예시 추가기준과 패턴을 모델에 보여 주기분류나 톤의 안정성 향상예시가 편향되면 오히려 성능이 흔들릴 수 있음
제약 조건 강화추정 금지, 길이 제한, 금지 표현 관리오류와 과장 감소지나치면 답변이 건조하거나 소극적일 수 있음
확인 질문 허용정보 부족 상황 처리잘못된 단정 감소질문이 너무 많아지면 작업 흐름이 느려질 수 있음
독자와 톤 지정실제 사용 문맥 반영실무 사용 가능성 향상톤 지시가 추상적이면 효과가 약함

처음에는 한 번에 모든 요소를 바꾸고 싶어진다. 하지만 중급 단계에서 더 강한 습관은 작게 바꾸고 선명하게 비교하는 것이다. 큰 개편보다 작은 실험이 원인을 더 잘 드러낸다.

큰 수정 말고 작은 가설부터 세우기

실험이 잘 안 되는 가장 흔한 이유는 비교 대상이 너무 다르기 때문이다. 프롬프트 A는 한 줄 지시문이고, 프롬프트 B는 예시, 표 구조, 예외 처리, 검증 문장까지 다 들어간 거대한 설계서라면, B가 더 낫더라도 무엇이 결정타였는지 알기 어렵다.

작은 가설은 이런 식으로 세울 수 있다.

  • 필수 필드를 명시하면 누락값이 줄어들까?

  • 근거 표시 규칙을 넣으면 추정성 문장이 줄어들까?

  • 좋은 예시 2개보다 경계 사례 1개를 추가하는 편이 분류 정확도에 도움이 될까?

  • 톤 지시를 추상어 대신 구체적 문장 규칙으로 바꾸면 실무 사용성이 높아질까?

이렇게 실험 단위를 줄이면 결과가 훨씬 읽기 쉬워진다. 그리고 실패해도 얻는 것이 남는다. 이번 변경은 별 효과가 없었다는 기록도 충분히 가치 있다. 쓸모없는 변경을 되풀이하지 않게 해 주기 때문이다.

같은 입력으로 여러 샘플을 비교해야 하는 이유

프롬프트는 입력의 성격에 따라 다르게 흔들린다. 쉬운 데이터에서는 둘 다 잘하고, 경계 사례에서는 차이가 크게 벌어지기도 한다. 그래서 한 개의 샘플만으로 승부를 결정하면 위험하다.

예를 들어 고객 문의 분류 과업에서 배송 지연처럼 전형적인 문의는 대부분 잘 맞힌다. 하지만 부분 환불을 원하지만 제품은 사용했다처럼 경계가 흐린 상황에서는 프롬프트의 설계 차이가 드러난다. 같은 이유로 회의록 요약도 명확한 회의에서는 둘 다 괜찮아 보이지만, 발화가 뒤섞이고 결정 사항이 애매한 회의에서는 형식 지시와 근거 범위 지시가 있는 프롬프트가 훨씬 안정적일 수 있다.

실무에서는 작은 테스트셋만 있어도 좋다. 중요한 것은 숫자의 크기보다 구성이다. 보통 다음 세 종류를 섞어 두면 비교가 잘 된다.

  • 평범하게 잘 처리되어야 하는 대표 사례

  • 자주 헷갈리는 경계 사례

  • 잘못 답하면 위험이 커지는 예외 사례

이 세 층이 함께 들어가야 프롬프트의 평균 실력과 바닥 실력을 동시에 볼 수 있다. 평균 점수는 괜찮은데 예외 사례에서 크게 무너지는 프롬프트는 실무에서 생각보다 위험하다.

실전 예시: 고객지원 응답 초안 프롬프트 비교

이제 실제 흐름으로 살펴보자. 과업은 다음과 같다.

고객 문의 메일을 읽고 문의 유형, 긴급도, 핵심 요지, 답변 초안을 작성한다. 정책에 없는 보상 약속은 하지 않고, 정보가 부족하면 추가 확인 사항을 적는다.

프롬프트 A는 단순하다.

고객 문의 메일을 읽고 정중하게 답변 초안을 작성해 줘. 필요한 내용은 알아서 정리해 줘.

프롬프트 B는 구조화되어 있다.

아래 고객 문의 메일과 제공된 정책 요약만 근거로 사용하라. 출력은 문의 유형, 긴급도, 핵심 요지, 답변 초안, 추가 확인 사항의 다섯 항목으로 작성하라. 정책에 없는 보상이나 확정 표현은 쓰지 말고, 정보가 부족하면 추가 확인 사항에 한 줄로 적어라. 답변 초안은 고객 응대용으로 공손하되 짧고 분명하게 작성하라.

이 두 프롬프트를 같은 테스트셋 10건에 적용하고, 지난 장에서 만든 루브릭으로 평가했다고 해 보자. 결과는 다음처럼 나올 수 있다.

평가 항목프롬프트 A 평균프롬프트 B 평균관찰 메모
정확성3.24.4B는 정책 밖 약속이 줄었고, A는 추정성 문장이 종종 섞였다
완성도3.54.6B는 필요한 항목을 빠짐없이 채웠다
형식 준수2.14.9A는 문단형 답변이 섞였고, B는 항목 구조가 안정적이었다
톤 적합성4.13.8A가 더 부드럽지만 B는 약간 사무적으로 느껴졌다
실무 사용 가능성2.94.5B는 상담 시스템 입력에 바로 쓰기 쉬웠다

이 표를 보면 결론은 단순히 B가 더 좋다가 아니다. 더 중요한 해석은 이렇다. B는 구조, 정확성, 실무 사용성에서 확실히 우세하지만, 톤이 조금 딱딱하다. 즉 다음 버전에서는 B의 뼈대는 유지하고 말투만 다듬는 것이 합리적이다.

이때 많은 사람이 저지르는 실수는 B를 채택한 뒤 바로 다음 수정으로 넘어가는 것이다. 하지만 좋은 팀은 여기서 한 줄을 더 남긴다. 구조화 지시는 유지. 톤만 완화하는 버전 C 필요. 이 한 줄이 다음 실험의 출발점이 된다.

수정 전후를 남기지 않으면 같은 실수를 반복한다

프롬프트 개선은 생각보다 기억에 의존하기 쉽다. 예전에 이런 문장 넣었다가 별로였던 것 같은데라는 말이 나오면 이미 늦었다. 왜 별로였는지, 어떤 입력에서 흔들렸는지, 완전히 실패한 것인지 일부 조건에서만 실패한 것인지 기억만으로는 남지 않는다.

개선 기록은 그래서 중요하다. 기록은 단순한 메모가 아니라, 다음 선택을 빠르게 만드는 압축된 경험이다. 특히 팀으로 작업할수록 더 그렇다. 누군가는 형식 오류를 줄이기 위해 스키마를 강화했고, 다른 누군가는 예외 사례에서 오답이 늘어나는 문제를 발견했을 수 있다. 이 둘이 연결되지 않으면 팀은 같은 벽을 여러 번 친다.

중급 단계에서의 핵심 전환은 여기 있다. 프롬프트를 잘 쓰는 사람이 되는 것보다, 프롬프트가 어떻게 좋아졌는지 설명할 수 있는 사람이 되는 것. 설명 가능한 개선은 기록에서 나온다.

최소한 남겨야 할 개선 기록

개선 로그는 화려할 필요가 없다. 하지만 몇 가지 항목은 빠지면 안 된다. 기록이 간단해도 다음 실험에 바로 도움이 되어야 하기 때문이다.

항목무엇을 적는가왜 필요한가
버전명V1, V2, V3 같은 식별자어떤 프롬프트를 비교했는지 헷갈리지 않게 한다
날짜와 작성자언제, 누가 수정했는지팀 협업과 책임 추적에 필요하다
과업 설명어떤 업무를 위한 프롬프트인지다른 과업과 혼동하지 않게 한다
변경 가설무엇을 기대하며 바꿨는지결과 해석의 기준이 된다
실제 변경점추가, 삭제, 수정한 지시무엇이 달라졌는지 재현 가능하게 한다
테스트셋어떤 입력 묶음으로 시험했는지공정한 비교를 위해 필요하다
평가 결과루브릭 점수와 코멘트승패보다 이유를 남긴다
실패 유형여전히 자주 틀리는 패턴다음 실험의 우선순위를 정하게 해 준다
결정채택, 보류, 폐기운영 프롬프트를 무엇으로 삼을지 명확히 한다

이 기록표의 좋은 점은 완벽해서가 아니라 재사용 가능해서다. 나중에 프롬프트 라이브러리를 만들 때도 결국 필요한 것은 멋진 문장보다 이런 이력이다. 어떤 상황에 강하고 어떤 상황에 약한지 알아야 팀 자산이 되기 때문이다.

개선 로그 예시: 버전이 쌓이는 모습

아래는 같은 고객지원 프롬프트를 개선해 가는 간단한 예시다.

버전주요 변경점가설결과 요약결정
V1자유서술형 답변만 요청기본 응답 초안은 가능할 것톤은 자연스럽지만 형식이 흔들림보류
V2출력 항목 5개 명시형식 누락이 줄어들 것형식 준수 크게 향상, 정책 밖 추정은 일부 남음유지
V3정책 밖 확정 표현 금지, 정보 부족 시 추가 확인 사항 작성정확성이 높아질 것잘못된 약속 감소, 실무 사용성 향상유지
V4공손하지만 짧고 분명한 문장 규칙 추가톤 적합성이 개선될 것딱딱함 완화, 전반적 균형 향상운영 버전 채택

이 표가 보여 주는 것은 화려한 혁신이 아니다. 오히려 작고 선명한 개선의 누적이다. 실제 실무에서는 이런 식의 버전 축적이 더 강하다. 한 번에 완벽한 프롬프트를 찾기보다, 실패 유형을 하나씩 줄여 나가는 편이 훨씬 재현 가능하다.

결과표만 보지 말고 실패 유형을 모아라

A/B 테스트를 숫자 비교로만 이해하면 개선 속도가 느려진다. 총점은 좋지만 왜 틀렸는지를 모르기 때문이다. 실무에서는 점수표 옆에 실패 유형 메모가 꼭 붙어야 한다.

예를 들어 다음과 같은 메모는 매우 유용하다.

  • 경계 사례에서 문의 유형을 하나로 단정해 버림

  • 입력에 없는 배송 일정까지 추정해서 답변함

  • 형식은 맞지만 추가 확인 사항이 지나치게 장황함

  • 톤은 공손하나 핵심 조치가 문장 뒤에 밀려 있음

이 메모는 다음 버전을 설계하게 만든다. 첫 번째 문제는 불확실성 라벨을 추가하면 줄어들 수 있다. 두 번째 문제는 근거 범위 문장을 더 강하게 쓰면 개선될 수 있다. 세 번째는 길이 제한이나 문장 수 제한으로 다듬을 수 있다. 네 번째는 답변 구조를 사과 → 현재 조치 → 다음 단계처럼 명시하면 해결될 수 있다.

즉, 실패 유형은 단순한 불만 목록이 아니라 다음 실험의 재료다.

반복 개선 루프는 어떻게 운영할까

좋은 프롬프트 팀은 실험을 일회성 행사로 만들지 않는다. 작은 루프를 계속 돌린다. 이 루프는 복잡할 필요가 없지만, 순서는 분명해야 한다.

  • 현재 버전의 자주 발생하는 실패를 모은다.

  • 가장 영향이 큰 문제 하나를 다음 실험 목표로 고른다.

  • 왜 그 문제가 생겼는지 가설을 세운다.

  • 프롬프트 A와 B를 같은 조건으로 비교한다.

  • 루브릭 점수와 관찰 메모를 함께 남긴다.

  • 더 나은 버전을 채택하거나, 둘의 장점을 합친 새 버전을 만든다.

  • 운영 버전에 반영한 뒤 다음 실패 유형을 다시 관찰한다.

이 과정을 보면 A/B 테스트의 목적이 우승자 선발전이 아니라는 점이 분명해진다. 정말 중요한 것은 다음 한 걸음을 또렷하게 만드는 것이다. 프롬프트 개선은 큰 도약보다 작은 루프의 반복에서 훨씬 많이 일어난다.

두 프롬프트 중 하나를 고르는 법

현실에서는 늘 한쪽이 완승하지는 않는다. A는 톤이 좋고 B는 구조가 좋을 수 있다. 이럴 때는 단순 총점보다 업무의 우선순위를 먼저 본다.

예를 들어 자동화 파이프라인에 붙일 출력이라면 형식 준수가 가장 중요하다. 그 경우 약간 건조하더라도 B가 맞다. 반대로 고객에게 바로 보낼 문장 초안이라면 톤 적합성이 더 중요할 수 있다. 그 경우 A의 장점을 살리되, B의 안전장치를 일부 가져오는 편이 낫다.

이 판단을 쉽게 하려면 채택 기준을 미리 정해 두는 것이 좋다. 예를 들어 정확성 4점 미만이면 탈락, 형식 준수 5점이 아니면 자동화용으로 불가, 총점보다 치명적 실패 여부를 우선 확인 같은 규칙이 있으면 논쟁이 크게 줄어든다.

실무의 프롬프트는 문학 작품이 아니다. 가장 아름다운 문장이 아니라, 가장 덜 사고를 내는 문장이 선택될 때도 많다. 중급 사용자는 바로 그 현실적 우선순위를 다룰 줄 알아야 한다.

팀에서 쓰는 A/B 테스트 운영 규칙

개인이 혼자 테스트할 때는 메모장이면 충분하다. 하지만 팀이 함께 개선하려면 최소한의 운영 규칙이 필요하다. 그렇지 않으면 누군가는 최신 버전이라고 생각하는데, 다른 누군가는 예전 버전을 계속 쓰는 일이 생긴다.

팀 단위로는 다음 정도만 합의해도 효과가 크다.

  • 버전명 규칙을 통일한다. 예: cs-reply-v3, brief-summary-v5

  • 운영 버전과 실험 버전을 분리한다.

  • 실험마다 담당자와 검토자를 둔다.

  • 테스트셋은 공용 폴더에서 관리한다.

  • 채택 기준과 보류 기준을 미리 적어 둔다.

  • 실패 사례를 숨기지 말고 함께 남긴다.

특히 운영 버전과 실험 버전을 섞지 않는 것이 중요하다. 실무 현장에서는 누군가 좋은 의도로 프롬프트를 조금 고쳤는데, 그 뒤에 결과 형식이 달라져 자동화가 깨지는 일이 자주 생긴다. 그래서 실험은 자유롭게, 배포는 신중하게라는 원칙이 필요하다.

흔한 실수와 피하는 법

A/B 테스트를 시작하면 자주 빠지는 함정도 있다. 몇 가지만 조심해도 실험의 질이 크게 올라간다.

첫째, 너무 많은 것을 한꺼번에 바꾸는 실수다. 예시, 형식, 길이 제한, 톤 지시를 다 바꾸면 결과가 좋아져도 이유를 모른다. 가장 큰 효과를 보고 싶은 항목 하나부터 시작하는 편이 낫다.

둘째, 잘 나온 샘플만 보고 결론 내리는 실수다. 프롬프트는 늘 예쁜 사례보다 애매한 사례에서 정체가 드러난다. 테스트셋에 경계 사례를 꼭 넣어야 한다.

셋째, 평균 점수만 보고 안심하는 실수다. 평균이 높아도 특정 실패가 치명적이면 운영에 쓰기 어렵다. 고객 공지, 정책 안내, 데이터 추출처럼 실수가 비싼 과업은 최악 사례를 더 중요하게 봐야 한다.

넷째, 점수만 남기고 코멘트를 남기지 않는 실수다. 숫자는 승패를 알려 주지만, 코멘트는 수정 방향을 알려 준다. 둘 중 하나만 남겨야 한다면 오히려 코멘트가 더 실용적일 때도 많다.

다섯째, 이긴 프롬프트를 끝판왕처럼 취급하는 실수다. 오늘의 승자는 현재 테스트셋에서 더 나았을 뿐이다. 업무가 달라지고 입력 유형이 바뀌면 다시 흔들릴 수 있다. 그래서 운영 프롬프트도 언젠가는 다시 실험 대상이 된다.

실무에서 바로 쓰는 A/B 테스트 기록 양식

처음부터 복잡한 문서 체계를 만들 필요는 없다. 아래 정도만 있어도 충분히 시작할 수 있다.

항목내용
실험 이름예: 고객지원 답변 초안 톤 개선 테스트
현재 문제예: 구조는 안정적이나 문장이 지나치게 딱딱함
가설톤 규칙을 구체화하면 톤 적합성이 높아질 것이다
A 버전현재 운영 프롬프트
B 버전톤 지시를 수정한 실험 프롬프트
고정 조건같은 모델, 같은 정책 자료, 같은 테스트셋
평가 기준정확성, 형식 준수, 톤 적합성, 실무 사용 가능성
결과B가 톤 적합성에서 우세, 다른 항목은 동일 수준
실패 메모일부 샘플에서 문장이 길어짐
다음 액션문장 길이 제한 추가한 C 버전 실험

이 양식의 장점은 단순함이다. 실험을 어렵게 만들지 않으면서도, 다음 행동으로 이어지는 정보는 남긴다. 좋은 개선 기록은 읽는 순간 그래서 다음에 뭘 하지?가 바로 떠오르게 해야 한다.

축적되는 실험이 팀 자산이 된다

프롬프트 개선이 진짜 자산이 되는 순간은, 잘 만든 문장이 저장될 때가 아니라 잘 개선된 과정이 공유될 때다. 누군가의 감각은 복사하기 어렵지만, 누군가의 실험 기록은 복사할 수 있다.

예를 들어 마케팅 팀은 캘린더 생성 프롬프트에서 채널별 길이 제한이 효과적이었다는 기록을 남길 수 있다. 교육 팀은 학습자 수준별 설명 예시가 난도를 안정화했다는 기록을 남길 수 있다. 고객지원 팀은 추가 확인 사항 필드가 정책 위반을 줄였다는 기록을 남길 수 있다. 이렇게 쌓인 로그는 직무가 달라도 서로에게 힌트를 준다. 결국 프롬프트 라이브러리는 문장 모음이 아니라 실험의 역사에 가깝다.

실무에서 반복 가능한 프롬프트는 우연히 탄생하지 않는다. 비교하고, 기록하고, 다시 시험하는 과정 속에서 자란다.

핵심 정리

루브릭이 프롬프트를 비교하는 언어라면, A/B 테스트는 그 언어를 실제 개선으로 연결하는 방법이다. 중요한 것은 두 문장 중 누가 더 멋진가가 아니라, 같은 조건에서 어떤 설계가 더 안정적으로 작동하는가를 확인하는 일이다.

기억해 둘 핵심은 분명하다.

  • A/B 테스트는 같은 조건에서 두 프롬프트를 비교하는 실험이다.

  • 좋은 실험은 한 번에 한 가지 가설을 중심으로 설계한다.

  • 여러 샘플, 특히 경계 사례를 넣어야 안정성을 볼 수 있다.

  • 점수표만으로는 부족하고 실패 유형과 판단 메모를 함께 남겨야 한다.

  • 수정 전후 기록은 개인의 시행착오를 팀의 자산으로 바꾼다.

프롬프트를 잘 고치는 사람은 감이 좋은 사람이 아니라, 변화의 이유를 남기는 사람이다. 그리고 그 기록이 쌓일수록 프롬프트는 개인의 요령을 넘어 팀의 운영 도구가 된다.

다음 단계에서는 바로 이 지점을 더 넓게 다룬다. 개인이 잘 쓰는 프롬프트를 어떻게 이름 붙이고, 목적을 적고, 실패 사례까지 남겨서 팀이 함께 쓰는 자산으로 바꿀 것인지 살펴보게 된다.

책 목록

반복 가능한 프롬프트 설계: 예문을 넘어 실무 워크플로로 (프롬프트 중급)

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기