← 返回列表

AI 시리즈 면접 12: 프롬프트 최적화 방법?

프롬프트 최적화(Prompt Engineering / Optimization)는 대형 언어 모델이 "말을 잘 듣게" 만드는 핵심 기술입니다. 특히 RAG 시스템에서 모델이 검색된 내용을 충실히 따르고, 환각을 피하며, 출력 형식을 준수할지를 결정합니다.


1. 프롬프트 최적화의 핵심 원칙

  1. 명확성 > 복잡성: 간단한 직관적 명령이 종종 화려한 사고 사슬보다 더 효과적입니다.
  2. 충분한 제약: 모델에게 "무엇을 할 수 있고, 무엇을 할 수 없는지" 명확히 알려주세요.
  3. 예시 제공: 제로샷보다 퓨샷이 더 안정적입니다.
  4. 검증 가능성: 모델이 참조나 신뢰도를 출력하도록 하여 하류에서 판단할 수 있게 합니다.
  5. 반복 최적화: 기준선에서 시작하여 한 번에 하나의 변수만 변경하고 효과를 비교합니다.

2. 구체적인 최적화 기법 (쉬운 것부터 어려운 것까지)

1. 역할 설정 (시스템 프롬프트)

당신은 전문 고객 서비스 도우미입니다. 아래 제공된 【참고 자료】에만 기반하여 질문에 답변해야 합니다.
답을 모르면 "자료에 관련 정보가 없습니다"라고 말하고, 스스로 지어내지 마십시오.
  • 효과: 경계와 어조를 설정합니다.
  • 최적화 포인트: 어조(전문적/친근), 제약 강도(엄격/완화).

2. 명확한 명령

❌ 나쁨: "사용자 질문에 답변하세요."
✅ 좋음: "아래 【참고 자료】에만 기반하여 답변하세요. 참고 자료에 답변이 포함되지 않으면 '이 질문에 답변할 수 없습니다'라고 말하세요."

3. 출력 형식 제어

다음 JSON 형식으로 출력하세요:
{
  "answer": "당신의 답변",
  "confidence": "높음/중간/낮음",
  "sources": [1, 3]
}
  • 용도: 하류에서 파싱, 참조, 디버깅에 용이합니다.

4. 퓨샷 예시 (매우 효과적)

예시 1:
질문: 연차는 며칠인가요?
참고 자료: 연차 규칙: 1년 이상 5일, 10년 이상 10일.
답변: 1년 이상 5일, 10년 이상 10일.

예시 2:
질문: 초과 근무 수당은 어떻게 계산하나요?
참고 자료: 평일 초과 근무 1.5배, 주말 2배.
답변: 평일 1.5배, 주말 2배.

이제 답변하세요:
질문: {사용자 질문}
참고 자료: {검색 내용}
답변:
  • : 예시는 다양한 난이도를 포함하고, "답변 불가" 예시를 하나 포함하는 것이 좋습니다.

5. 강제 참조

답변 끝에 [citation:X]로 출처 번호를 표시하세요. 예: "연차는 5일입니다[citation:1]."
여러 자료를 종합한 경우 각각 표시하세요.

6. 거절 응답 임계값 설정

  • 하드 제약: "참고 자료가 질문과 완전히 무관하면 '자료가 관련 없음'이라고 답변하세요."
  • 소프트 제약: 검색 신뢰도 점수와 결합하여 임계값 미만인 경우 자동으로 거절 응답 분기로 이동합니다.

7. 다단계 추론을 위한 사고 사슬 (Chain-of-Thought)

질문: Zhang San의 상사는 누구인가요?
단계: 1. 먼저 Zhang San의 부서를 찾습니다. 2. 그 부서의 책임자를 찾습니다. 3. 최종 답변을 제공합니다.
단계별로 생각한 후 출력하세요.

8. 부정 명령 (Negative Prompting)

답변을 지어내지 마세요. "아마도", "어쩌면" 등 모호한 단어를 사용하지 마세요. 참고 자료 외의 숫자를 출력하지 마세요.

3. 프롬프트의 품질 평가 방법

지표 의미 측정 방법
충실도 답변이 참고 자료에 엄격히 기반하는지 수동 평가 또는 RAGAS의 Faithfulness
거절 응답 정확도 거절해야 할 때 거절하는지 답변이 없는 테스트 세트에서 계산
형식 준수율 요청된 JSON/참조를 출력하는지 정규식 매칭
사용자 만족도 답변이 유용한지 온라인 피드백 / A/B 테스트

제안: 소규모 테스트 세트(20-50개의 경계 사례)를 준비하고, 프롬프트를 변경할 때마다 실행하여 변화를 기록하세요.

4. 일반적인 함정과 최적화 방향

문제 현상 가능한 원인 최적화 방법
모델이 참고 자료를 무시하고 스스로 답변 명령이 충분히 강제적이지 않음 "다음 자료에만 기반"으로 변경하고 퓨샷으로 거절 응답을 보여줌
모델이 항상 "모른다"고 말함 거절 응답 임계값이 너무 높음 임계값을 낮추거나 검색 품질 확인
출력 형식이 엉망이고 JSON을 따르지 않음 명령이 불명확 엄격한 형식 예시 추가 또는 function calling 사용
답변이 너무 길거나 짧음 길이 지정하지 않음 "3문장 이내로 답변"
다단계 추론 오류 모델 추론 능력 부족 단계적 추론 요구 또는 더 강력한 모델로 교체
환각 숫자/날짜 발생 모델이 자체 지식에 의존 "기억하는 숫자를 사용하지 말고 자료만 보세요" 강조

评论

暂无已展示的评论。

发表评论(匿名)