🧐 Summary
1️⃣ 생성형 AI와의 효과적 상호작용을 위해 프롬프트를 최적화하는 것을 프롬프트 엔지니어링이라고 합니다.
2️⃣ 프롬프트 엔지니어링에서는 프롬프트의 명확성, 충분한 정보 제공, 질문의 구조화 및 반복적 시도를 중요하게 생각합니다.
3️⃣ 프롬프트의 구성 요소 및 구조화 방식에 따라 다양한 방법론이 존재합니다.
요즘 챗지피티 많이 사용하시죠? 저희도 여러 번 언급했지만 이 뉴스레터를 만들면서 생성형 AI의 도움을 자주 받고 있어요. 그런데 생성형 AI를 사용하면 할 수록 프롬프트의 중요성을 깨닫게 되더라구요. 지난번 AI 개발 실무자 인터뷰에서도 말했듯이 프롬프트를 얼마나 잘 쓰느냐에 따라 답변의 퀄리티가 정말 크게 차이나는 것 같아요.
그래서 오늘은 ‘프롬프트 엔지니어링(Prompt Engineering)’에 대해 알아보려 합니다. 프롬프트 엔지니어링이란 무엇이며 어떤 기법들이 있는지, 우리에게 어떤 도움을 주는지, 그리고 UX 디자이너로서 꼭 알아야 할 내용은 무엇일지 함께 알아보겠습니다.
프롬프트 엔지니어링이란?
프롬프트 엔지니어링이란 생성형 AI와의 효과적 상호작용을 위해 프롬프트(사용자의 입력)를 개발하고 최적화하는 프로세스를 뜻합니다. 사용자가 원하는 대답을 얻기 위해 프롬프트의 형식, 구문, 단어, 기호 등을 가장 적절하게 구성하는 것에 초점을 맞춥니다.
프롬프트 엔지니어링에서 중요하게 생각하는 것들
1. 명확성 : 프롬프트는 구체적이고 명확해야 합니다. 모호하거나 불분명한 요청은 예상치 못한 결과를 초래할 수 있습니다
2. 충분한 정보 제공 : 요구하는 답변의 종류나 형식을 명확히 제시하며 ( 예. 요약, 설명, 리스트, 스토리텔링 등), 문제에 대한 배경 정보를 상세히 제공하면, 원하는 결과에 가까운 답변을 얻을 수 있습니다.
3. 질문의 구조화 : 질문을 잘 구조화하여 핵심 요소를 강조하면, 모델이 주요 포인트를 쉽게 식별하고 적절한 답변을 생성할 수 있습니다.
4. 반복적 시도 : 모델의 반응을 바탕으로 프롬프트를 조정하고 반복하여, 원하는 결과에 더 가까워질 수 있습니다. 실험을 통해 다양한 접근 방식의 효과를 확인할 수 있습니다.
프롬프트 엔지니어링의 주요 방법론
프롬프트 엔지니어링에서 AI 모델을 활용하는 방법론들 중 기본이 되는 제로샷(Zero-Shot), 퓨샷(Few-Shot), 그리고 생각의 사슬(Chain of Thought) 프롬프트에 대해 알아보겠습니다. 각각의 방법은 입력을 제공하고 원하는 출력을 얻는 방식에 차이가 있습니다.
1. 제로샷 프로그래밍: 모델이 특정 작업에 대한 사전 훈련 샘플 없이도 작업을 수행할 수 있도록 하는 방법입니다. 즉, 모델이 특정 작업에 대해 명시적으로 훈련되지 않았지만, 모델이 이미 학습한 지식과 추론 능력을 바탕으로 새로운 작업을 수행할 수 있습니다. 아래 프롬프트[1]를 보면 모델에 예시를 제공하지 않은 제로샷 프롬프트임을 알 수 있습니다.
Prompt:
주어진 문장의 감정을 긍정, 부정, 또는 중립으로 분류하세요.
문장 : 휴가는 괜찮을 것 같아요.
감정:
Output:
중립
2. 퓨샷 프로그래밍: 모델이 몇 가지 예제만을 제공받고도 특정 작업을 수행할 수 있도록 하는 방법입니다. 데이터가 제한적이거나 특정 작업에 대한 사전 학습 데이터가 충분하지 않을 때 특히 유용합니다. 아래 프롬프트[1]는 하나의 예를 제시한 후 관련 과제를 제시한 것을 알 수 있습니다. 더 복잡한 과제의 경우 더 다양한 예시를 제공하는 것이 도움이 되겠죠.
Prompt:
"whatpu"는 탄자니아에 서식하는 작은 털복숭이 동물입니다.
whatpu라는 단어를 사용하는 문장의 예:우리는 아프리카를 여행하고 있었는데 아주 귀여운 whatpu를 보았습니다.
"farduddle"은 정말 빠르게 위아래로 점프한다는 뜻입니다.
farduddle이라는 단어를 사용하는 문장의 예:
Output:
게임에서 이겼을 때 우리 모두는 farduddle를 시작했습니다.
3. 생각의 사슬 프로그래밍[2]: 복잡한 문제를 해결하기 위해 여러 단계의 추론 과정을 모델에 제시하는 방법입니다. 이 방식은 모델에 문제 해결 과정에서 고려해야 할 여러 추론 단계를 순차적으로 제시함으로써, 모델이 최종 결론에 도달할 수 있도록 돕습니다. 이 방식은 복잡한 문제 해결이나 추론이 필요한 작업에 특히 유용하지만, 충분히 큰 대규모언어모델에만 적합합니다.
아래 프롬프트[2]를 보시면 프롬프트의 예시에서와 동일하게 추론 과정을 통해 결과값을 내놓는 것을 보실 수 있습니다.
Prompt:
질문 : 철수는 사과 다섯 개를 가지고 있습니다. 철수는 사과 두 봉지를 더 샀습니다. 사과 한 봉지에는 사과 세 개가 들어있습니다. 이제 철수는 몇 개의 사과를 가지고 있나요?
답변 : 철수는 처음에 사과 다섯 개를 가지고 있었습니다. 사과 두 봉지는 각각 세 개씩의 사과를 담고 있습니다. 5+6=11. 답은 11입니다.
질문 : 까페에 23개의 사과가 있었습니다. 까페에서는 점심을 만들기 위해 사과 20개를 사용했고, 사과 6개를 더 샀습니다. 이제 까페에는 사과 몇 개가 남아있나요?
답변 :
Output:
까페는 23개의 사과를 가지고 있었습니다. 까페에서는 20개의 사과를 점심을 만들기 위해 사용했습니다. 23-20=3. 그리고 사과 6개를 더 샀으면, 까페는 3+6=9개의 사과를 가지고 있습니다. 답은 9입니다.
각 방법론은 특정 상황이나 요구사항에 따라 선택되며, 모델의 성능과 효율성을 최적화하기 위한 다양한 전략 중 하나로 사용됩니다.
예전에 음성인식 서비스 UX를 담당했던 적이 있어요. 그때 주변에서 음성인식 서비스를 사용하는 모습을 관찰해보면 명령어를 어떤 식으로 말해야 하는지 잘 모르는 것 같더라구요. 이 서비스로 무엇을 할 수 있는지, 그리고 명령어에 어떤 요소가 들어 있어야 제대로 작동하는지 잘 모르기 때문에 처음 시작단계부터 어려워하는거죠.
생성형 AI의 사용도 크게 다르지 않습니다. 생성형 AI를 처음 사용하면 이 서비스가 대체 나한테 무엇을 해줄 수 있는지, 내가 원하는 걸 시키려면 어떤 프롬프트를 써야하는지, 모든게 어렵죠. 그리고 한두번 사용해보다가 내가 원하는 결과가 나오지 않으면 금방 사용을 포기할 수 있어요.
그렇기에 서비스를 디자인하는 사람들이 처음 가이드라인을 잘 제시해 주어야 초기 사용자들을 잘 붙잡아 둘 수 있을 것 같아요. 또한 AI 시대를 살아가는 사용자로서도 프롬프트 엔지니어링 개념을 잘 알고 있으면 개인의 경쟁력이 훨씬 높아지겠죠?
Reference
[1] https://www.promptingguide.ai/kr
[2] Wei, J., Wang, X., Schuurmans, D., Bosma, M., Xia, F., Chi, E., ... & Zhou, D. (2022). Chain-of-thought prompting elicits reasoning in large language models. Advances in neural information processing systems, 35, 24824-24837.
🤔 InspireX의 물음표
댓글이나 이메일로 여러분의 생각을 들려주세요! 😉
Q1. 생성형 AI를 쓰면서 알게 된 프롬프트 잘 쓰는 팁 있나요? 팁 좀 공유해주세요.
Q2. 생성형 AI 첫 화면, 또는 프롬프트 입력창에 프롬프트 예시를 다양하게 제공한다면 사용자에게 도움이 될까요?
댓글
의견을 남겨주세요