프롬프트 워크플로우
프롬프트의 지시사항을 효과적으로 개발하고, 문제가 발생했을 때 해결하기 위한 추천 워크플로우는 다음과 같습니다.
-
1단계: 큰 틀부터 시작하기
- 먼저 ‘응답 규칙’ 또는 ‘지시사항’과 같은 전체적인 섹션을 만들고, AI가 따라야 할 개괄적인 지침을 글머리 기호로 작성하며 시작하세요.
-
2단계: 세부 사항 구체화하기
- 더 구체적인 동작을 제어하고 싶다면, ‘# 예시 문구’나 ‘# 형식 규칙’과 같이 해당 카테고리에 대한 세부 정보를 명시하는 섹션을 추가하여 보완하세요.
-
3단계: 단계별 작업 지시하기
- AI가 특정 순서에 따라 작업을 처리하길 원한다면, 번호가 매겨진 목록을 사용하여 단계를 명확히 하고, 이 순서를 따르도록 명시적으로 지시하세요.
-
4단계: 예상대로 작동하지 않을 때 (디버깅)
-
지침 충돌 확인: 서로 충돌하거나, 너무 모호하거나, 잘못된 지시사항이 있는지 확인하세요. 만약 지침이 서로 충돌한다면, 많은 모델들은 일반적으로 프롬프트의 끝부분에 가까운 지시를 따르는 경향이 있습니다.
-
예시 보강: 원하는 동작을 보여주는 구체적인 예시(Few-shot)를 추가하세요. 이때, 예시에서 보여주는 중요한 동작은 반드시 규칙이나 지시사항에도 함께 언급되어야 합니다.
-
강조 기법 재검토: 처음부터 전체 대문자나 보상과 같은 인센티브를 사용하는 것은 권장되지 않습니다. 우선 이런 기법 없이 시도해보고, 꼭 필요한 경우에만 제한적으로 사용하세요. 기존 프롬프트에 이런 기법이 이미 포함되어 있다면, 모델이 해당 부분에 너무 엄격하게 주의를 기울여 오히려 성능이 저하될 수 있습니다.
-
좋은 명령어를 찾는 방법
좋은 명령어를 찾기 위해서는 동일한 명령어(Instruction)에 대해서 다양한 테스트를 해봐야 합니다. 다음 5가지 언어적인 속성을 변경해가면서 테스트해보고, 각 결과를 비교하여 가장 효과적인 버전을 선택하세요.
- 문장 유형 테스트 (평서문/의문문/명령문)
- 시제 테스트 (과거/현재/미래)
- 태 테스트 (능동태/수동태)
- 조동사 테스트 (can/must/might 등)
- 어휘 대체 (동의어 치환)
명령어 테스트 방법론:
- 문장 유형 테스트:
- 평서문: “Please summarize this document”
- 의문문: “Could you summarize this document?”
- 명령문: “Summarize this document”
- 문장 유형에 따라 AI의 응답 방식이 달라질 있습니다. 예를 들어, 명령문은 직접적이고 간결한 응답을 유도할 수 있으며, 의문문은 더 공손하거나 설명적인 답변을 생성할 수 있습니다. 각 유형의 결과를 비교해 목적에 맞는 형식을 선택하세요.
- 시제 테스트:
- 현재시제: “This document explains AI.”
- 과거시제: “This document explained AI.”
- 미래시제: “This document will explain AI.”
- 시제는 문맥의 명확성에 영향을 미칩니다. 예를 들어, 현재 시제는 일반적인 사실을 강조하고, 과거시제는 완료된 동작을 나타냅니다. 문서의 성격(예: 보고서 vs 예측 자료)에 맞는 시제를 선택하세요.
- 능동/수동태 테스트:
- 능동태: “AI analyzes the document.”
- 수동태: “The document is analyzed by AI.”
- 능동태는 주체(AI)를 강조하고, 수동태는 객체(문서)에 초점을 맞춥니다. 기술 설명에서는 능동태가 더 자연스러울 수 있지만, 공식 문서에서는 수동태가 적합할 수도 있습니다.
- 조동사 테스트:
- 강한 의무 또는 필수 사항 or 강한 확신: “You must review this document”
- 권장 사항이나 조언 or 예상되는 일: “You should review this document”
- 불확실한 가능성 or 공손한 제안: “You might want to review this document”
- 조동사에 따른 응답의 다양성에 영향을 미칩니다. 예를 들면,
**MUST**를 사용할 경우, LLM이 해당 조건에 맞춰 대답하려고 하여 다른 대답이 나올 확률이 감소합니다. 항상 같은 답변을 원하지 않는 다면should나might같은 조동사를 활용하여 다양한 답변이 나올 수 있는 가능성을 높일 수 있습니다.
- 어휘 테스트:
- “Please analyze this document”: 문서를 체계적으로 분해하거나 구조를 파악하여 세부적인 내용을 이해
- “Please examine this document”: 문서를 주의 깊게 살펴보거나 검토하여 오류, 일관성 또는 정확성을 확인
- “Please evaluate this document”: 문서의 가치, 품질 또는 효과를 판단하거나 평가
- 각 동사는 비슷한 맥락에서 사용될 수 있지만, 문서의 목적과 요청하는 바에 따라 가장 적합한 단어를 선택하는 것이 중요합니다.
평가 기준:
아래 4가지 요소는 상호 보완적으로 작용하며, 좋은 프롬프트를 찾기 위해 균형 있게 고려되어야 합니다. 각 기준은 Task에 따라 가중치가 달라질 수 있으며, 종합적으로 평가될 때 가장 효과적인 답변을 선별할 수 있습니다.
- 응답의 정확도
- 응답의 완성도
- 응답의 창의성
- 작업에 대한 적합성
최적 프롬프트 선택 가이드:
- 각 테스트에서 가장 높은 점수를 받은 변형을 기록
- 모델 버전별로 테스트 반복 (동일 모델의 다른 버전에서도 결과가 다를 수 있음)
- 최종적으로 다음 기준으로 선택:
- 가장 일관된 성능을 보인 변형
- 작업 목적에 가장 부합하는 결과를 낸 변형
- 가장 자연스러운 응답을 생성한 변형
기억하세요: 좋은 프롬프트는 체계적인 테스트와 관찰을 통해 발견됩니다. 모델이 업데이트되면 주기적으로 테스트를 반복하세요.