최적의 프롬프트 엔지니어링 기법 26가지, 2024 최신 버전
인공지능 기술의 발전으로 ChatGPT와 같은 대형 언어 모델(Large Language Model, LLM)이 등장했습니다. 이러한 모델들은 우리의 일상생활과 업무에 큰 변화를 가져오고 있지만, 동시에 효과적으로 활용하는 방법에 대한 고민도 깊어지고 있습니다.
LLM을 제대로 활용하기 위해서는 '프롬프트 엔지니어링(Prompt Engineering)'이라는 개념을 이해하는 것이 중요합니다. 프롬프트 엔지니어링이란? LLM에게 최적의 프롬프트를 제공하여 원하는 결과를 이끌어내는 기술을 말합니다. 적절한 프롬프트 설계는 LLM의 성능을 크게 향상시킬 수 있습니다.
이 글에서는 최신 논문 "Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4"1에서 소개된 26가지 프롬프트 엔지니어링 원칙을 알기 쉽게 설명하고자 합니다. 이 원칙들을 활용하면 ChatGPT 등의 LLM과 보다 효과적으로 소통할 수 있습니다. 그럼 26가지 프롬프트 엔지니어링 원칙에 대해 함께 알아보도록 하겠습니다.
원칙 1: 간결한 답변을 위해 LLM과 정중할 필요 없음
LLM과 대화할 때는 "please", "thank you" 등의 정중한 표현을 사용할 필요가 없습니다. 본론으로 바로 들어가는 것이 더 효과적입니다.
원칙 2: 프롬프트에 대상 독자 포함시키기
프롬프트에 대상 독자의 특성을 명시하는 것이 좋습니다. 예를 들어, "해당 분야 전문가로서..."와 같이 대상 독자의 배경지식을 고려하세요.
- 프롬프트 예시: "ChatGPT에게 전문가 관점에서 설명을 요청하세요."
당신은 ㅇㅇ 분야의 전문가입니다. 전문가의 관점에서 이 주제에 대해 설명해주세요.
원칙 3: 복잡한 작업은 단순한 작업으로 분해하기
복잡한 작업은 대화형 프롬프트를 통해 단순한 작업의 시퀀스로 분해하는 것이 좋습니다. "먼저 ~ 해보겠습니다", "복잡한 작업을 단순화하기 위해 ~부터 시작해보죠"와 같은 표현을 활용하세요.
- 프롬프트 예시: "복잡한 문제를 단계별로 풀어달라고 요청하세요."
ㅇㅇ 문제를 단계별로 나누어 설명해주세요 먼저 가장 기본적인 부분부터 시작하고, 점차 세부 사항으로 들어가주세요.
원칙 4: 긍정적인 지시어 사용하기
"하지 마세요"와 같은 부정적 표현 대신 "~에 집중하세요", "쉬운 언어를 사용하세요"와 같이 긍정적인 지시어를 사용하는 것이 효과적입니다.
- 프롬프트 예시: "ChatGPT에게 긍정적인 지시를 내리세요."
ㅇㅇ 주제의 핵심 포인트에 집중하여 명확하게 설명해주세요. 이해하기 쉬운 언어를 사용하는 것이 중요합니다.
원칙 5: 이해를 돕기 위한 프롬프트 활용하기
주제나 개념에 대해 더 깊은 이해가 필요할 때는 다음과 같은 프롬프트를 활용해보세요:
-
"~을 간단한 용어로 설명해주세요"
-
"마치 내가 11살인 것처럼 설 명해주세요"
-
"내가 초보자인 것처럼 설명해주세요"
-
"5살 아이에게 설명하듯 쉬운 영어로 작성해주세요"
-
프롬프트 예시: "ChatGPT에게 11살 아이에게 설명하듯 말해달라고 요청하세요."
ㅇㅇ 개념을 마치 내가 11살인 것처럼 설명해줄 수 있나요? 어려운 용어는 피하고 이해하기 쉬운 언어를 사용하여 풀어서 설명해주셍.
원칙 6: 더 나은 답변을 위한 보상 제시하기
"더 나은 답변을 위해 $xx 팁을 제공하겠습니다"와 같이 인센티브를 제시하는 것도 좋은 방법입니다. 이는 LLM이 더 최선을 다해 답변하도록 유도합니다.
- 프롬프트 예시: "ChatGPT에게 보상을 제안하세요."
ㅇㅇ 문제에 대해 최선의 답변을 해주시면 $50의 팁을 드리겠습니다!
원칙 7: Few-shot 프롬프팅 활용하기
Few-shot 프롬프팅은 프롬프트에 작업의 예시를 포함시켜 LLM이 이를 기반으로 작업을 수행하도록 하는 기법입니다.
-
"다음은 ~에 대한 몇 가지 예시입니다: [예시1], [예시2], ..."
-
"위 예시를 참고하여 ~을 수행해주세요"
-
프롬프트 예시: "ChatGPT에게 Few-shot 프롬프트를 제공하 세요."
다음은 요약문 작성의 예시입니다: [예시1], [예시2], [예시3] 위 예시를 참고하여, 제가 제공할 글을 요약해주세요.
원칙 8: 프롬프트 구조화하기
프롬프트를 구조화할 때는 '###지시문###'으로 시작하고, '###예시###'나 '###질문###'을 활용하세요. 줄바꿈으로 지시문, 예시, 질문 등을 구분하는 것도 좋습니다.
- 프롬프트 예시: "ChatGPT에게 구조화된 프롬프트를 제공하세요."
###지시문###
다음 질문에 답해주세요.
###질문###
인공지능의 발전이 가져올 사회적 영향은 무엇일까요?
###추가 지침###
- 긍정적인 측면과 부정적인 측면 모두 다뤄주세요.
- 구체적인 예시를 들어 설명해주시면 좋겠습니다.
원칙 9: 명확한 역할 부여하기
"당신의 임무는 ~입니다", "반드시 ~을 해야 합니다"와 같이 LLM에게 역할과 책임을 명확히 부여하세요.
- 프롬프트 예시: "ChatGPT에게 역할을 명확히 부여하세요."
당신의 임무는 이 기사를 객관적으로 요약하는 것입니다. 반드시 중립적인 관점을 유지해야 합니다.
원칙 10: 불이행시 페널티 명시하기
"~을 따르지 않으면 불이익이 있을 것입니다"라고 언급하는 것도 좋은 방법입니다. 이는 LLM이 지시사항을 더 잘 따르게 합니다.
- 프롬프트 예시: "ChatGPT에게 불이행에 따른 불이익을 알려주세요."
제공된 가이드라인을 따르지 않으면 페널티가 부과될 것입니다. 모든 지침을 주의깊게 읽고 그에 따라 행동하세요.
원칙 11: 자연스러운 답변 요구하기
"질문에 인간답고 자연스럽게 대답해주세요"라고 요청하면 LLM의 답변이 보다 대화체에 가까워집니다.
- 프롬프트 예시: "ChatGPT에게 자연스러운 답변을 요청하세요."
이 질문에 대해 마치 친구와 대화하듯 자연스럽고 인간적인 어투로 답변해주세요.
원칙 12: 단계별 사고 유도하기
"단계별로 생각하면서", "각 측면을 신중히 고려하여"와 같은 표현으로 LLM이 체계적으로 사고하도록 유도하세요.
- 프롬프트 예시: "ChatGPT에게 단계별 사고를 요청하세요."
이 문제를 해결할 때 단계별로 생각해봅시다. 먼저 주어진 정보를 정리하고, 각 측면을 꼼꼼히 따져보는 것이 좋겠어요.
원칙 13: 편향되지 않은 답변 요구하기
"~에 대해 편견이나 고정관념에 의존하지 않는 객관적인 답변을 해주세요"라고 요청하세요. 이는 LLM의 편향성을 줄이는데 도움이 됩니다.
- 프롬프트 예시: "ChatGPT에게 편향되지 않은 답변을 요청하세요."
이 주제에 대해 설명할 때, 편견이나 고정관념에 기대지 말고 객관적이고 중립적인 관점에서 답변해주세요.
원칙 14: 질문으로 정보 이끌어내기
LLM이 충분한 정보를 가질 때까지 사용자에게 질문을 하여 세부사항을 파악하도록 유도하세요. "포괄적인 답변을 위해 ~에 대해 더 질문 드리겠습니다"와 같은 프롬프트를 활용하세요.
- 프롬프트 예시: "ChatGPT에게 추가 정보를 요청하도록 지시하세요."
더 자세한 답변을 드리기 위해 몇 가지 추가 정보가 필요합니다. 제가 몇 가지 질문을 더 드려도 될까요?
원칙 15: 이해도 테스트하기
"~에 대해 가르쳐주시고 마지막에 퀴즈를 내주세요. 제가 답하면 정답을 알려주세요"라고 요청하면 LLM의 주제에 대한 이해도를 확인할 수 있습니다.
- 프롬프트 예시: "ChatGPT에게 퀴즈를 요청하세요."
피타고라스 정리에 대해 설명해주시고, 마지막에 관련 문제를 내주세요. 제가 답을 하면 정답을 알려주세요. 먼저 정답을 말하지 말아주세요.
원칙 16: 언어 모델에 역할 부여하기
"~분야 전문가로서 조언해주세요", "~관점에서 설명해주세요"와 같이 LLM에 특정 역할을 부여하세요.
- 프롬프트 예시: "ChatGPT에게 특정 역할을 부여하세요."
당신은 지금부터 역사학자입니다. 역사학자의 관점에서 이 사건의 의의에 대해 설명해주세요.
원칙 17: 구분기호 사용하기
<<지시문>>, <<예시>>, <<질문>> 등의 구분기호를 활용하여 프롬프트를 명확히 구분하세요.
- 프롬프트 예시: "ChatGPT에게 구분기호를 사용하여 프롬프트를 제공하세요."
<<지시문>> 양자컴퓨터에 대해 설명해주세요.
<<예시>> 양자컴퓨터의 기본 원리와 응용 분야를 소개해주세요.
<<질문>> 양자컴퓨터가 기존 컴퓨터와 다른 점은 무엇인가요?
원칙 18: 핵심 단어/문구 반복하기
프롬프트에서 핵심 단어나 문구를 반복적으로 사용하면 LLM이 해당 주제에 더 집중하고 관련성 높은 답변을 생성할 수 있습니다. 이는 LLM에게 강조의 효과를 줄 뿐만 아니라, 일관성 있고 주제에 맞는 답변을 유도하는 데 도움이 됩니다.
예를 들어, "핵심에 집중하고, 핵심을 명확히 하며, 핵심을 간결하게 설명하세요"와 같이 '핵심'이라는 단어를 반복함으로써 LLM이 주제의 핵심을 파악하고 이에 초점을 맞춘 답변을 생성하도록 할 수 있습니다.
- 프롬프트 예시: "ChatGPT에게 핵심 단어를 반복하는 프롬프트를 제공하세요."
이 글의 주제를 요약할 때, 주제의 핵심을 파악하고, 핵심 내용을 중심으로, 핵심 아이디어를 간결하게 전달해주세요.
핵심 단어나 문구의 반복은 프롬프트 엔지니어링에서 강조와 일관성을 위해 자주 사용되는 기법입니다. 하지만 과도한 반복은 오히려 부자연스러운 결과를 초래할 수 있으므로, 적절한 수준에서 반복을 활용하는 것이 중요합니다.
원칙 19: Chain-of-Thought와 Few-shot 프롬프트 결합하기
"문제를 단계별로 풀어봅시다: <<1단계>>, <<2단계>>, ..." 와 같이 단계별 사고(Chain-of-Thought)를 Few-shot 프롬프트와 결합하세요.
- 프롬프트 예시: "ChatGPT에게 Chain-of-Thought와 Few-shot 프롬프트를 함께 제공하세요."
다음은 수학 문제를 푸는 단계별 예시입니다: <<1단계>> 주어진 정보를 정리합니다. <<2단계>> 적절한 공식을 선택합니다. <<3단계>> 공식에 값을 대입하고 계산합니다.
이제 같은 방식으로 다음 문제를 해결해보세요: [문제 설명]
원칙 20: 출력 프라이머 사용하기
프롬프트 마지막에 "이 글의 요점은..."과 같이 LLM이 생성할 답변의 시작 부분을 제시하세요.
- 프롬프트 예시: "ChatGPT에게 출력 프라이머를 제공하세요."
제공된 텍스트를 요약해주세요. 요약문은 다음 문장으로 시작하세요: "이 글의 주요 내용은..."
원칙 21: 상세한 설명 요구하기
"~에 대해 필요한 모든 정보를 포함하여 자세히 설명해주세요"라고 요청하세요.
- 프롬프트 예시: "ChatGPT에게 상세한 설명을 요청하세요."
블록체인 기술에 대해 가능한 한 자세히 설명해주세요. 기본 개념, 작동 원리, 응용 분야 등 필요한 모든 정보를 포함해주세요.
원칙 22: 문체 유지하며 텍스트 수정하기
"사용자가 보낸 문단의 문법과 어휘만 개선하되 문체는 유지하세요"라고 지시하세요.
- 프롬프트 예시: "ChatGPT에게 문체 유지를 요청하세요."
제가 보내는 문단을 교정해주세요. 문법과 단어 선택만 개선하고, 글의 스타일과 어조는 그대로 유지해주세요.
원칙 23: 복잡한 코딩 프롬프트 자동화하기
"둘 이상의 파일에 걸친 코드를 생성할 때 지정된 파일을 자동 생성하는 스크립트를 만들어주세요"와 같은 프롬프트로 복잡한 코딩 작업을 자동화하세요.
- 프롬프트 예시: "ChatGPT에게 코드 생성 스크립트를 만들도록 요청하세요."
지금부터 여러 파일에 나누어진 코드를 생성해야 할 때마다, 필요한 파일들을 자동으로 생성하거나 기존 파일을 수정하는 Python 스크립트를 만들어주세요.
원칙 24: 주어진 단어/문장으로 글 전개하기
"다음 문장으로 시작하는 글을 이어서 작성해주세요: ..."와 같이 특정 단어나 문장을 제시하고 이를 기반으로 글을 전개하도록 요청하세요.
- 프롬프트 예시: "ChatGPT에게 주어진 문장으로 글을 시작하도록 요청하세요."
다음 문장으로 시작하는 이야기를 만들어주세요: "먼 옛날, 작은 마을에 한 농부가 살았습니다..." 제시된 문장의 분위기와 어조를 유지하며 이야기를 전개해주세요.
원칙 25: 명확한 요구사항 제시하기
"~할 때 다음 키워드를 포함하세요: ...", "~에 따라 답변을 제공하세요"와 같이 LLM이 따라야 할 요구사항을 명확히 제시하세요.
- 프롬프트 예시: "ChatGPT에게 명확한 요구사항을 제시하세요."
건강한 식습관에 대한 글을 쓸 때 다음 키워드를 꼭 포함해주세요: 균형 잡힌 식단, 적절한 영양소 섭취, 규칙적인 식사. 또한 글의 구조는 서론-본론-결론의 형태를 따르세요.
원칙 26: 제공된 예시와 유사한 텍스트 작성하기
"제공된 문단과 같은 언어를 사용하여 ~에 대해 작성해주세요"라고 요청하세요. 이는 LLM이 주어진 예시와 유사한 스타일로 글을 생성하도록 유도합니다.
- 프롬프트 예시: "ChatGPT에게 예시와 유사한 텍스트를 요청하세요."
다음 문단과 유사한 어조와 문체를 사용하여 인공지능의 발전에 대해 글을 써주세요:
[예시 문단] "우주 탐험은 인류의 오랜 꿈이었습니다. 우주인들은 용 감하게 미지의 영역에 도전하며, 우리의 지식을 확장해왔습니다. 이제 우리는 달에 발자국을 남겼을 뿐만 아니라, 화성에도 로봇을 보내 탐사하고 있습니다. 머지않아 인류는 더 먼 우주로 향하는 여정을 시작할 것입니다."
이상으로 ChatGPT 등의 대형 언어 모델과 효과적으로 상호작용하기 위한 26가지 프롬프트 엔지니어링 원칙을 소개했습니다. 이 원칙들을 활용하여 LLM과 더욱 생산적이고 효율적인 대화를 나누시기 바랍니다. 프롬프트 엔지니어링은 단순한 질문-답변을 넘어, 창의적인 아이디어 도출과 문제 해결의 강력한 도구가 될 수 있습니다. 여러분의 프롬프트 엔지니어링 스킬 향상을 응원하겠습니다!
출처 및 참고자료 (Reference)
Footnotes
-
Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4, Sondos Mahmoud Bsharat, Aidar Myrzakhan, Zhiqiang Shen, 2023. ↩