Post

프롬프트 엔지니어링 - LLM도 잘 물어봐야 잘 알려준다!

✏️ Edit
프롬프트 엔지니어링 - LLM도 잘 물어봐야 잘 알려준다!

프롬프트 엔지니어링이란?

  • 인공지능, 특히 언어 모델에 정확한 정보나 창의적인 콘텐츠를 생성하도록 지시하는 방법을 연구하는 분야

  • 프롬프트? 인공지능에게 주는 입력 문장 혹은 질문을 의미.

프롬프트를 잘 설계하는 것이 인공지능의 출력 품질을 결정!

프롬프트 엔지니어링 구성요소

  1. Instruction

    • 언어 모델이 수행하기를 원하는 작업의 지시 사항
  2. Context

    • 지시 사항을 잘 하기 위한 추가 맥락(외부 정보)

3- Input data

  • 답변을 찾고자 하는 입력 또는 질문

4- Output Indicator

  • 결과값 출력의 유형 및 형식

프롬프트 예제

1
2
3
해당 문장을 긍정, 부정, 중립의 성격으로 분류해줘. # Instruction
문장: 나는 음식이 괜찮은 것 같아 # Input data
성격: # Output Indicator

프롬프트 엔지니어링 유형(기법)

In-Context Learning Prompting

zero-shot

  • 예제를 구성하지 않고 요청

one-shot

  • 하나의 예제로 구성하는 프롬프트

few-shot

  • 여러 개의 예제로 구성하는 프롬프트

Chain-of-Thought Prompting

복잡한 계산 과정이 들어간 지시 사항에 대해, 예제를 줄 때 순차적 해결 방안을 제시함으로써 계산 과정을 프롬프트에 넣어주는 방식

Zero-shot COT Prompting

모든 계산의 순차적 방식을 프롬프트에 나열하지 않고도, 순차적으로 접근해봐 라는 문구를 추가함으로써 위와 같은 효과를 얻을 수 있다.

프롬프트 작성 노하우

1. 모델에게 페르소나를 부여한다!
  • 지시사항은 최대한 구체적이고 명확하게 전달!

  • 시스템 프롬프트로 LLM에 역할을 부여하고, 특성을 지정한다.

    • ex) 너는 친절하게 답변하는 과학 선생님이야. 늘 한국어 중에서도 쉬운 단어만을 선택해서 말해.
2. 프롬프트 에제를 다양하게 구성한다.
  • 예제의 개수보다는 다양한 케이스에 대한 패턴을 파악할 수 있도록 구성

  • 원하는 결과가 나오지 않으면 프롬프트의 예제를 수정함으로써 구성

3. 지시사항에는 부정문보다는 긍정문을 사용한다.
  • 부정문은 작업에 제한을 준다.

  • ex) 반말을 사용하지 않습니다 -> 존댓말을 사용합니다.

  • ex) 길지 않게 설명합니다. -> 짧게 설명합니다.

4. 계절감있는 출력결과가 나오길 원한다면, 에제에 날짜나 시즌 어휘를 추가
  • 프롬프트에 시즌, 계절을 추가하면 그에 맞는 느낌으로 답변 구상
5. 대상자를 지정하여, 문장의 목적을 구체화한다.
  • 글을 읽는 대상 혹은 답변을 제공받는 대상을 프롬프트에 추가한다.