brunch

You can make anything
by writing

C.S.Lewis

by florent Dec 10. 2023

프롬프트 엔지니어링의 8가지 방법

Source:



1. 정적 프롬프트 (static prompts)

- 거대 언어 모델의 생성 능력은 다방면으로 활용 가능한 핵심 기능 중 하나

- 거대 언어 모델이 데이터를 활용하고 표현하는 방식을 프롬프트 엔지니어링을 통해 조정할 수 있음

- 프롬프트는 제로샷, 싱글샷, 퓨샷 접근 방식으로 이뤄질 수 있음

- 거대 언어 모델의 생성 능력을 강화시키려면, 프롬프트 내에 예시 데이터를 포함하여 원샷 혹은 퓨샷 형태로 프롬프트를 사용하는 것이 굉장히 효과적임

- 프롬프트 템플릿이 프롬프트 템플릿과 차이가 나는 점은, 순수한 텍스트로 이루어져 있다는 점임

- 템플릿이 갖춰지지 않았으며, 프롬프트 인젝션이 이뤄진 상태도 아니며, 외부 정보의 개입이 없음

제로샷(zero-shot): 추가적인 학습 없이 새로운 데이터에 대한 예측흘 할 수 있게 만드는 프롬프트 기법

원샷(one-shot): 하나의 예시나 하나의 템플릿을 제공하여 작성하는 프롬프트 기법, 

퓨샷(few-shot): 모델에 2~5개의 예시를 제공함으로써 새로운 예시에 빠르게 적응하도록 하는 프롬프트 기법



2. 프롬프트 템플릿 (prompt template)

- 프롬프트 템플릿은 정적 프롬프트를 템플릿화 시킨 것으로, 핵심 값들이 자리 표시자(placeholer) 형태로 변환된 형식이다.

- 해당 플레이스 홀더는 프롬프트가 모델 내에서 실행될 때 어플리케이션 내에서 값이나 변수 처리됨

- 프롬프트 템플릿을 엔티티 주입(entity injection) 혹은 프롬프트 주입(prompt injection)의 한 형태로 보는 경우도 있음

- 프롬프트 템플릿은 프롬프트의 보관, 재활용, 공유 및 프로그램화를 용이하게 함

프롬프트 인젝션(prompt injection): 언어 모델에 특정 프롬프트를 주입하여 모델 출력을 의도적으로 조작하는 것


3. 프롬프트 컴포지션 (prompt composition)

- 더 상위 개념의 프롬프트를 만들기 위해 실행 단계에서 결합되는 여러 프롬프트 템플릿의 라이브러리 형태를 의미함

- 프롬프트 컴포지션은 유연함과 프로그램화의 가능성을 더욱 강화시킬 수 있지만, 복잡해질 수 있는 부분도 존재함


4. 맥락 프롬프트 (contextual template)

- 맥락 프롬프트는 거대 언어모델에 맥락을 제공함으로써 할루시네이션을 효과적으로 줄일 수 있음


5. 프롬프트 체이닝 (prompt chaining)

- 프롬프트 체이닝은 '거대 언어 모델 체이닝'이라고도 불리우는데, 복수의 언어 모델을 호출하여 하나의 묶음으로 만드는 것을 의미함

- 이러한 다수의 모델 호출의 형태는 하나의 노드 출력이 다음 노트의 입력으로 사용되며 서로에게 이어지는 형태를 보임 ex. A모델에서 나온 a 노드가 B모델의 인풋으로 들어가 b라는 아웃풋이 나오는 형태

- 각 모델에서 발생하는 체인형 노드들은 특수한 목적의 하위 작업 처리를 목표로 하기 때문에, 모델 체인이 있는 경우 여러가지 하위 작업들을 특정 순서대로 처리하는 모습을 띰

- 프롬프트 체이닝은 프롬프트 엔지니어링의 핵심인 '생각의 사슬(Chain of Thought) 프롬프트'를 활용할 수 있게 함

생각의 사슬 프롬프트(Chain of thought prompt): 복잡한 형태의 작업들을 구체적인 하위 작업들로 분해한 후 모델을 만들어 처리하는 것을 의미


6. 프롬프트 파이프라인 (prompt pipeline)

- 파이프라인이란, 사건과 데이터의 흐름을 특정 조정하여 특정 구조를 거치게 하는 것을 의미함 -> 파이프라인은 구조 내에 있는 사건이나 데이터와 연관된 트리거(trigger, 유발 요소)로 작동하며, 작동 후에는 산출물이 나오게 됨

- 일반적으로 프롬프트 파이프라인은 사용자 요청(user request)에 의해 시작되며, 이 요청은 특정 프롬프트 템플릿을 향하게 됨

- 프롬프트 파이프라인은 프롬프트 템플릿의 개념적인/지능적인 확장으로도 볼 수 있음

- 예를 들어, 사용자가 질문을 하게 되면 해당 질문을 사전 정의된 프롬프트 템플릿 내의 변수에 맞게 변환되어 입력되며, 입력값의 결과에 맞는 결과값을 찾아 전달하게 됨

- 이 과정은 굉장히 동적이고 자율성을 띠며, 퓨샷 프롬프팅을 기반으로 특정 사용 시나리오와 맥락을 만들어 이상적인 프롬프트를 만들어낼 수 있음


7. 자율 에이전트

- 거대 언어모델의 자동화를 위한 것

- 프롬프트 체이닝은 사전 설정된 특정 구조와 순서를 거쳐야하는 반면, 자율 에이전트는 높은 자율성을 가지고 실행됨

- 자율 에이전트는 특정 도구들에 접근 권한을 가지며, 요청에 따라 특정 도구들에 접근하여 요청을 처리함

- 실행 파이프라인(execution pipeline)은 에이전트에 자율성을 부여하며, 경우에 따라 최종 답변을 만들어 내기 위해 다수의 반복 처리과정을 거칠 수 있음


8. 프롬프트 튜닝 / 소프트 프롬프트 (prompt tuning / soft prompt)

- 소프트 프롬프트는 프롬프트 튜닝 과정에서 만들어지는 프롬프트를 칭함

- 하드 프롬프트와 달리, 소프트 프롬프트는 텍스트로 보거나 수정할 수 있는 형태가 아님

- 이로 인해 해석이 불가하다는 점이 소프트 프롬프트의 단점임

- 소프트 프롬프트는 일련의 숫자열과 임베딩 형태를 취함

- 예를 들어, AI는 특정 작업을 위해 특정 프롬프트를 취하는데, 왜 그 AI가 그 특정 프롬프트를 선택했는지 알 수 없는 경우

- 소프트 프롬프트는 추가적인 학습 데이터를 대체하는 역할을 한다고도 볼 수 있음

- 좋은 언어 분류 프롬프트의 경우에는, 적게는 수백 많게는 수천개의 데이터 포인트를 커버하는 소프트 프롬프트가 존재한다고 추정됨

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari