안녕하세요. 인포그랩 AI DevOps 엔지니어 Harvey입니다. 프롬프트 최적화는 오늘날 LLM 성능을 극대화하는 핵심 요소로 주목받고 있습니다. 동일한 질문도 프롬프트의 구조와 표현 방식에 따라 LLM의 응답 품질이 달라지는데요. 이는 LLM 응답의 신뢰도와 사용자 경험, 운영 비용 절감과 직결돼 중요합니다.
프롬프트를 최적화하려면 품질을 정량적으로 측정하고, 개선하는 작업부터 시작해야 합니다. 그렇지 않으면, 사용자 경험이나 직관에 의존해 프롬프트를 주관적으로 평가할 수 있는데요. 이때 프롬프트의 성능 개선에 실제 영향을 미치는 요소를 놓칠 수 있고요. 프롬프트를 효율적으로 개선하기가 더 어려워질 수 있습니다.
Prometheus 2와 OpenAI API를 활용하면 프롬프트 품질을 더욱 빠르게 정량 평가하고, 데이터에 기반해 실질적인 프롬프트 개선 방안을 객관적으로 도출할 수 있는데요. 이 글에서는 두 도구를 활용한 프롬프트 품질 평가 방법을 실습 예제와 함께 알아보겠습니다.
프롬프트와 평가 기준
프롬프트 품질 평가 방법을 다루기에 앞서, 프롬프트와 프롬프트 평가의 개념, 지표를 먼저 살펴보겠습니다.
프롬프트
프롬프트는 LLM에 입력하는 텍스트로, 모델이 응답을 생성하는 데 필요한 핵심 데이터입니다. 입력한 프롬프트의 품질은 LLM이 생성하는 응답의 품질에 직접적인 영향을 미칩니다. 특히 구체적이고 구조화된 고품질의 프롬프트는 LLM의 잠재력을 효과적으로 끌어내, 사용자가 기대하는 양질의 응답을 도출하는 데 도움이 됩니다.
프롬프트 평가
프롬프트 평가는 ‘프롬프트가 LLM에서 기대하는 응답을 얼마나 잘 끌어냈는지’를 특정 기준에 따라 측정하는 활동입니다. 이는 응답 품질을 평가해 입력 프롬프트의 성능을 진단하는 방식으로 이뤄집니다.
프롬프트의 성능을 올바로 평가하려면 먼저 프롬프트의 효과를 명확히 정의해야 합니다. 즉, ‘어떤 응답이 좋은지’ 기준을 구체적으로 정의해야 하죠. 그다음, 해당 기준에 따라 프롬프트의 응답 결과를 평가합니다.
다만, 모든 프롬프트에 동일한 평가 기준을 적용하기는 어렵습니다. 프롬프트의 맥락과 수행 작업, 기대하는 출력물의 특징이 다르기 때문입니다.
그래도 다양한 프롬프트 유형에 공통으로 적용할 수 있는 일반적인 평가 지표는 있습니다. 다음 항목이 대표적입니다.
- 환각 탐지: 응답에 거짓 정보나 조작된 내용이 있는지 확인합니다.
- 정확성: 응답이 사실에 부합하고, 주어진 맥락과 모순되지 않는지 확인합니다.
- 효율성: 응답 생성 속도와 계산 비용을 측정합니다.
- 유해성, 편향성: 출력물에 부적절한 언어, 편향, 또는 유해한 내용이 있는지 평가합니다.
- 일관성, 유창성: 생성된 텍스트의 논리적 흐름과 문장 구성의 자연스러움을 평가합니다.
- 관련성: 응답과 프롬프트의 질문, 주제 관련성을 평가합니다.
창의적인 글쓰기를 요청하는 프롬프트에는 응답의 유창성과 독창성이 중요합니다. 정보를 요청하는 프롬프트에는 응답의 정확성과 근거 제시가 핵심입니다. 따라서 프롬프트의 유형에 따라 적절한 평가 기준을 정의해야 합니다.
프롬프트 평가 방식
프롬프트를 평가하는 방식은 크게 세 가지로 나뉩니다. 인간 평가, 정량 지표 기반 평가, LLM 기반 평가(LLM-as-a-judge)가 대표적입니다. 각 평가 방식의 의미와 장단점을 살펴보겠습니다.
인간 평가
인간 평가는 사람이 LLM의 응답을 보고, 그 품질과 프롬프트의 적합성을 평가하는 방식입니다. 평가자는 응답의 적절성, 정확성, 자연스러움, 유용성 등을 종합적으로 판단합니다. 이 방식은 실제 사용자 만족도와 상관관계가 높고, 가장 신뢰할 만한 평가 방식으로 평가됩니다. 그러나 평가자의 주관이 개입될 수 있고, 평가 비용과 시간이 많이 들어가는 게 단점입니 다.
정량 지표 기반 평가

BLEU, ROUGE, BERTScore, Perplexity 등 텍스트 유사도나 예측 정확도 기반의 정량 지표로 평가하는 방식입니다. 이 방식은 계산하기가 간편하고 빨리 평가할 수 있다는 장점이 있습니다. 그러나 프롬프트의 맥락을 충분히 반영하기 어려우며, LLM 응답의 품질과 프롬프트의 적합성을 온전히 평가하기는 어렵습니다. 정량 지표가 높다고 사용자가 항상 만족하는 건 아닙니다.
LLM 기반 평가(LLM-as-a-judge)
고성능 LLM으로 사전에 정의된 평가 기준과 프롬프트에 따라 다른 LLM의 응답 품질과 프롬프트의 적합성을 평가하는 방식입니다. 이는 상용 API나 오픈 소스 모델로 프롬프트를 평가하는 등 다양한 접근법을 취합니다. 이 방식은 인간 평가와 정량 지표 기반 평가의 한계를 보완합니다.
최근 LLM 성능이 발전하면서 LLM-as-a-judge와 인간 평가 간의 유사도는 점점 높아지고 있습니다. 그러나 이 방식에도 한계는 있습니다. 평가 기준이 부정확하거나, 명확하지 않으면 결과가 왜곡될 가능성이 있습니다. 또 고성능 모델을 사용할 때, 비용 부담이 커질 수 있습니다.
LLM 기반 프롬프트 평가 실습
이 글에서는 LLM을 활용해 다른 LLM의 응답 품질과 프롬프트의 적합성을 평가하는 방법을 실습하겠습니다. 실습은 Python 3.12.10 환경에서 진행하며, 평가 도구로 Prometheus 2와 OpenAI API를 사용합니다. 두 도구를 동일한 조건에서 실행해 평가의 타당성과 정확성을 살펴보겠습니다.
사전 준비 사항
LLM으로 프롬프트 성능을 평가하려면 다음과 같은 데이터 구조가 필요합니다. 이 데이터는 프롬프트 유형과 평가 기준에 맞게 수정하거나, 다른 LLM으로 생성할 수 있습니다.
- instruction: LLM에 입력한 프롬프트입니다.
- response: 입력한 프롬프트에 대한 LLM의 응답입니다.
- reference_answer: response 평가에 참고할 답변입니다. 필수값은 아닙니다.
- rubric_data
- criteria: response 평가 기준입니다.
- description: 각 평가 점수 설명입니다.