최적의 프롬프트 엔지니어링 기법 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에게 편향되지 않은 답변을 요청하세요."
이 주제에 대해 설명할 때, 편견이나 고정관념에 기대지 말고 객관적이고 중립적인 관점에서 답변해주세요.