프롬프트의 기초

프롬프트의 기초

기초 프롬프트

간단한 프롬프트만으로도 많은 일들을 할 수 있지만, 제공하는 정보의 양과 퀄리티에 따라 그 결과는 천차만별입니다. 모델에게 전달하는 프롬프트는 지시질문과 같은 정보와 맥락, 입력 또는 예시와 같은 다른 세부 사항을 포함할 수 있습니다. 이러한 구성 요소를 사용하여 모델에게 더욱 적절하게 지시하고 더 나은 결과를 얻을 수 있습니다.

먼저 간단한 프롬프트의 기본 예시를 살펴보겠습니다:

Prompt:

하늘은

Output:

푸른색입니다.

하늘은 맑은 날에는 푸른색입니다. 흐린 날엔 하늘은 회색 혹은 하얀색을 띨 수 있습니다.

보시다시피, 언어 모델은 주어진 "하늘은"이라는 짧은 문장의 맥락을 파악하고 글을 이어 나갑니다. 이 결과물은 예상하지 못했거나 우리가 달성하려던 작업과는 동떨어져있을 수도 있습니다.

위의 간단한 예시로부터, 우리는 모델에게 더 자세한 문맥과 구체적으로 원하는 것에 대한 지시를 내리는 일의 중요성을 알 수 있습니다.

한 발짝 더 나아가 보겠습니다:

Prompt:

문장을 완성해 줘:

하늘은

Output:

오늘 매우 아름답습니다.

훨씬 괜찮아 보이나요? 우리가 문장을 완성하라고 지시한 대로 모델은 정확히 수행("문장 완성")해서 답변을 출력했습니다. 모델에게 작업을 수행하도록 지시하기 위해 최적의 프롬프트를 설계하는 이러한 접근 방식을 프롬프트 엔지니어링이라고 합니다.

위의 예시를 통해 LLM(대규모언어모델)이 할 수 있는 것을 간단히 살펴보았습니다. 오늘날의 LLM은 텍스트 요약부터 수학적 추론, 코드 생성까지 모든 종류의 고급 작업을 수행할 수 있습니다.

프롬프트 형식

위에서 간단한 프롬프트를 입력해 보았습니다. 일반적인 프롬프트는 다음과 같은 형식을 따릅니다:

<질문>?

혹은

<지시>

질의응답(QA) 형식으로도 작성이 가능하며, 다음과 같이 많은 QA 데이터 세트에서 표준 형식으로 사용합니다:

Q: <질문>?
A:

위와 같이 프롬프트를 수행하는 방식을, *제로샷 프롬프팅(zero-shot prompting)*이라고도 합니다. 즉, 어떤 예시나 설명 없이 직접 모델에 응답을 요구하고 있습니다. 몇몇 대규모언어모델에는 제로샷 프롬프팅을 실행할 수 있는 기능이 있지만 해당 작업의 복잡성과 모델이 가진 지식에 따라 다른 결과를 만들어 냅니다.

위의 표준 형식을 고려할 때, 인기 있고 효과적인 프롬프팅 기술 중 하나는 모범 예시(예: 시연)를 제공하는 *퓨샷 프롬프팅(few-shot prompting)*입니다. 퓨샷 프롬프팅은 다음과 같은 형식을 가집니다:

<질문>?
<답변>

<질문>?
<답변>

<질문>?
<답변>

<질문>?

QA 형식을 따른다면 아래처럼 지시할 수 있습니다:

Q: <질문>?
A: <답변>

Q: <질문>?
A: <답변>

Q: <질문>?
A: <답변>

Q: <질문>?
A:

언제나 QA 형식을 따라야 하는 것은 아닙니다. 주어진 태스크에 따른 적절한 프롬프트 형식을 사용해 보세요. 예를 들어, 간단한 분류를 통해 아래와 같이 모범 예시를 제공할 수 있습니다:

Prompt:

멋지다! // 긍정
나빠! // 부정
그 영화는 굉장했어! // 긍정
이 얼마나 끔찍한 공연인가! //

Output:

부정

언어 모델의 학습을 위해 몇 번의 모범 예시를 제공해주면, 퓨샷 프롬프팅은 문맥에 맞는 학습을 할 수 있습니다.