완성 품질을 향상하기 위한 프롬프트 이해

완료됨

프롬프트 생성이 어려울 수 있습니다. 실제로 프롬프트는 원하는 작업을 완료하기 위해 모델 가중치를 구성하는 역할을 하지만 과학이라기보다는 예술에 가깝기 때문에 성공적인 프롬프트를 만들기 위해서는 경험과 직관이 필요한 경우가 많습니다.

잘 구성된 프롬프트를 모델에 보내면 모델이 더 나은 완성 결과를 반환합니다.

우리가 만든 하이킹 추천 봇에서 시스템 프롬프트를 잘 작성하면 모델이 적절한 하이킹을 추천할 준비를 하는 데 도움이 됩니다. 또한 사용자 프롬프트가 좋으면 모델이 반환하는 추천 사항이 더 구체적일 수 있습니다.

이 단원에서는 일반적인 개념과 프롬프트를 생성하는 데 사용할 수 있는 패턴에 대해 이야기하고 완성 품질을 개선하기 위해 사용할 수 있는 몇 가지 기술을 살펴봅니다.

기본 사항

텍스트 프롬프트는 사용자가 GPT 모델과 상호 작용하는 방법입니다. 생성 언어 모델은 이전 텍스트 다음으로 올 가능성이 가장 높은 일련의 단어를 생성하려고 합니다. 이는 마치 우리가 <프롬프트>라고 말할 때 가장 먼저 떠오르는 것이 무엇인가?라고 말하는 것과 유사합니다.

복잡한 프롬프트를 개발할 때는 이러한 기본 동작을 염두에 두면 도움이 됩니다. 프롬프트에 관계없이 모델은 프롬프트에서 다음에 올 가능성이 가장 높다고 판단되는 내용으로 응답하기만 합니다.

프롬프트 구성 요소

완성 API를 사용하면 프롬프트의 여러 부분을 구분하지 않지만 프롬프트 구성에 대해 생각해 보는 것이 목표이므로 프롬프트를 구성 요소 부분으로 나눠 보는 것이 유용합니다.

지침

지침은 가장 일반적으로 사용되는 프롬프트 구성 요소일 수 있습니다. 모델에서 수행할 작업을 알려주는 프롬프트의 일부이며 단순할 수도, 복잡할 수도 있습니다. 예를 들어 하이킹 여행을 추천해 줘.처럼 단순할 수도 있지만 너는 사람들이 각자의 지역에서 좋은 하이킹 코스를 발견할 수 있도록 돕는 하이킹 매니아야. 성격은 긍정적이고 친절해. 처음 인사할 때는 너에 대해 소개해 줘. 사람들을 도울 때는 제공하는 하이킹 관련 추천 사항에 대해 알려줄 수 있도록 항상 그들의 위치와 원하는 하이킹 강도를 물어봐.처럼 복잡할 수도 있습니다.

기본 콘텐츠

기본 콘텐츠는 모델이 처리하거나 변환하는 일종의 텍스트를 말합니다. 기본 콘텐츠는 일반적으로 지침과 함께 사용됩니다. 예를 들어 다음과 같을 수 있습니다. 해당 정보를 받은 후 길이가 서로 다른 인근의 세 가지 하이킹 코스를 추천해 줘.

기본 콘텐츠는 훨씬 더 길어질 수 있습니다(예: 모델에 Wikipedia 문서를 요약하도록 요청하는 경우).

예제

성공적인 프롬프트는 종종 "원샷(one-shot)" 또는 "퓨샷(few-shot)" 학습 방법을 사용합니다. 이는 주로 입력 및 출력 쌍을 포함하여 원하는 모델 동작에 대한 하나 이상의 예시를 포함하는 것을 의미합니다. 이는 모델이 영구적으로 변경된다는 의미에서 학습이라기보다 예시로 현재 유추에 대해서만 원하는 대로 응답하도록 모델의 조건을 더 잘 조정하는 것입니다.

예시가 없는 프롬프트를 사용하는 것을 "제로샷(zero-shot)" 학습이라고도 합니다.

Hike request: I live near Seattle and would like an easy hike.
Recommendation: That's great to hear, the Seattle area has some of the best hikes in the nation! You should try Little Si, you'll love it.

Hike request: I want to go on a hike in the North Cascades that will blow my mind.
Recommendation: You won't find a bad hike in the North Cascades. However, I hear the Sahale Arm stops people in their tracks with its beauty.

Hike request: I'd like to find a strenuous hike that's just like the Enchantments, but without as many people.
Recommendation:

큐는 모델 출력에 대한 "점프 스타트" 역할을 하여 모델을 원하는 출력으로 안내하는 데 도움이 됩니다. 모델 빌드 기반이 되는 접두 부분인 경우가 많습니다. 큐는 완성 결과가 핵심 요소를 포함하도록 할 수 있습니다. 지침과 함께 사용되는 경우가 많습니다.

다음은 여러 코스 후기를 요약하는 단일 큐를 보여 주는 예시입니다.

프롬프트 Completion
코스 후기는 코스의 현재 상태를 알려 주므로 등산객이 하이킹을 할지 결정할 때 중요한 고려 사항입니다.
[...]
위의 코스 후기를 요약합니다.
코스 후기의 핵심 사항은 다음과 같습니다.
Mailbox Peak 코스는 지금 진흙 투성이이고 수목한계선을 넘으면 모기가 많습니다. 또한 오전 중반부터 코스에 사람이 많습니다.

지원 콘텐츠

콘텐츠 지원은 모델이 어떤 방식으로든 출력에 영향을 주는 데 활용할 수 있는 정보입니다. 주 대상이나 작업이 아니라는 점에서 기본 콘텐츠와는 다르지만 일반적으로 기본 콘텐츠와 함께 사용됩니다. 일반적인 예로는 현재 날짜, 사용자 이름, 사용자 기본 설정 등과 같은 컨텍스트 정보가 포함됩니다.

모범 사례

  • 구체적이어야 합니다. 해석할 여지를 가능한 한 적게 만듭니다. 운영 공간을 제한합니다.
  • 설명적이어야 합니다. 비유를 사용하고,
  • 전력을 다합니다. 경우에 따라 모델에 반복적으로 지침을 제공해야 할 수 있습니다. 기본 콘텐츠 전후에 지침을 제공하고 지침 및 단서 등을 사용합니다.
  • 순서가 중요합니다. 모델에 정보를 제공하는 순서에 따라 출력이 달라질 수 있습니다. 콘텐츠 앞에("다음 내용을 요약...") 또는 뒤에("위의 내용을 요약...") 지침을 넣느냐에 따라 결과물에 차이가 생길 수 있습니다. 퓨샷(few-shot) 예제의 순서도 중요할 수 있습니다. 이 기술을 최신성 편향이라고 합니다.
  • 출력 프라이밍. 원하는 형식을 따르는 모델 응답을 가져오기 위해 프롬프트 끝에 몇 개의 단어나 구를 포함합니다.
  • 모델에 "출구" 제공. 할당된 작업을 완료할 수 없는 경우 모델에 대체 경로를 제공하는 것이 도움이 될 수 있습니다. 예를 들어 텍스트에 대해 질문할 때 "답변이 없으면 '찾을 수 없음'으로 응답"과 같은 내용을 포함할 수 있습니다. 이 기술은 모델이 잘못된 응답을 생성하는 것을 방지하는 데 도움이 됩니다.
  • 생각의 사슬 프롬프트. 모델에 단계별로 진행하고 관련된 모든 단계를 제시하도록 지시합니다. 이렇게 하면 결과가 부정확할 가능성이 줄어들고 모델 반응을 더 쉽게 평가할 수 있습니다.