쉽게 이해하는 프롬프트 엔지니어링 - 26가지 프롬프트 쓰는 법
바로, "프롬프트 엔지니어링"이란 게 필요하기 때문이에요!
프롬프트 엔지니어링이란?
프롬프트 엔지니어링은 AI에게 말을 잘 거는 방법이에요! 예를 들어볼게요:
예시 1: "숙제 도와줘!" (AI: 무슨 숙제요?)
예시 2: "수학 문제 푸는 법 좀 알려줘!" (AI: 수학이요? 어떤 문제인가요?)
예시 3: "2차 방정식 푸는 방법을 자세히 설명해 줘!" (AI: 오케이! 2차 방정식은 이렇게 푸는 거예요~)
어때요? 마지막 질문이 더 정확한 대답을 얻을 수 있었죠? 이렇게 AI에게 똑똑하게 질문하는 방법이 바로 프롬프트 엔지니어링이에요!
친구에게 소개팅을 부탁하더라도 “나 연애 좀 하게 도와줘!”보다는 “그때 같이 봤던, 걔 아직 애인 없으면 좀 소개해줘"라고 말하면 (결과는 모르겠지만 어쨌든) 친구도 도와주기가 훨씬 쉽겠죠?
[질문만으로 chatGPT 성능을 높이는 26가지 프롬프트 원칙]
그래서 AI랑 대화할 때 더 똑똑한 답변을 얻을 수 있는 26가지 방법을 정리해 봤습니다!
이 방법을 알면, 내가 원하는 답을 AI로부터 더욱 정확하게 얻을 수 있습니다!
1. 굳이(?) 예의를 지킬 필요는 없습니다: 불필요한 단어를 제거하고 핵심 요청만 전달하세요.
예시)
잘못된 예: "안녕하세요, 죄송한데 이 문장을 요약해 주실 수 있을까요? 감사합니다!"
올바른 예: "이 문장을 요약해 주세요."
2. 대상 청중을 명확히 지정 :눈높이에 맞는 답변이 제공되도록 대상 청중을 지정하세요.
예시)
"초등학생이 이해할 수 있도록 블랙홀을 설명해 주세요."
"IT 전문가를 대상으로 AI의 작동 원리를 설명해 주세요."
3. 복잡한 작업을 여러 단계로 나누기: 한 번에 너무 많은 정보를 요구하지 말고, 단계적으로 요청하세요.
예시)
"케이크를 만드는 법을 3단계로 설명해 주세요."
"논문을 요약하고, 핵심 내용을 표로 정리한 후, 한 문장으로 요약해 주세요."
4. 긍정적인 언어 사용: "하지 마세요"보다는 "이렇게 하세요"처럼 긍정적인 표현을 사용하세요.
예시)
잘못된 예: "어려운 단어를 사용하지 마세요."
올바른 예: "쉬운 단어를 사용해 주세요."
5. '어린이에게 설명하듯이' 다양한 방식 설명 요청: 초보자에게 하듯이(어린이에게 하듯이) 비유, 사례, 그림, 쉬운 언어 등 다양한 방식으로 설명하도록 요청하세요.
예시)
"컴퓨터 메모리를 도서관에 비유하여 설명해 주세요."
"5살 어린이가 이해할 수 있도록 간단히 설명해 주세요."
6. 보상을 제안해 응답 품질 향상
예시)
"가장 창의적인 답변을 제공하면 팁! 을 줄게요!"
7. 예제 중심의 프롬프트 작성: 원하는 응답 형식을 제공하는 예제를 포함하세요.
**Few-shot Prompting 기법을 활용해 입력-출력 예제를 포함해 원하는 형식을 전달합니다. 이건 나중에 따로 한번 설명드릴게요 :)
예시)
"아래 예제처럼 답변해 주세요"
---------------------
#출력 예제
질문: 고양이는 몇 살까지 살아요?
답변: 고양이는 평균 12~16년을 삽니다.
8. 구조화된 지시문 활용: ###지시문###, ###예제###, ###질문### 등의 마크다운 형태로 명확성을 높입니다.
예시)
###지시문###
아래 문장을 영어로 번역하세요.
###문장 ##
"오늘 날씨가 좋아요."
9. 강제성 있는 표현 사용: "반드시~", “~해야 합니다” 같은 표현을 사용하세요.
예시)
"이 문장을 반드시 20자 이내로 요약하세요."
"5단계로 논리적으로 설명해야 합니다."
10. 불이행 시 페널티 명시: 불이행 시 받게 되는 불이익(?)을 넣어보세요.
예시:
"모든 답변은 세 문장으로 구성하세요. 불이행 시 답변이 무효 처리됩니다."
"모든 답변에 근거 자료를 포함하세요. 불이행 시 답변은 신뢰할 수 없는 것으로 간주됩니다."
� ~ "불이행 시 답변이 부적절한 것으로 간주됩니다, 불이행 시 답변이 거부될 수 있습니다"처럼 '구체적인 페널티를 명시하면 AI가 더 정확하고 일관된 답변을 생성할 가능성이 높아집니다!
11. "자연스럽고 실제 사람 간의 대화처럼 주어진 질문에 대답하세요"를 추가
예시:
"친구에게 설명하듯 자연스럽게 말해 주세요."
"딱딱하지 않은, 친근한 톤으로 작성해 주세요."
12. 단계적 사고 유도 (Chain-of-Thought, CoT): 한 번에 답을 요구하지 말고, 사고 과정을 단계적으로 설명하도록 요청하세요.
예시)
"한 단계씩 논리적으로 설명해 주세요."
"이 수학 문제를 단계별로 풀어 주세요."
13. 편향 최소화: 특정 입장에 치우치지 않도록 요청하세요.
예시)
"객관적인 근거를 바탕으로 설명해 주세요."
"양측의 의견을 공정하게 제시해 주세요."
"편향되지 않도록, 고정관념에 의존하지 않도록 해주세요"
14. 정보가 충분할 때까지, 질문하라고 요청하세요: AI가 질문을 하거나 추가 정보를 요청하도록 유도하세요.
예시)
"더 구체적인 답변을 위해 추가로 필요한 정보가 있다면 질문해 주세요."
"지금 주어진 정보만으로 충분한지 먼저 확인하고, 부족하면 추가 질문을 해 주세요."
"더 나은 답변을 위해 어떤 정보를 제공해야 하는지 물어봐 주세요."
15. 학습 기반 테스트로 답이 맞는지 확인: [이론/주제/규칙]으로 설명한 후, 테스트를 추가해서 답이 맞는지 확인하도록 요청하세요.
예시)
"개념을 설명한 후, 제가 제대로 이해했는지 확인할 수 있도록 간단한 퀴즈를 추가해 주세요."
"이론을 설명한 다음, 이를 실제로 적용할 수 있는 테스트 질문을 포함해 주세요."
"설명 후, 독자가 내용을 잘 이해했는지 확인할 수 있는 짧은 퀴즈를 만들어 주세요."
"개념을 설명하고, 이를 연습할 수 있도록 관련된 연습 문제를 제공해 주세요."
이렇게 하면 AI가 단순히 정보를 제공하는 것에 그치지 않고, 사용자가 이해했는지를 스스로 점검할 수 있도록 도와줄 수 있어요!
16. 역할 부여하여 답변 생성: AI에게 특정 역할을 부여하면 더 전문적인 답변을 얻을 수 있습니다.
예시)
"당신은 의사입니다. 환자에게 건강 조언을 제공해 주세요."
"당신은 역사학자입니다. 중세 유럽에 대해 설명해 주세요."
17. 구분자 사용: 텍스트의 중요한 부분을 ###, ---, ** 등의 기호를 사용해 강조합니다.
예시)
### 핵심 정보 ###
- 이 부분은 매우 중요합니다.
-----
추가 정보:
- 여기에 보충 설명을 추가합니다.
*마크다운 기법과는 뭐가 다르냐?! 하실 수 있죠! 마크다운 기법은 따로 정리해 드릴 텐데요, 여기서는 간단히 결론만 말씀드릴게요.
한마디로!
- "구분자 사용"은 그냥 보기에 "눈에 띄도록" 강조하는 방법
-"마크다운"은 정식 문서 포맷이라서 다양한 기능(표, 링크, 코드 등)까지 포함 가능!
18. 특정 단어 반복 사용: 특정 키워드를 반복하여 강조하면 AI가 중요한 개념을 인식하는 데 도움이 됩니다.
예시)
"AI는 인공지능의 한 형태입니다. 인공지능(AI)은 데이터를 분석하는 능력을 갖고 있습니다. 인공지능 기술은 다양한 분야에서 사용됩니다."
"업무 자동화는 생산성을 높이는 방법입니다. 업무 자동화 도구를 사용하면 반복적인 작업을 줄일 수 있습니다. 업무 자동화를 통해 시간과 비용을 절약할 수 있습니다."
"챗봇은 사용자와 대화하는 프로그램입니다. 챗봇은 질문에 답변하고, 챗봇은 고객 지원을 자동화할 수 있습니다. 챗봇을 활용하면 업무 효율성이 향상됩니다."
19. Chain-of-Thought(CoT) 및 Few-shot 결합: 단계적 사고 과정과 예제를 함께 제공하여 논리적이고 정밀한 답변을 유도하세요.
예시 1)
수학 문제 해결 (단계적 사고 + 예제 제공)
"이 문제를 단계적으로 풀어보세요"
예제:
2 + 2 = 4,
3 + 3 = 6.
이제 5 + 5를 계산하세요.
-----------------------------------------------------------------------------
예시 2)
"문장을 요약하는 방법을 단계별로 따라 해 보세요"
예제:
원문 - '사과는 건강에 좋은 과일이며, 비타민C가 풍부하다.' → 요약 - '사과는 비타민C가 풍부한 건강 과일.'
이제 다음 문장을 같은 방식으로 요약해 보세요: '운동은 신체 건강과 정신 건강을 모두 향상하는 중요한 활동이다.'"
20. 출력 방향 설정: 원하는 응답 형식을 미리 지정하면 보다 일관된 답변을 받을 수 있습니다.
예시)
"모든 답변의 첫 문장은 '이 문제를 해결하려면...'으로 시작해야 합니다."
"결론 부분에서 요점을 한 줄로 요약해 주세요."
"답변을 3개의 핵심 포인트로 요약해 주세요. 숫자가 매겨진 목록 형식(1, 2, 3...)으로 제공해 주세요."
"답변을 마크다운 형식으로 제공해 주세요. 제목은 #, 강조할 부분은 **굵게** 처리하세요.
출력은 HTML 코드로 제공해 주세요. <h1> 제목 </h1> 형태로 작성해 주세요."
이처럼 원하는 응답 형식을 AI에게 미리 지정하면, 일관성 있는 답변을 받을 수 있어요!
21. "필요한 모든 정보를 추가해~" 세부 정보 포함 요청: AI가 답변을 단순 요약이 아닌 자세하게 제공하도록 유도하세요.
예시)
"2024년 기술 트렌드를 설명하고, 각 트렌드의 주요 기업과 사례를 포함해 주세요. 필요한 모든 정보를 포함한 상세한 답변을 제공하세요."
22. 기존 글의 스타일 유지:
기존 텍스트 스타일을 유지하면서 문법과 어휘는 개선하도록 요청하면 일관성이 유지됩니다. (형식적인 비즈니스 문서는 문법적 오류 등을 수정 후에도 형식적인 톤을 유지, 친근한 스타일의 글은 수정 후에도 친근한 톤을 유지할 때 유용합니다.)
예시)
"이 글의 톤 앤 매너를 유지하면서 더 자연스럽게 문장을 다듬어 주세요."
"아래 첨부한 보고서의 글쓰기 스타일과 톤 앤 매너를 지켜주세요."
23. 복잡한 코딩 작업 처리: 여러 개의 파일을 다루거나 복잡한 코딩 프로그램을 작성할 때 명확한 요청을 포함하세요. 수동으로 각 파일을 만들고 코드를 복사-붙여 넣기 하는 대신 자동화 스크립트를 생성하라는 원칙입니다. (스크립트 언어는 다른 프로그램이나 파일을 제어하고 자동화하는 데 특화되어 있어 이러한 작업에 적합합니다)
예시)
# "Python으로 웹 프로젝트를 생성할 때 필요한 모든 디렉터리와 파일들을 자동으로 생성하는 스크립트를 작성해 주세요."
--> 이렇게 하면 AI는:
1) 필요한 폴더 생성
2) 기본 파일들 생성
3) 초기 코드 작성 등을 자동으로 수행하는 스크립트를 생성합니다
24. 특정 단어나 구, 문장을 사용해 텍스트 시작: AI에게 특정 텍스트의 시작 부분을 제공하고, 그 스타일과 흐름을 유지하면서 나머지 부분을 완성하도록 요청하는 프롬프트 기법입니다. AI가 글을 작성할 때 일관성을 유지할 수 있습니다.
예시)
"스토리의 시작 부분을 제공합니다: '어느 화창한 봄날, 민수는 공원에서...' 이 시작 문장을 기반으로 이야기를 완성해 주세요."
"이 텍스트를 시작점으로 사용하여 500자 이상으로 확장해 주세요: '인공지능은 현대 사회에서 중요한 역할을 합니다...'"
25. 키워드와 힌트 포함: AI가 특정 개념을 포함하도록 명확하게 지시하세요.
예시)
"반드시 '기계 학습', '딥 러닝', '자연어 처리'라는 단어를 포함해 글을 작성해 주세요"
26. 유사한 텍스트 작성 요청: 샘플을 제공하고 해당 스타일을 유지하도록 요청합니다.
예시)
다음 예제와 비슷한 스타일로 작성해 주세요
예제: '기술 발전이 가속화되고 있다...' "
이 글은 Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4에 대한 논문을 요약, 정리했습니다. 해당 논문의 목표는 다양한 LLM(LLaMA-1/2, GPT-3.5/4 등)에 대한 프롬프트 설계 및 질문 기법을 최적화하여, 모델의 능력을 보다 쉽게 탐구하고 응답 품질을 향상하는 것입니다.
"이 글이 유용했다면, 친구와 동료에게도 공유해 주세요!"
여러분들의 구독, 좋아요, 댓글은 꾸준히 유익한 콘텐츠를 전달하는 데 엄청난 힘이 됩니다 :)
꼭꼭 적용해 보세요 >-< 인용 시 반. 드. 시 출처만 밝혀주세요
감사합니다.!!
이미 잘 쓰시는 분들도 있겠지만! 아직은 생소한 용어도 많고, 잘 모르겠다는 분들도 있을 거예요.!
오늘도 밥을 처음 짓는 사람이 있고 운전이 처음인 분들도 있는 것처럼 챗GPT도 오늘이 처음인 분들이 분명히 있을 것입니다.!
이거 다 아는 내용인데~ 그러기보다는, 이렇게 논문으로 누군가 연구하고, 정리된 글을 한번 더 보면서! 오늘도 혹시 챗GPT가 처음인 분들을 만나면 "내가 알려준다~"는 기분으로 이 글을 봐주시면 감사하겠습니다.
◆ 26가지 프롬프트 주요 설계 원칙
프롬프트 구조 및 명확성(예: 청중을 명확히 설정)
정보의 구체성(예: 편향을 피하라는 명령 추가)
사용자 상호작용(예: 모델이 추가 질문을 하도록 유도)
스타일 및 언어(예: 명확한 요구사항을 설정)
복잡한 작업 수행(예: 체인 오브 생각(CoT) 기법 활용)
◆ 프롬프트 엔지니어링의 중요성
*LLM의 성능은 주어진 프롬프트의 품질에 의해 크게 좌우됩니다.
*연구자와 일반 사용자들이 최적의 질문과 명령을 생성할 수 있도록 원칙을 정립함.
◆ 한계점 및 향후 연구 방향
연구는 GPT 및 LLaMA 계열 모델에 초점을 맞추었으나, 다른 모델 아키텍처에서도 동일한 효과를 보일지는 추가 연구가 필요
향후 원칙을 적용한 데이터셋을 활용하여 모델을 직접 튜닝하거나 RLHF 방식으로 추가 최적화를 검토 가능.
◆논문 정보
제목: Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4
저자:
- Sondos Mahmoud Bsharat*
- Aidar Myrzakhan*
- Zhiqiang Shen*
(*공동 제1 저자로 동등한 기여)
소속 기관: VILA Lab, Mohamed bin Zayed University of AI
출판 연도: 2024 (arXiv 논문, 초안 등록 날짜: 2024년 1월 18일)
출처 (arXiv 링크): 논문 프로젝트 페이지