메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

생성형 AI를 잘 쓰려면 꼭 알아야 할 프롬프트의 다섯 가지 원칙

생성형 AI가 놀라운 속도로 발전하며 우리 삶과 일하는 방식을 변화시키고 있지만, 이 거대한 흐름에 발맞추기는 결코 쉽지 않습니다. 특히 대중의 상상력을 강하게 사로잡은 사건은 바로 오픈AI의 챗GPT 출시였습니다. 두 달 만에 1억 명의 사용자를 확보하며 역사상 가장 빠르게 성장한 소비자 앱으로 기록된 챗GPT의 등장은 AI 활용법을 배우는 것을 단숨에 가장 뜨거운 기술로 만들었습니다.

 

AI를 깊이 있게 활용하다 보면, 결과물의 품질이 입력 내용에 따라 얼마나 크게 좌우되는지를 금방 실감하게 됩니다. 이러한 경험을 바탕으로 AI 모델의 신뢰성, 효율성, 정확성을 개선하기 위한 모범 사례를 모은 프롬프트 엔지니어링prompt engineering이라는 분야가 탄생했죠. 

 

중국의 IT 대기업 바이두의 CEO인 로빈 리는 “10년 후에는 전 세계 일자리의 절반이 프롬프트 엔지니어링 분야에서 창출될 것”이라고 주장할 정도로 이 분야의 중요성을 강조했습니다. 그러나 저희는 프롬프팅 그 자체가 인기 있는 직종이 되기보다는 마이크로소프트의 엑셀을 활용하는 것처럼 많은 직종에서 요구하는 기본 기술이 될 것이라 예상합니다. 

 

이러한 맥락에서 프롬프트 엔지니어링은 유용하거나 원하는 결과를 안정적으로 제공하는 프롬프트를 발견하는 과정입니다. 그렇다면 여기서 프롬프트란 무엇일까요? 프롬프트에 대해 다시 한번 알아보고, 생성형 AI를 잘 쓰기 위해 꼭 알아야 할 프롬프트의 원칙을 살펴보겠습니다.

 

생성형 AI를 위한 프롬프트 엔지니어링』의 프롬프트 법칙을 적용한 고흐 스타일의 이미지 (원본: UnsplashSigmund)

 

흔히 실수하는 다섯 가지 프롬프트 문제

 

프롬프트는 챗GPT나 미드저니와 같은 인공지능 모델과 상호작용할 때 사용자가 제공하는 입력이며, 일반적으로 텍스트를 말합니다. 즉, 프롬프트는 AI 모델이 원하는 응답을 예측하고 생성하도록 돕는 일련의 지침인 셈입니다. 예를 들어, 챗GPT와 같은 대규모 언어 모델(LLM)에게는 텍스트로 된 질문이나 명령이 프롬프트가 되고, 미드저니와 같은 확산 모델(diffusion model)에게는 생성하고자 하는 이미지에 대한 설명이 프롬프트가 됩니다.

 

다음은 제품명을 생성하는 ‘제품명 생성기’의 프롬프트 입력과 챗GPT의 결과를 출력하는 간단한 예시입니다.

 

 

프롬프트를 입력하는 것만으로 힘들이지 않고 이런 훌륭한 결과가 나오다니 마법처럼 느껴지기도 합니다. 최신 모델은 꾸준히 개선되고 있으니 첫 번째 시도에서 충분히 좋은 결과를 얻을 가능성이 높습니다. 동일한 작업을 다시 수행할 필요가 없는 인공지능과의 일회성 상호작용에는 단순한 접근 방식만 있으면 됩니다. 

 

하지만 이 프롬프트를 실제 프로덕션에 적용할 계획이라면, 더 많은 시간을 투자하여 프롬프트를 제대로 구현하는 것이 중요합니다. 여기서 실수가 발생하면, 이를 수정하는 데 드는 시간뿐만 아니라 프롬프트와 응답 길이에 따라 오픈AI가 부과하는 수수료까지 더해져 상당한 비용이 발생할 수 있습니다.

 

특히 여러분이 수천 명의 사용자를 대상으로 하는 제품명 생성기를 구축할 계획이라면, 현재 출력에서 해결하고 넘어가야 할 다섯 가지 문제점이 있습니다. 이 문제점을 자세히 살펴보죠.

 

1. 모호한 방향

AI에게 특정 스타일의 이름을 요구하면서도 어떤 속성을 가져야 하는지 명확히 설명하지 않는 경우가 많습니다. 예를 들어 한 단어로 된 이름을 원하는지, 연결어를 포함해야 하는지, 새로운 단어를 만들어도 되는지, 아니면 실존하는 단어여야 하는지 등을 구체적으로 지정하지 않습니다. 혹은 이름을 잘 짓는 것으로 유명한 특정 인물의 스타일을 모방해달라고 할 수도 있는데도 말이죠.

 

2. 출력 형식 없음

앞선 답변은 길이가 지정되지 않은 채로 한 줄씩 분리된 이름을 목록으로 반환합니다. 이 프롬프트를 여러 번 실행하면 번호가 매겨진 목록으로 돌아오는 경우도 있고, 시작 부분에 텍스트가 있어 프로그래밍으로 구문을 분석하기가 어려운 경우도 있습니다. 이처럼 일관성 없는 출력 형식은 활용도를 떨어뜨립니다.

 

3. 누락된 예제

‘좋은 이름'이 어떤 것인지에 대한 예시를 프롬프트에 제공하지 않으면, AI는 학습 데이터의 평균, 즉 인터넷 전체의 데이터(내재된 편향성 포함)를 사용해 이름을 완성하게 됩니다. 과연 이러한 결과가 우리가 진정으로 원하는 것일까요? 성공적인 이름, 업계에서 일반적으로 사용되는 이름, 또는 사용자가 선호하는 이름의 예를 입력하는 것이 훨씬 더 이상적인 결과를 얻는 방법입니다.

 

4. 제한된 평가

어떤 이름이 좋고 나쁜지를 정의한, 일관적이고 확장 가능한 평가 방법이 없기 때문에 각 응답을 수동으로 검토해야 합니다. 평가 시스템이나 다른 형태의 측정 방식을 도입할 수 있다면 더 나은 결과를 얻기 위해 프롬프트를 최적화할 수 있고, 실패 횟수도 파악할 수 있습니다.

 

5. 작업 구분 없음

하나의 프롬프트 안에서 너무 많은 것을 한꺼번에 요구하고 있습니다. 제품명을 지정할 때는 많은 요소를 고려해야 합니다. 그러나 이러한 중요한 작업을 AI가 어떻게 처리하고 있는지에 대한 전문적인 개입이나 가시성 없이 단순히 모든 것을 위임하는 것은 좋은 결과를 기대하기 어렵게 만듭니다.

 

 

이 다섯 가지 문제를 해결하는 것이 바로 프롬프트 작성 핵심 원칙의 기초입니다. 

 

AI 모델에 동일한 작업을 요청하는 방법은 무수히 많으며, 아주 작은 변경만으로도 큰 차이를 만들 수 있습니다. LLM은 프롬프트에 있던 내용에서 시작하여 다음에 나올 토큰(단어의 일부분)을 지속적으로 예측하는 방식으로 작동합니다. 이때 각각의 새 토큰은 다음에 나타날 확률에 따라 선택되며, 여기에 온도temperature 매개변수로 조절되는 무작위성이 더해집니다. 

 

 

위의 그림에서 볼 수 있듯이 AnyFit이라는 이름 뒤에 Shoes라는 단어가 나올 확률은 0.88%로 낮았으며, 더 예측 가능한 응답은 Athletic(72.35%)이었습니다.

 

LLM은 방대한 웹 기반 텍스트를 학습한 후, 유용한 답변을 제공할 수 있도록 더욱 세밀하게 조정(fine-tuning)됩니다. 평범한 프롬프트는 평범한 응답을 반환하다 보니 높아진 기대치에 비해 결과가 그만큼 미치지 못해 실망하곤 합니다. 

 

결국 여러분이 프롬프트에 입력하는 내용에 따라 생성되는 모든 단어의 확률이 달라지고 이는 결과에 큰 영향을 미칩니다. AI 모델은 인간이 만들어 낸 창조물을 최고부터 최악의 것까지 모두 학습했으며, 올바른 질문 방법만 알면 거의 모든 것을 모방할 수 있습니다. 

 

또한 오픈AI는 프롬프트와 응답에 사용된 토큰 수를 기준으로 요금을 청구하므로 프롬프트 엔지니어는 비용, 품질, 안정성을 고려해 프롬프트를 최적화하고 토큰 사용량을 신중하게 관리해야 합니다.

 

다음은 몇 가지 프롬프트 엔지니어링 기법을 적용한 동일한 예시입니다. 

스티브 잡스 스타일의 이름을 요청하고, 쉼표로 구분된 목록을 원한다고 명시하고, 명확한 예시를 제시했습니다.

 

 

완벽한 프롬프트는 없지만, 이 프롬프트는 주어진 형식에 맞는 제품명을 규칙적으로 만들도록 최적화되어 있습니다. 제품명 생성기의 사용자는 스티브 잡스가 아닌 다른 인물을 참조 인물로 선택해 원하는 스타일의 제품명을 얻을 수 있고, 필요하다면 응답 형식도 변경할 수 있으며, 이 프롬프트의 출력이 다른 사람의 입력이 될 수도 있습니다. 또한 사용자 피드백을 바탕으로 프롬프트에서 사용하는 예제를 주기적으로 업데이트해 시스템을 더욱 똑똑하게 만들 수 있습니다.

 

프롬프트의 다섯 가지 원칙 살펴보기

 

프롬프트를 최적화하는 과정은 다음 프롬프트의 다섯 가지 원칙을 따릅니다. 이 원칙은 책생성형 AI를 위한 프롬프트 엔지니어링에서 예시를 분석하는 기준이 되며, 책 전반에 걸쳐 꾸준히 언급됩니다. 

 

다섯 가지 원칙은 앞서 단순한 텍스트 프롬프트에 대해 논의할 때 제기한 다섯 가지 문제점과 정확하게 일치합니다. 프롬프트의 다섯 가지 원칙은 다음과 같습니다.

 

① 지시 내리기

원하는 스타일을 자세히 설명하거나 관련 페르소나를 참조하게끔 시킵니다.

 

② 형식 정하기

따라야 할 규칙과 응답의 필수 구조를 정의합니다.

 

③ 예시 들기

작업이 올바르게 수행된 다양한 테스트 사례를 제공합니다.

 

④ 품질 평가하기

오류를 식별하고 응답을 평가하여 성능을 높이는 요인을 테스트합니다.

 

⑤ 업무 나누기

복잡한 목표를 달성할 수 있도록 업무를 여러 단계로 분리합니다.

 

이번 글에서 소개한 프롬프트의 다섯 가지 원칙은 일시적인 요령이 아니라, AI와 잘 협업하기 위한 가장 기본적인 설계 도구입니다. 어떤 모델을 쓰든 적용할 수 있고, 생성형 AI 시대에 꼭 필요한 글쓰기 기술이기도 합니다. 이 다섯 가지 원칙을 텍스트, 이미지 생성에 어떻게 활용할 수 있는지 이 책에서 소개하는 다양한 예시를 따라가며 본인의 것으로 만들어 보시길 바랍니다.


위 콘텐츠는『생성형 AI를 위한 프롬프트 엔지니어링』에서 발췌하여 작성하였습니다.

 

생성형 AI를 위한 프롬프트 엔지니어링』은 챗GPT, 미드저니, 랭체인까지 아우르며 AI에게 ‘어떻게 말해야 원하는 답을 얻을 수 있는지’를 체계적으로 알려 주는 실전 가이드북입니다. 초보자부터 실무자까지, AI와 협업하는 모든 이를 위한 필독서를 지금 바로 만나보세요!

댓글

댓글 입력