프롬프트 성능 평가 프레임워크
프롬프트를 만들고 수정하는 과정에서 응답을 통해 괜찮은 프롬프트인지 테스트를 해봐야겠죠!
몇몇 프롬프팅 논문에서처럼 시간을 엄청나게 들여서 실험을 하기는 힘드니,
보통 원하는 답이 나왔는지 지침을 까먹지 않았는지 등을 통해 객관적 혹은 주관적으로 판단해서
만족할 만하거나 이전보다 나은 응답이 나오면 성능이 개선되었다고 평가하는데요.
일단 기본적으로 디토가 프롬프트 평가시 제가 제안드리는 간단한 프레임워크 :
프롬프트 제작 전 요구사항을 확인 : 프롬프트 제작 전 요구사항을 명확히 체크리스트로 정리하고 제작
프롬프트 구조화 : 이를 프롬프트 내에서 명확한 구조를 통해 제공하고 순서 제시 혹은 우선순위를 달리하여 [Most important Rules], [Rules] 등으로 구분하여 정리하고 제시하기
내용 검증: 프롬프트 내부에 모순되는 내용, 무관한 내용이 없는지 확인하고(예: 출력 사항으로 json으로 출력해달라고 하고 마크다운을 예시로 제공하는 등)이 요구사항과 일치하는지 확인하기.
내용 분리와 간결성 확인 : 구분자를 통한 내용의 분리가 명확한지, 명령 내용이 모호하지 않은지 확인하고, 쉬운 용어를 사용하여 짧고 간결한 문장을 제공하기.
출력 검증 : 출력된 내용이 지시사항과 형식에 모두 부합하는 지 확인하기.
프롬프트 입력 토큰 사이즈 확인 : 부합하지 않는 경우, 프롬프트 입력 토큰이 너무 크지 않은지 확인하고, 필요한 경우 수정하기.
반복 테스트와 수정 : 2-6 과정을 반복하며 프롬프트를 수정하고, 무시하거나 따르지 않은 지시사항을 강조하거나 필요에 따라 zero shot에서 COT 방식으로 변경하는 등 테스트하기.
일관성 검증: 마음에 드는 답변이 나온 경우, 이를 2-3번 더 확인하여 일관성을 유지하는지 확인하기.
파라미터별 테스트: Model, temperature, Top P 조절 등 다양한 변수를 조절할 수 있는 플레이그라운드 등 환경에서도 테스트가 필요하다면 진행하기
최적화 : 토큰 수 조절, 언어 설정, 추가 요구사항 등 프롬프트를 최적화하고 개선하기. 이 과정에서 동일한 문제가 반복되지 않도록 주의하기.
어떻게 생각하시는 지 여러분들의 의견을 댓글로 달아주세요...!!! 생각을 모아모아~~
OpenAI 포럼에서 그러한 논의가 나와서 가져와봤습니다.
그리고 2~3가지 정도 유용한 툴이 제시되었습니다.
이 대화에서는 사용자들이 OpenAI의 GPT 프롬프트를 평가하고 테스트하는 방법에 대해 논의하고 있습니다. 여기에는 다음과 같은 내용이 포함됩니다:
평가 및 테스트 도구: 평가 및 테스트를 위한 여러 도구와 접근 방식에 대한 토론이 있습니다.
A/B 테스팅: 대화형 GPT 프롬프트 버전을 A/B 테스트하는 방법에 대한 설명과 예시가 있습니다.
자동화된 테스트: 수동 테스트의 한계로 인해 자동화된 테스트의 필요성이 강조됩니다.
예측 가능성 및 제어: AI 응답의 예측 가능성과 이를 제어하는 방법에 대한 논의가 있습니다.
Knit - A better AI playground for prompt designers
버전 간 프롬프트와 응답을 비교할 수 있으며, Knit에서는 모든 차이점(매개변수/프롬프트/응답)을 보여줍니다.
Knit는 모든 편집 및 응답 내역을 저장하며 원할 때 언제든지 롤백할 수 있습니다.
최대 6개 테스트 그룹을 동시에 실행하여 다양한 입력 결과를 관찰하는 시간을 절약할 수 있습니다
LLM 및 LLM 시스템 평가를 위한 프레임워크, 오픈 소스 벤치마크 레지스트리
평가 프레임워크: 다양한 OpenAI 모델의 차원을 테스트하고, 사용자의 특정 사례에 맞는 맞춤형 평가 작성 가능
평가 프레임워크의 목적: "openai/evals"는 대규모 언어 모델(Large Language Models, LLMs)과 이를 기반으로 구축된 시스템을 평가하기 위한 프레임워크입니다. 이를 통해 모델의 성능, 정확성, 그리고 다양한 측면을 체계적으로 검증할 수 있습니다.
평가 레지스트리: OpenAI는 이미 구축된 평가 도구들의 레지스트리를 제공합니다. 이 레지스트리는 다양한 모델의 특성을 평가할 수 있는 벤치마크를 포함하고 있으며, 사용자는 이를 활용하여 모델을 테스트할 수 있습니다.
사용자 정의 평가: 사용자는 자신의 특정 사용 사례에 맞춰 맞춤형 평가를 작성할 수 있습니다. 이를 통해 사용자는 자신의 데이터를 활용하여 프라이빗한 평가를 생성할 수 있으며, 이러한 평가는 공개되지 않습니다.
3번째로는 이런 절차를 따라볼 수도 있을 것 같네요!
첫 번째 단계로:
간단한 질문에 대한 답변인 경우 프롬프트를 50~100회 실행합니다.(이것도 너무 많지않나 ㅠㅠ)
json 출력이 필요한 경우 pydantic을 사용하여 유효성을 테스트합니다.
사용 사례에 모델과의 다단계 통신이 필요한 경우에는 일종의 에이전트(때로는 자동 생성, 때로는 직접 오케스트레이션을 수행하는 더 간단한 에이전트)를 사용합니다.
두 번째 단계로:
때로는 첫 번째 단계의 결과를 수동으로 살펴보고 프롬프트에서 개선할 사항의 목록을 작성합니다.
때로는 직접 만든 간단한 스크립트(프롬프트/사례에서 공식적인 기준을 추출하고 AI가 얼마나 잘 소통하는지 평가하는 스크립트)나 (최근에는) 어시스턴트 API를 사용하여 결과를 분석하고 피드백을 제공하기도 합니다.