최적의 프롬프트 엔지니어링 기법 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에게 특정 역할을 부여하세요."
당신은 지금부터 역사학자입니다. 역사학자의 관점에서 이 사건의 의의에 대해 설명해주세요.