Skip to main content
Prompt Engineering은 LLM에게 원하는 결과를 이끌어내기 위해 입력(Prompt)을 체계적으로 설계하는 기술입니다. 코드 한 줄 없이 AI의 성능을 극대화할 수 있는 가장 접근성 높은 방법입니다.
참고 학습 목표
  • Zero-shot, Few-shot, Chain-of-Thought 기법의 차이를 동일 예시로 비교할 수 있다
  • System Prompt 설계 5가지 패턴을 실무에 적용할 수 있다
  • ReAct, Tree of Thought, Self-Consistency 등 고급 기법을 이해하고 적절한 상황에 선택할 수 있다
  • Prompt Injection 공격의 원리와 방어 기법을 설명할 수 있다
  • Databricks AI Playground와 MLflow Prompt Registry를 활용한 프롬프트 관리 워크플로우를 수립할 수 있다

Prompt Engineering이란?

LLM은 입력(프롬프트)에 따라 출력 품질이 크게 달라집니다. Prompt Engineering은 최적의 입력을 설계하여 최적의 출력을 얻는 체계적 방법론 입니다.
성공 비유: 같은 재능을 가진 사람에게 “보고서 써줘”라고 하는 것과 “A4 2장 분량으로, 표를 포함하여, 경영진 대상으로, 지난 분기 매출 분석 보고서를 작성해주세요”라고 하는 것의 결과는 완전히 다릅니다. Prompt Engineering은 후자처럼 명확하게 요청하는 기술입니다.

프롬프트의 과학: 왜 같은 질문에 다른 결과가 나오는가?

10,000개 이상의 프롬프트를 작성하며 깨달은 것이 있습니다. 프롬프트는 “글”이 아니라 “코드”에 가깝습니다. 단어 하나, 순서 하나가 출력을 완전히 바꿉니다. 이 섹션에서는 그 원리를 실험 결과와 함께 설명합니다.

LLM은 프롬프트의 모든 단어에 반응한다

LLM은 입력의 모든 토큰에 Attention을 배분합니다. 즉, 단어 하나의 차이가 출력 전체를 변화 시킬 수 있습니다. 실험: “간결하게” vs “상세하게” 하나의 단어 차이
“간결하게”라는 단어 하나가 출력 길이를 3배 이상 변화시킵니다. 이것은 마법이 아니라 학습 데이터에서 “간결하게” 뒤에는 짧은 텍스트가, “상세하게” 뒤에는 긴 텍스트가 빈번하게 등장 했기 때문입니다.
참고 실무 팁: 출력 길이를 제어하고 싶다면 “간결하게/상세하게” 같은 모호한 표현 대신 “3문장으로”, “500자 이내로”처럼 정량적으로 지정 하세요. 훨씬 안정적인 결과를 얻을 수 있습니다.
더 미묘한 차이도 영향을 줍니다:

프롬프트 순서가 결과를 바꾼다

LLM은 Transformer 아키텍처 특성상 프롬프트의 앞부분과 뒷부분에 더 높은 가중치 를 부여하는 경향이 있습니다 (Primacy-Recency Effect). 중간에 있는 지시는 무시될 가능성이 높습니다. 실험: 지시 순서 변경
순서 배치 전략:
주의 핵심: System Prompt가 길어질수록 중간 지시가 무시될 확률이 높아집니다. 중요한 지시는 반드시 맨 앞 이나 맨 뒤 에 배치하세요. 특히 “절대 하지 마세요” 류의 안전 제약은 맨 뒤에 두는 것이 효과적입니다.

Negative Prompt의 함정

“~하지 마세요”라는 부정 지시는 직관과 달리 원치 않는 행동을 오히려 유발 할 수 있습니다. 왜 그럴까? LLM은 다음 토큰을 예측할 때, 프롬프트에 등장한 모든 단어의 의미를 활성화합니다. “비속어를 사용하지 마세요”라고 쓰면:
  1. “비속어”라는 개념이 모델의 활성화 공간에서 강하게 점등됩니다
  2. 관련 토큰의 확률이 미세하지만 상승합니다
  3. 특히 Temperature가 높을 때 이 효과가 두드러집니다
Negative를 Positive로 변환하는 패턴:
성공 원칙: 프롬프트에서 “하지 마세요”를 쓸 때마다 “대신 무엇을 해야 하는가?”를 생각하세요. 금지보다 지시가 항상 더 효과적입니다. 단, 안전 제약(System Prompt 누출 금지 등)은 예외적으로 부정 지시가 필요합니다.

서브 페이지


참고 자료