질문에도 레시피가 필요하다
바보 같은 질문에 현자 같은 답은 없습니다.
대형언어모델을 이용하다 보면, 정교하고 상세한 프롬프트를 설계해 이용하거나 또는 기존 프롬프트 템플릿을 가져다 이용하는 게 더 나은 선택인 경우가 종종 있습니다. 모델에 마구잡이로 요청하게 되면, 만족스러운 결과를 얻지 못하거나, 얻는다고 해도 많은 토큰과 시간을 허비할 수 있으니까요.
그런데 사실, 굳이 일부러 프롬프트를 설계하거나 템플릿을 찾아 이용할 필요가 없는 작업들도 많습니다. 그런 상황에서 이용할 수 있는 다음의 "인스턴트 프롬프트 공식"을 기억하면, 짧고 명료한 프롬프트로 모델의 응답을 잘 끌어낼 수 있습니다. 이 공식은 네 가지 파트로 구성되어 있습니다.
인스턴트 프롬프트 공식:
제가 인스턴트 프롬프트 공식이라는 이름을 붙인 이유는, 말 그대로 즉석에서 간편하게 프롬프트를 조리(?)해 먹을 수 있기 때문입니다. 이를 통해 사용자는 불필요한 시행착오 없이, 시간과 자원을 절약하면서 원하는 결과를 얻을 수 있게 됩니다. 파트별로 자세히 설명하면 다음과 같습니다.
1. “역할 부여”
이 부분에서는 모델이 특정 역할, 전문가, 인물, 캐릭터로서 행동하도록 지시합니다. 사용자는 이를 통해 모델이 어떤 관점이나 전문성을 바탕으로 반응할지 명확히 할 수 있습니다. 예를 들어, "당신은 투자 전문가로 행동합니다"라고 프롬프팅하면, 모델은 금융과 관련된 정보를 분석하고 해석하는 데 초점을 맞추게 됩니다.
이처럼 모델에 역할을 부여해 관점, 지식, 톤(어조)에 맞춰 답변하도록 만드는 것을 페르소나 패턴이라고 하는데, 이에 대해서는 제가 이미 시리즈로 자세히 다룬 바 있습니다. 자세한 내용은 이전 글을 참고하세요.
2. “배경 정보 제공”
이 부분에서는 모델이 주어진 문제를 제대로 이해하고 수행할 수 있도록 필요한 맥락과 관련 정보를 제공합니다. 이러한 배경 정보를 통해 모델은 문제에 대해 깊이 있게 이해할 수 있으며, 이는 결과의 정확성과 관련성을 높여줍니다.
예를 들어, 특정 시장 분석 요청 시 시장의 현재 상황, 과거 데이터, 경쟁 상황 등에 대한 자료를 제공함으로써, 모델이 더 정교하고 유용한 분석을 생성할 수 있도록 합니다. 또는 "본사 요청으로 신제품을 기획하는 중입니다"처럼 사용자가 처한 상황을 제공하는 것도 좋은 방법입니다.
배경 정보는 결과물의 품질에 상당한 영향을 미치므로 가능한 한 구체적으로 제공하는 게 좋습니다만, 특별한 정보가 없다면 굳이 작성하지 않아도 됩니다.
3. “작업 지시”
이 부분에서는 모델에게 구체적으로 무엇을 해야 하는지 명시합니다. 예를 들어, “고객 리뷰에서 주요 불만 사항을 식별하고 요약해 주세요”라는 식으로, 명확하게 작업을 지시해야 합니다.
작업 지시에 목적이나 기대 결과를 포함하는 것도 좋은 방법입니다. 예를 들어, "독자들이 주제와 내용을 쉽게 이해할 수 있도록 서문을 작성해 주세요”라고 지시할 수 있습니다.
4. “출력 형식 정의”
이 부분에서는 모델이 결과를 제시할 때 따라야 할 형식을 지정합니다. 여기에 결과물의 구조, 분량, 스타일 등을 포함할 수 있습니다. 이처럼 출력 형식을 정의함으로써, 사용자가 필요로 하는 형태로 결과물을 출력하고 일관성과 가독성을 높일 수 있습니다.
예를 들어, “100자 내외로”, “5개 항목으로”, "A4 1장 분량으로", "3~5개 문단으로", "번호 목록으로", "표 형태로" 등으로 지시할 수 있습니다. 다만, 모델에 따라 출력 형식을 만족스럽게 처리하지 못할 수 있으므로 감안해서 이용하셔야 합니다. 참고로 챗GPT, 제미나이, 클로바X 등 대부분의 모델이 한글 분량을 정확히 맞추지 못합니다.
이와 같은 네 가지 파트를 기억하고서, 원하는 작업이 있을 시 빠르게 프롬프트를 작성하면 됩니다. 이 공식에 따라 작성한 프롬프트 예시들은 다음과 같습니다. 모델의 응답 결과는 포함하지 않았습니다.
프롬프트 예시
“마케팅 전문가” + “OO 제품 출시를 앞두고 랜딩페이지 텍스트를 만드는 상황” + “OO 제품의 주요 특징 3가지 작성” + “250자 이내”
➡ 당신은 마케팅 전문가로 행동합니다. OO 제품 출시를 앞두고 랜딩페이지 텍스트를 만드는 중입니다. OO 제품의 주요 특징 3가지를 250자 이내로 작성해 주세요.
“HR 컨설턴트” + “스타트업의 인재 채용 가이드를 만드는 상황” + “핵심 인재 영입을 위한 프로세스 작성” + “5단계”
➡ 당신은 HR 컨설턴트로 행동합니다. 스타트업의 인재 채용 가이드를 만드는 중입니다. 핵심 인재 영입을 위한 프로세스를 5단계로 작성해 주세요.
“요리 블로거” + “간단한 주말 브런치 메뉴 레시피 콘텐츠를 만드는 상황” + “5가지 메뉴 레시피와 팁 작성” + “표 형태”
➡ 당신은 요리 유튜버로 행동합니다. 간단한 주말 브런치 메뉴 레시피 콘텐츠를 만드는 중입니다. 5가지 메뉴에 대한 레시피와 팁을 표 형태로 작성해 주세요.
“프로젝트 매니저” + “일정이 무척 촉박한 프로젝트의 주요 리스크를 식별하고 완화 전략을 개발해야 하는 상황” + “리스크 평가 보고서 아웃라인 작성” + “서론, 본론(5개 섹션), 결론 형식”
➡ 당신은 프로젝트 매니저로 행동합니다. 현재 진행 중인 프로젝트의 일정이 무척 촉박합니다. 프로젝트의 주요 리스크를 식별하고 완화 전략을 개발해야 합니다. 리스크 평가 보고서 아웃라인을 작성해 주세요. 서론, 본론(5개 섹션), 결론 형식으로 구성해 주세요.
이처럼 인스턴트 프롬프트 공식을 이용하면, 즉시 명확하면서도 간략한 프롬프트를 만들어 모델에게 효과적으로 작업을 지시하고 높은 품질의 결과물을 얻을 수 있습니다.
간단하고 어렵지 않은 공식입니다만, 반사적으로 빠르게 이용하기 위해서는 각 요소를 잘 이해하고 많이 사용해 보아야 합니다. 초기에는 약간의 연습이 필요하더라도, 어느 순간 물 흐르듯이 프롬프트가 작성되면서 더 자세한 맥락을 추가하고 더 정교한 프롬프트를 설계하는 것도 쉬워질 겁니다.
다만, 이러한 프롬프트 공식이 맞지 않는 상황도 있습니다. 특히 모델의 창의적이고 열린 사고가 필요하다면, 굳이 이런 공식을 따를 필요는 없습니다. 공식화된 프롬프트 구조는 어떤 식으로든 제약이 될 수 있으니까요.
질문의 깊이가 곧 답변의 넓이가 됩니다.