brunch

You can make anything
by writing

C.S.Lewis

by 김권수 Aug 30. 2024

생성형 AI에게 질문하는 법(프롬프트 작성 비법)


생성형 AI 에게 질문하는 방법, 

프롬프트 엔지니어링의 실험 결과를 설명한 논문 내용 중에 개인적으로 유용하다고 생각하는 것들을 선별해서 예시를 만들고, 테스트 하면서 설명을 달았습니다. 꼬박 하루가 걸리네요. 좋습니다. chatGPT, Perplexity, claude, Gmini 들과 토론하면서 만들었습니다. 아직은 어떤 AI든 언어모델에 의존하고 있는 상황에서 질문하는 것이 가장 중요해질 수 밖에 없습니다. AI의 엄청난 능력을 내것으로 만드는 방법은 질문 밖에 없으니까요.  




1. 프롬프트에 청중(독자)를 포함시킨다. 


" 이전에 스마트폰을 사용한 적이 없는 시니어를 대상으로 스마트폰 작동 원리를 설명해줘"


프롬프트를 작성할 때, 청중(독자)을 명시하면 그 수준과 관심사에 맞는 결과를 얻을 수 있다. AI가 정보에 접근하고 예측하는 방향을 결정한다. <스마트폰을 사용한 적이 없는 시니어>, <투자 경험이 없는 30대 직장인> 등과 같이 대상을 지목할 때 대상의 특성에 맞는 내용과 깊이로 결과를 생성해준다. 



3. 복잡한 작업을 더 간단한 프롬프트로 나눠서 순차적으로 질문한다. 


P1: 제주도의 주요 관광지 5곳을 추천해주세요.

P2: 이 관광지들을 3일 동안 효율적으로 둘러볼 수 있는 일정을 만들어주세요.

P3: 각 날짜별로 숙박할 수 있는 적절한 위치의 호텔이나 펜션을 추천해주세요


복잡한 내용은 나눠서 순차적으로 질문한다. 한 번에 처리할 정보의 양을 줄여 오류 가능성을 낮추고 더 성실한 답변을 유도한다. 이전 응답의 맥락을 활용하여 더 일관성 있는 정보를 제공한다. 각 단계에서 얻은 정보를 바탕으로 요구사항이 반영된 더 정확하고 정교한 결과를 만든다. 사용자가 단계별 결과를 확인하고 필요에 따라 방향을 조정하는 유연성으로 최종 결과의 품질을 높일 수 있다. 



5. 명확성과 이해도를 높일 수 있는 문구를 활용한다. 


초등학생도 이해할 수 있게 ~

5살짜리(11살짜리) 아이에게 설명하듯이 ~

비전문가(초보자) 수준에서 쉽게~ 

전문가 수준으로 깊이 있게~

심플한 용어로(simple terms)~  


프롬프트에 이런 문구를 명시하면서 질문을 하면, 대상에게 가장 관련 있는 정보를 선별하고, 깊이와 상세함을 조절하고 통제할 수 있다. 접근하는 소스와 차원이 달라진다. 또한 사용자의 요청에 적합한 결과와 표현으로 응답한다. 




6. 팁을 제공한다는 말을 넣어라


<더 나은 솔루션을 제공하면> 30만 달러의 <팁>을 줄게. 동적 프로그램밍의 개념을 설명하고 사례를 제시하시오. 


ㅎㅎㅎ,  실제로 AI가 팁을 받을수도 없고 개념도 없지만, 연구결과에는 응답의 성능을 높인다고 한다. AI들의 공통적인 답변은 그럴수도 있지만 보장은 못한다는 것이다. 하지만 이런 결과는 AI가 학습과정에서 문맥에 '팁'이나 '더 나은 솔루션'이란 말이 들어갔을 때 긍정적인 피드백과 연결될 가능성이 컸을 것이다. 그리고 사용자가 더 나은 답변을 기대한다는 것을 강하게 인식할 수 있어 더 주의 깊게 응답하도록 만든 결과라고 할 수 있다. 




7. 예제 중심의 프롬프팅 활용 (Use few-shot prompting) 



다음 예제와 같이 한국 속담을 영어로 번역해 주세요

예시 1: "꿩 대신 닭" 

응답: A chicken instead of a pheasant

의미: Something is better than nothing


예시 2: "소 잃고 외양간 고치기“

응답: "Fixing the barn after losing the cow" 

의미: Closing the stable door after the horse has bolted)


질문) 이제 다음 속담을 영어로 번역해주세요: "가는 말이 고와야 오는 말이 곱다“


질문을 하기 전에, 예시를 제공하면 성능이 엄청나게 향상된다. AI는 제공한 예시에서 사람이 인식하기 힘든 패턴을 잘 인식한다. 그래서 형식과 패턴을 명확하게 이해하고 사용자의 기대에 맞는 결과를 더 잘 생성한다. 일관된 답변 형식을 유지하고 비슷한 요청에 어떻게 응답해야 하는지 학습하기 때문에 더 나은 결과를 제공한다.  이렇게 예시를 제공하는 방식을 few-shot prompting이라고 한다. 




9. 명확한 임무와 목표를 부여


"당신의 임무는 친구에게 한국의 전통 음식에 대해 설명하는 것입니다. 반드시 간단한 언어로 설명해야 합니다.“


"당신의 과제는 다음 텍스트를 요약하는 것입니다. 반드시 3문장 이하로 요약해야 합니다.“


<당신의 임무는~>, <반드시>”와 같은 용어를 활용하여 명확한 지시와 강한 강조를 포해서 프롬프트 명령어를 작성한다. 이렇게 하면 구체적이고 명확한 지시를 제공하고 AI가 무엇을 해야하고, 어떤 방식으로 수행해야 하는지 명확하게 이해한다. 반드시 ~해야 한다는 문구는 사용자가 원하는 조건을 철저히 반영하도록 하고, AI가 불필요한 정보나 작업을 피하고 핵심에 집중하도록 돕는다. 


12. 단계적 사고 유도


“단계적으로 생각하세요(Let's think step by step)”와 같은 유도형 단어를 사용한다. 


"다음 방정식을 풀어 주세요. 단계별로 생각해 봅시다." 

2x + 3 = 7


이렇게 하면 AI는 정답을 바로 내놓지 않고 단계별로 과정을 설명하고 정답을 낸다. 


AI 응답 

1. 방정식을 2x = 7 - 3으로 변형합니다.

2. 다음으로, 2x = 4가 됩니다.

3. 마지막으로, x = 4 / 2이므로 x = 2입니다.


<단계별로 생각해 봅시다>라는 문구가 없을 때는 "x = 2."라는 답변을 할 가능성이 높다. 이렇게 하면, AI는 정보를 더 체계적이고 순차적으로 답변하고 복잡한 과정을 이해하기 쉽게 만든다. 이렇게 할 때 <더 자세한 세부 정보>를 고려할 수 있도록 해준다. 이사나 여행 계획, 프로젝트 관리, 학습 계획, 문제해결과 같은 분야에 효과적이다. 다음의 비교예시는 전혀 다르게 응답한다. 


비교예시 :  "다음 달에 이사를 가려고 합니다. 어떻게 준비해야 할까요?"

비교예시 :  "다음 달에 이사를 가려고 합니다. 차근차근 단계별로 어떻게 준비해야 할지 설명해주세요.“



13. 편견이나 고정관념 없는 답변 요구


<편견이나 고정관념에 의존하지 않도록 주의하세요>라는 문구를 넣는다. 


“문화적 배경은 정신건강의 인식에 어떤 영향을 미칩니까? 편견이나 고정관념에 의존하지 않는지 확인하세요”


AI 모델은 방대한 양의 데이터를 학습하여 응답을 생성하는데, 이 데이터에는 사회적 편견, 고정관념, 그리고 특정 집단에 대한 부정적 인식이 포함될 수 있다. 이런 편견과 고정관념을 검증하지 않고 결론을 내는 것을 방지할 수 있다. 그래서 다양한 관점과 경험을 고려하도록 유도하고 포괄적이고 신뢰성 있는 답변을 유도하도록 한다. 성, 지역, 문화, 세대 간 차이에 대한 질문을 할 때 유용한 지침이 된다. 




14. 충분한 정보를 얻을 때까지 질문을 요청 ★★★★★


“개인화된 피드니스 루틴을 만들어줘. 정보가 충분할 때까지 질문을 하고 답해줘”


<정보가 충분할 때까지 질문하고 답해줘>라고 하면 AI가 질문하고 사용자는 답한다. 그런 과정에서 사용자에게 최적화된 결과를 만들어 낼 수 있다. AI가 답변하기 위해서 다양한 정보가 필요한데 초기 프롬프트 명령어만으로 모든 요소(현재 체력, 건강상태, 선호하는 운동유형, 이용가능한 시간 등)를 구성하기 어렵다. 또한 사용자가 어떤 정보를 입력해야하는지 모를 경우는 충분하고 개인화된 명확한 답변을 할 수 없다. 


또한 너무 많은 정보를 한꺼번에 넣으면 정보의 선정, 매칭, 예측에 교란이나 오류가 일어날 가능성이 높다. AI가 질문을 하고 사용자가 답하는 과정에서 표면적 정보를 넘어, 사용자의 구체적인 상황과 요구사항을 깊이 학습하고 정교한 답변을 제공한다. 


필요한 정보를 얻을 때까지 질문을 유도함으로써 정보의 불완전성, 누락을 줄이고 정확성과 관련성을 높일 수 있다.  질적으로 높은 결과를 만들어 내는데 매우 유용하다. 



15. 테스트 추가 하기(능동학습 추가) ★★★★★


“KVL 법칙에 대해 설명해 주세요. 

마지막에 테스트 질문을 포함해 주세요. 

답변을 듣고 정답과 함께 유용한 피드백을 주세요”


AI와 능동적 학습을 하는데 강력 추천하고 싶은 방식이다. AI에게 질문하고 답만 듣는 것이 아니라 사용자가 잘 이해하고 있는지 질문을 하라고 요청한다.  사용자의 답변을 듣고 맞고 틀린지 피드백을 받는 식이다. 필요하다면 그 과정이 끝난 다음에 처음 질문을 다시 해서 사용자에게 맞는 설명을 해주는 것도 효과적이다. 


다음은 이런 방식의 진행과정을 보여준다. 


학생 질문: 수요와 공급 곡선에서 공급 곡선이 오른쪽으로 이동하면 가격과 수량에 어떤 변화가 있을까요? 마지막에 테스트 질문을 포함해 주세요. 답변을 듣고 정답과 함께 피드백을 주세요"


AI : 공급이 증가하면 가격이 하락하고, 수량이 증가할 것..........

AI : 그러면 만약 정부가 특정 제품에 보조금을 주게 되면, 이 제품의 가격과 수량은 어떻게 될까요?

학생 : 가격이 떨어지고 수량이 증가합니다. 

AI : 맞습니다! 보조금은 생산 비용을 줄여 공급을 늘리므로 가격이 떨어지고, 시장에서의 수량이 증가하게 됩니다. 이러한 결과가 수요와 공급의 균형에 미치는 영향을 더 알아보는 것도 좋을 것 같아요"


AI가 제공한 답변을 사용자가 실제 이해했는지 검증하게 해서 능동적 학습이 가능하다. 테스트 질문에 대해 답을 받아 피드백을 제공하면서 더 나은 최적화된 정보를 제공하면서 학습효과를 극대화할 수 있다. 



16. 역할을 부여한다. 


"당신이 경제학 전문가라면 자본주의와 사회주의 경제 시스템의 주요 차이점을 어떻게 설명하겠습니까?“


“~ 분야 전문가라면, ~ 관점에서” 등 역할을 부여하면, 보다 전문적이고 깊이 있고 논리적인 답변을 제공한다. 그리고 요청한 주제를 다룰 때 일관된 관점을 유지할 수 있도록 해 준다. ‘전문가’로서의 답변은 일반적인 대화형 응답과 달리 더 구조적이고 논리적으로 정리된 답변을 기대할 수 있다. 


하지만, 역할부여는 AI가 고정된 틀에 맞춰 생각하게 되어, 다양한 관점이나 새로운 접근방식을 제시하는데 한계가 있을 수 있다. 창의성과 다양한 시각이 필요하고 탐색적 답변이 필요할 때는 역할을 부여하지 않는 것이 더 유리할 수 있다. 


17. 구분기호의 활용한다. 


온실 가스 배출을 줄이는 데 있어 '재생 가능 에너지원'의 중요성을 논의하는 설득력 있는 에세이를 작성해 보세요.


온실 가스 배출을 줄이는 데 있어 '재생 가능 에너지원'의 중요성을 논의하는 설득력 있는 에세이를 작성하세요. | 서론으로 시작하세요. 주요 이점을 설명하세요. 태양열과 풍력 에너지의 예를 포함하세요. 환경적 영향에 대한 강력한 진술로 결론지으세요.


위의 2가지 예시에서는 '  ' 과  | 의 구분기호를 사용했다. 질문을 구분하는데 그냥 슬래시(/)를 사용해도 잘 알아듣기는 한다. 구분기호를 사용하면 필요한 정보에 집중하고, 복잡한 요청이나 여러 요소가 포함된 프롬프트에서 혼란을 줄리고 명확한 응답을 도출하도록 한다. 뿐만 아니라 AI가 응답을 보다 구조적, 논리적으로 작성할 수 있도록 한다. 



정해진 것은 아니지만 대체적으로 

큰따옴표("")→ 단어나 문구를 지시, 강조 

세로줄(|) 사용 → 여러 지침이나 질문을 구분할 때 효과적

대괄호([ ]) → 특정 섹션이나 항목을 지정할 때

예시) 재생 에너지의 이점에 대해 쓰세요. [서론] [요점] [결론].

세미콜론(;) → 관련된 여러 요청을 나열할 때 사용

등호(=) → 요청 사항과 예시, 소스를 구분할 때 사용


예시) 프롬프트: 다음의 분석 요청 정보를 활용해서 한국의 온라인 쇼핑 트렌트 특성을 요약해주세요.......

=== 분석 요청 ===

주제: 한국의 온라인 쇼핑 트렌드

기간: 최근 5년

고려할 요소:

1. 모바일 쇼핑의 성장

2. 소셜 커머스의 영향

3. 코로나19 팬데믹의 영향

=== 분석 요청 끝 ===




19. Chain-of-Thought와 Few-shot 프롬프트 함께 사용


예시 1: "김치찌개를 만들려면 먼저 김치를 썰고, 물을 끓인 후 김치를 넣습니다. 그 다음 고기를 넣고, 마지막으로 두부를 넣습니다."

예시 2: "된장찌개를 만들려면 먼저 물을 끓이고, 된장을 풀어 넣습니다. 그 다음 채소를 넣고, 마지막으로 두부를 넣습니다."


질문 : 순두부찌개를 만들려면 먼저....


Few-shot은  AI에서 예시를 보여주며 질문하는 것이고,  chain-of-Thought(CoT)는 결과를 내기까지의 과정을 순차적으로 보여주며 설명하는 것이다. 이 둘을 결합하면 AI에서 순차적으로 결과를 내는 과정의 예시들을 보여주고, 필요한 질문을 하는 방법이다. 


chain-of-Thought(CoT) 방식은 문제를 단계별로 풀어나가기 때문에 복잡한 문제를 더 잘 이해하고 해결하도록 한다. 단계를 따라가면서 정확하고 일관된 답변을 생성한다. Few-Shot Prompts는 AI에게 원하는 답변 형식을 예시로 제공하여 학습하게한다. 이를 통해 AI가 주어진 문제와 유사한 형식의 답변을 일관되게 생성하도록 한다. 이 둘을 결합하면 오류를 줄리고 논리적 흐름을 유지하면서 사용자가 원하는 답변을 정확하게 끌어낼 수 있다. 



그런데 아래와 같은 방식으로 질문하면 비슷하지만 전혀 다르게 응답한다. 

 예시를 참고하여 AI가 폭넓게 자유재량으로 답변을 만들어 낸다. 

그러니 답변의 차이가 있다. 


다음의 예시를 바탕으로 순두부찌개를 만드는 과정을 설명해주세요

예시 1: "김치찌개를 만들려면 먼저 김치를 썰고, 물을 끓인 후 김치를 넣습니다. 그 다음 고기를 넣고, 마지막으로 두부를 넣습니다."

예시 2: "된장찌개를 만들려면 먼저 물을 끓이고, 된장을 풀어 넣습니다. 그 다음 채소를 넣고, 마지막으로 두부를 넣습니다.“




21. 보다 상세한 설명 요구하는 문구를 넣어서 요청


"<필요한 모든 정보를 추가하여> 스마트폰의 발전과정에 대한 문단을 작성해주세요."


"김치의 역사와 문화적 중요성에 대해 <필요한 모든 정보를 추가하여> 에세이를 작성해주세요"


‘필요한 모든 정보를 추가하여’라는 표현을 사용하므로써 AI가 주제와 관련된 다양한 측면을 고려하여 충분한 내용을 제공하도록 유도한다. 보다 상세한 정보, 다양한 측면을 다루도록 한다. 


이런 문구를 추가하지 않으면 AI는 요청에 대해 일반적인 수준에서 핵심사항만 언급하거나 넓고 얕게 설명할 가능이 높다. 세부사항을 추가하지 않고 중요한 부분을 빠뜨리릴 수 있다. 예를 들어 스마트폰의 발전과정을 이야기할 때 주요 전환점 몇 가지만 언급하고 무성의하게 답변을 끝낼 수 있다. 다음은 비교한 결과다. 


<문구포함시>

“스마트폰의 진화는 1990년대 말 PDA와 휴대전화를 결합한 형태로 시작되었습니다. 2007년 아이폰의 출시는 스마트폰의 혁신적인 변화를 가져왔으며, 이는 터치스크린 기술과 앱스토어의 등장으로 이어졌습니다. 이후 삼성의 갤럭시 시리즈는 안드로이드의 도입과 함께 대중화되었습니다. 최근에는 AI 기능, 5G 네트워크, 폴더블 폰 등의 새로운 기술이 도입되고 있습니다.”


<문구 없이>

“스마트폰은 휴대전화와 PDA의 결합으로 시작되었고, 아이폰의 등장으로 대중화되었습니다. 현재 스마트폰은 많은 기능을 제공합니다.”



22. 문체를 유지하며 문장 수정을 요청하기


“사용자가 보낸 문단의 문법과 어휘만 개선하되 문체를 유지하세요”


"다음의 문단을 수정해 주세요. 원래 글의 스타일을 유지하고 문법과 어휘만 개선하여 자연스럽게 수정해야 합니다." 


이렇게 하면 문단이 가진 스타일(느낌, 톤, 어조)을 유지하면서 문법 오류를 고치거나, 더 자연스럽게 어휘를 개선한다. 보다 자연스럽고 매끄러운 문장으로 수정할 수 있다. 


24. 주어진 단어나 문장으로 글을 전개하도록 요청하기

(시작을 제공하고 전체 완성하기)


"다음은 친환경 제품 광고의 시작입니다: '지구를 생각하는 당신의 선택'. 이 문구를 바탕으로 광고 카피를 완성해주세요. 흐름을 일관되게 유지하세요."


"다음은 미스터리 소설의 도입부입니다: '그날 밤, 서울의 한 골목에서 이상한 비명 소리가 들렸다.' 이 문장을 바탕으로 이야기를 완성해주세요. 흐름을 일관되게 유지하세요.“


이렇게 시작하는 단어, 문장을 제시하고 그 다음을 이어갈 수 있도록 하면, 맥락과 방향을 제시하면서 AI가 창의적으로 결과물을 만들 수 있도록 한다. 소설, 에세이, 가사, 광고카피, 역사적 가상 시나리오, 교육자료 개발, SNS 콘텐츠 생성에 유용하게 활용할 수 있다. 



25. 기준, 지침, 핵심요소를 명시하며 질문


"선크림", "수영복", "비치타올"을 필수품으로 포함하여 해변 휴가를 위한 패킹 목록을 작성하세요.


"서울 3일 여행 일정을 만들어주세요. '경복궁', '한강', '남산타워'를 필수 방문지로 포함하고, 각 날짜별로 아침, 점심, 저녁 활동을 구체적으로 나열해주세요.“


"에코프렌들리 제품을 판매하는 온라인 쇼핑몰 창업 아이디어를 제안해주세요. '제로웨이스트', '업사이클링', '로컬브랜드'를 핵심 컨셉으로 포함하고, 구체적인 상품 라인업과 마케팅 전략을 설명해주세요."


"박경리의 '토지'에 대한 문학 비평을 작성해주세요. '역사적 배경', '인물 발전', '주제 분석'을 주요 논점으로 다루고, 각 요소가 작품에 미치는 영향을 구체적으로 설명해주세요.“


프롬프트 명령으로 요청하면서 반드시 포함하거나 지켜야 하는 기준, 단어, 주제, 제약사항을 지정하며 질문한다. 이렇게 사용자가 반드시 포함해야 하는 핵심요소나 지침을 명시하고 요청할 때 사용자에 맞춤화된 결과물, 구체적이고 구조화된 정보를 얻을 수 있다. 



26. 예시를 주고 유사한 문장 만들기


예시1) 

다음 <제시한 문장과 같은 언어를 사용하여> 우리 회상의 새로운 스마트홈 기기에 대한 소개 문구를 작성해 주세요.

"우리의 제품은 당신의 일상에 작은 혁명을 일으킵니다. 간단하지만 강력한 기능으로, 복잡한 일상을 단순화시키죠."


예시2) 

다음 문장과 같은 언어를 사용하여 로미오가 줄리엣에게 전하는 새로운 사랑의 고백을 작성해주세요. 

"내 사랑하는 그대여, 우리의 사랑은 시간과 공간을 초월하는 영원한 것. 그대의 미소는 내 영혼을 밝히는 빛이요, 그대의 목소리는 내 심장을 울리는 음악이라오."


 위의 예제 문장과 같이 해 보면 신기할정도로 다르지만 쌍둥이 같은 문장을 만들어 준다. <제시한 문장과 같은 언어를 사용하여>라는 문구를 쓸 때  원하는 스타일, 톤, 감정을 유지하면서, 기존의 콘텐츠와 일관된 문장을 만들 수 있다. 브랜드 마케팅, 역사 교육, 문학 작품의 창작성, 후속편 등의 콘텐츠를 만들 때 유용하다.


이것은 논문의 결과 목록을 바탕으로 한 것이지만, 다음에는 그동안의 경험을 정리해서, 진짜 생성형 AI와 커뮤니케이션 하는 방법을 정리하고 싶네요.  많은 분들께 도움이 되기 바랍니다. 




원논문 소스

https://arxiv.org/pdf/2312.16171v1





브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari