본문 바로가기
개발/LLM

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

by ▶ Carpe diem ◀ 2023. 9. 5.

프롬프트 엔지니어링(Prompt Engineering)이란?

프롬프트 엔지니어링이 무엇인지 알아보기 전에 프롬프트(Prompt)가 무엇인지 먼저 알아보도록 하자!

 

프롬프트(Prompt)란?

Prompts are instructions given to an LLM to enforce rules, automate processes, and ensure specific qualities (and quantities) of generated output. Prompts are also a form of programming that can customize the outputs and interactions with an LLM.

A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT

 

위 논문에서 프롬프트를 다음과 같이 설명하고 있습니다.

  • 프롬프트는 규칙을 적용하고, 프로세스를 자동화하고, 생성된 결과물의 특정 품질을 보장하기 위해 LLM에 제공되는 instructions 입니다.
  • 프롬프트는 출력 및 LLM과 상호 작용을 customize 할 수 있는 프로그래밍의 한 형태입니다.

프롬프트는 사용자가 원하는 출력을 생성하고자 할 때 LLM으로 원하는 출력값을 얻기 위해 LLM을 유도하는 입력값입니다.

 

Prompt 예
Prompt 예

 

이와 같이 프롬프트는 LLM이 출력을 생성하기 위한 시작점이자 LLM과 상호 작용하기 위해 반드시 필요합니다. 또한 프롬프트의 품질과 명확성은 LLM이 생성하는 출력에 영향을 미칩니다. 

 

프롬프트 구성 요소

아래 4가지 구성 요소는 프롬프트를 위해 모두 필요한 것은 아닙니다.

  • Instruction: 모델이 수행하기 원하는 specific task 또는 instruction
  • Context: 더 나은 대답을 얻기 위해 모델을 steer 할 수 있는 외부 정보 또는 추가 context
  • Input Data: 대답을 받기 위한 질문이나 입력
  • Output Indicator:출력의 format 또는 type 

 

프롬프트 엔지니어링(Prompt Engineering)이란?

프롬프트 엔지니어링이 무엇인지 알아보기 전에 프롬프트 엔지니어링의 목표가 무엇인지 알아보자!

 

프롬프트 엔지니어링의 주요 목표

사용자의 의도와 원하는 결과를 전달하는 프롬프트를 만들어 모델의 성능, 정황성, 유용성을 극대화하는 것이다.

 

 

사용자의 의도와 원하는 결과를 효과적으로 표현하는 프롬프트(프롬프트 엔지니어링의 목표)를 만드는 것이 중요한데, LLM으로부터 사용자가 원하는 결과를 얻기 위한 프롬프트를 만드는 과정을 프롬프트 엔지니어링이라고 한다. 즉, 프롬프트 엔지니어링은 LLM으로부터 높은 품질의 응답(사용자가 원하는 응답)을 얻어낼 수 있는 프롬프트 입력값들의 조합을 찾는 작업을 의미합니다. 그러면 우리는 왜 프롬프트 엔지니어링이 필요할까요?

 

프롬프트 엔지니어링이 필요한 이유

Autoregressive LLMs(자동회귀 언어모델, AR-LLMs)의 한계와 상호작용을 하기 위해 자연어를 사용하고 있기 때문에 프롬프트 엔지니어링이 필요합니다.

  • AR-LLMs의 한계
    자동회귀 언엄델은 하나의 단어가 주어졌을 때, 이전 시점의 데이터를 기반으로 다음에 올 단어를 자동으로 예측하는 언어모델을 말한다. 즉, 프롬프트(사용된 단어, 단어의 순서 등)에 따라 LLM의 답변이 달라질 수 있습니다.
  • 자연어 사용
    우리가 사용하는 자연어는 명확한 뜻을 전달하는 프로그래밍 언어로서 적합하지 않습니다. 왜냐하면 자연어는 프로그래밍 언어처럼 명확하지 않고, Context에 따라 내용이 다르게 전달될 수 있으면, 사람마다 다르게 의미를 받아들일 수 있기 때문입니다.

AR-LLMs의 한계를 보완하고, 모델(LLMs)에게 최대한 명확하게 의도를 전달하기 위해 프롬프트 엔지니어링이 필요합니다.

 

지금까지 프롬프트 엔지니어링이 무엇인지, 왜 필요한지 알아보았습니다. 다음으로는 프롬프트 엔지니어링 기법(Prompt Engineering Guide 참고)에 대해 알아보겠습니다.

  • Zero-shot Prompting
  • Few-shot Prompting
  • Chain-of-Thought Prompting
  •  Self-Consistency
  • Generate Knowledge Prompting
  • Tree of Thoughts
  • Retrieval Augmented Generation
  • Automatic Reasoning and Tool-use
  • Automatic Prompt Engineer
  •  Active-Prompt
  • Directional Stimulus Prompting
  •  ReAct
  • Multimodal CoT
  • Graph Prompting

참고 사이트