본문 바로가기

AI ML

[LLM] Prompt 엔지니어링 관련 기초 개념 정리

반응형

참고 블로그 (아래 블로그를 참고하며 공부한 내용을 정리하였습니다.)

 

https://medium.com/@minji.sql/prompt-기초편-프롬프트-정의-llm-하이퍼파라미터-구성요소-a62f2d9d2ecf

https://medium.com/@minji.sql/prompt-활용편-프롬프트-엔지니어링-작성가이드-팁과-주의사항-예시-0357f81bc969

 

 

 

 


1. 프롬프트란?

생성형 모델에게 어떤 행동을 해야 하는지 자연어로 설명하고 사람이 원하는 결과물을 출력할 수 있도록 하는 방식

LLM은 결과를 얼마나 랜덤하게 응답할지와 같이, 모델의 다양한 부분을 조종하는 설정 하이퍼파라미터의 영향을 받는다.

 

 


2. 하이퍼파라미터

설정 하이퍼파라미터들은 모델이 어떻게 작동할지를 정하는 중요한 요인이다.

 

2.1. Temperature

답변의 창의성과 무작위성을 조절하는 설정이다.

Temperature 값이 낮을수록 가장 확률이 높은 토큰이 선택되기 때문에 보수적인 답변을 기대할 수 있다.

Temperature 값이 높을수록 토큰의 무작위성이 증가하여 보다 다양하고 창조적인 답변 결과를 생성한다.

→ 사실을 기반으로 하는 질의응답과 같은 작업에는 낮은 temperature 사용을 권장

→ 시를 생성하는 등 창의적인 작업의 경우에는 temperature 값을 높이는 것을 권장

 

2.2. Top p & Top k

2.2.1. Top p

모델의 랜덤성을 조절하는 또 하나의 하이퍼파라미터이다.

Top p를 사용하면 모델이 응답을 생성하는 결정성을 제어할 수 있다.

정확하고 사실적인 답변을 원한다면 이 값을 낮게 유지하는 것이 좋고 더 다양한 반응을 원한다면 더 높은 값으로 증가시키는 것이 좋다.

Top p는 확률의 한계를 설정하고 그 누적 확률을 초과하는 토큰만을 선택한다. 모델은 이 토큰들을 이용해서 랜덤한 답변을 생성한다. 이 방법은 기존의 전체 단어를 샘플링하는 기존의 방법보다 더 다양성 있고 흥미로운 결과를 생성한다.

만약 top p가 0.9라면 모델은 90%의 확률을 달성하는 가장 가능성 높은 단어들로만 답변을 생성할 것임

 

2.2.2. Top k

조금 더 보수적인 대답을 원할 때 사용할 수 있는 파라미터

 

2.3. Max Length

모델이 생성하는 토큰의 수를 관리할 수 있다.

 

2.4. Stop Sequences

모델의 토큰 생성을 중지하는 문자열이다.

stop sequence를 지정하는 것은 모델의 응답 길이 및 구조를 제어하는데 도움이 될 수 있다.

예를 들어, stop sequence로 “11”을 추가하여 항목이 10개를 초과하지 않는 리스트를 생성하도록 모델에 지시할 수 있다.

 

2.5. Frequency Penalty

해당 토큰이 응답 및 프롬프트에 등장한 빈도에 비례하여 다음에 등장할 토큰에 불이익을 적용할 수 있다.

여기서 불이익이란 자주 등장하는 토큰에 대하여 더 많은 페널티를 부여하는 것이다.

불이익을 받게 되면 모델의 다음번 응답에서 단어의 반복을 방지할 수 있다.

 

2.6. Presence Penalty

모든 토큰에 대해 동일한 페널티가 적용된다. 간단한 예를 들면, 2회 등장하는 토큰과 10회 등장하는 토큰이 동일한 페널티를 받는다.

이 설정을 통해 모델이 응답에서 구문을 너무 자주 반복하는 것을 방지할 수 있다. 다양하거나 창의적인 텍스트를 생성하기 위해서는 더 높은 presence penalty를 사용한다.

혹은 모델이 사실을 기반으로 텍스트를 생성해야 한다면 presence penalty를 낮은 값으로 사용해야 한다.

 

 


3. 프롬프트 구성요소

3.1. Instruction(지시)

LLM 모델이 수행하기를 원하는 구체적인 목표, 특정 작업을 정의하는 내용

 

3.2. Context(문맥)

LLM이 해야 할 작업을 이해하는 데 필요한 배경 정보를 제공한다.

예를 들어 문제에 대한 간단한 설명이나 관련 정보의 요약을 제공할 수 있다.

 

3.3. Input Data(입력 데이터)

응답 받고자 하는 것에 대한 입력 데이터를 의미하거나, 질문이 될 수 있다.

 

3.4. Output Indicator (출력 표시기)

결과물의 유형 또는 출력 형식(format)을 지정할 수 있다.

또한 특정 요구 사항에 맞춰 응답의 길이 또는 복잡성, 말투 등에 대한 다양한 제한을 걸 수 있다.

 

 


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

생성형 AI 모델에게 제공되는 입력(Prompt)을 세심하게 디자인하고 모델의 반응을 가이드하여 원하는 결과를 얻을 수 있도록 하는 과정이다.

3.1. 프롬프트 엔지니어링의 기법들

Zero-Shot Prompting

One-Shot Prompting

Few-Shot Prompting

Chain of Thought

Tree of Thought (ToT)

Zero Shot Chain of Thought

Self Consistency

Meta-Reasoning over Multiple Chains

Generated Knowledge Prompting

Synthetic Prompting

MRKL

Self Refine

ReAct Prompting

Automatic Prompt Engineering

 

 


4. 프롬프트 작성 가이드

[1] 주제(Topic)은 무엇이고 수행해야 할 작업(Task)은 무엇인가?

[2] 어떤 역할(Role)을 부여해야 하는가?

→ 답변자로써 페르소나를 지정해준다. 답변에 대한 배경 지식을 가지고 답하기 때문에 더 높은 정확도로 답하게 된다.

[3] 청중(Audience)은 누구인가? → 답변의 대상이 되는 특정 인구, 그룹, 또는 개인의 페르소나

[4] 필요한 정책(Policy)은 무엇인가?

→ 응답을 만들 때 따라야 하는 특정 정책이나 규칙을 의미한다. → 예를 들어, 공손하고 정중한 말투를 써야 한다거나 3분 내로 읽을 수 있는 등등..

[5] 응답결과에 대한 예시(example)를 제공할 수 있는가?

 

 

 

 

반응형