# 프롬프트의 기초

## 기초 프롬프트

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

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

_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:_
```
부정
```

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