시작하며
생성형 AI, 그 중에서도 특히 거대 언어 모델들을 중심으로 기술 시장은 이례없던 속도로 움직이고 있습니다. 대중의 생성형 AI에 대한 높아진 관심을 기반으로 다양한 애플리케이션 사례들이 쏟아져 나오고 있고, 이와 동시에 잘못된 정보를 사실인 것 같이 답변으로 제시하는 일명 hallucination (이하 할루시네이션)과 같은 모델의 치명적인 한계점에 대한 우려도 계속 커지고 있는데요. 이에 AI 모델로부터 더 복잡한 태스크들에 대한 정확한 답변을 이끌어내는 것을 유도하면서 할루시네이션과 같은 오류를 줄이는데 기여하는, "Prompt Engineering (이하 프롬프트 엔지니어링)"이라는 NLP (자연어 처리) 분야가 새롭게 떠오르고 있습니다.
"Writing a really great prompt for a chatbot persona is an amazingly high-leverage skill and an early example of programming in a little bit of natural language (챗봇 페르소나를 위해 훌륭한 프롬프트를 작성하는 것은 활용도가 굉장히 높은 기술이며 약간의 자연어로 프로그래밍하는 것의 초기 사례이다)."
- OpenAI CEO Sam Altman
"The hottest new programming language is English (현재 가장 핫한 프로그래밍 언어는 영어다)".
- 전 Tesla AI 총 책임자, OpenAI 창립 멤버 Andrej Karpathy
프롬프트 엔지니어링은 질문을 잘 하여 AI를 효과적으로 쓰는 방법입니다. AI로부터 최상의 답변을 끌어내기 위하여 최적의 단어, 즉 입력값들의 조합을 찾는 작업인데요. 이와 관련하여 프롬프트 엔지니어라는 새로운 직업이 생겨났으며, 해외 기업 중심으로 수요가 급증하고 있다고 합니다. Google이 투자하며 OpenAI 대항마로도 기대되었던 Anthropic AI가 올해 초 프롬프트 엔지니어 채용 공고에서 제시한 연봉이 무려 25만에서 33만 달러였다고 하는데요 (대략적으로 한화 3억 2천만원에서 4억 3천만원). 뿐만 아니라, 프롬프트 엔지니어들이 자신들의 프롬프트를 사고 팔거나 무료로 공유하는 마켓플레이스의 수와 규모가 증가하는 추세라고 합니다.
본 글에서는 프롬프트 엔지니어링의 개념, 중요성, 기법, 그리고 어떻게 하면 좋은 프롬프트를 쓸 수 있는지까지 살펴보고, 이러한 프롬프트 엔지니어링 분야가 향후 AI 시장에서 어떤 역할을 할 것으로 기대되는지 전망해보았습니다.
프롬프트와 프롬프트 엔지니어링
먼저 프롬프트와 프롬프트 엔지니어링에 대해 상세히 알아보겠습니다.
프롬프트란?
AI 분야에서 프롬프트 (Prompt)는 AI 모델로부터 응답을 생성하기 위한 입력값이라고 정의할 수 있습니다.
프롬프트는 다음의 요소로 구성됩니다. 하지만, 이 요소들이 프롬프트에 모두 포함되어야만 하는 것은 아닙니다.
프롬프트의 구성 요소 | 설명 |
Instruction | 모델이 수행하기를 원하는 특정 태스크 또는 지시 사항 |
Context | 모델이 보다 더 나은 답변을 하도록 유도하는 외부 정보 또는 추가 내용 |
Input Data | 답을 구하고자 하는 것에 대한 인풋 또는 질문 |
Output Indicator | 결과물의 유형 또는 형식을 나타내는 요소 |
프롬프트 엔지니어링이란?
프롬프트 엔지니어링은 AI, 그 중에서도 NLP 분야의 개념으로, AI가 생성하는 결과물의 품질을 높일 수 있는 프롬프트 입력값들의 조합을 찾는 작업입니다.
프롬프트 엔지니어는 무엇을 하는가?
데이터 사이언스 분야의 신종 직업으로, 대화형 AI에게 자연어로 대화를 걸며, AI의 최적 답변을 이끌어내고, 편향되거나 위험한 결과를 최소화하기 위해 효과적인 입력값 조합을 찾고 제시하는 역할을 합니다.
프롬프트 엔지니어링의 중요성
AI의 태스크를 수행하는 성능은 프롬프트의 퀄리티에 의해 크게 좌우됩니다. 사람이 보기에 의미적으로 차이가 없는 문장이어도, GPT와 같은 모델은 프롬프트의 단어 하나, 즉 입력값이 조금만 달라져도 완전히 다른 결과물을 생성해냅니다. 최근에는 "Let's think step by step (차근차근 생각해보자)"라는 트리거 문장 하나를 추가하는 것 만으로 AI가 보다 더 정확하고 똑똑한 대답을 내놓기도 하는데요. 프롬프트를 잘 쓰는 것은 AI를 효과적으로 쓰는 것과 직결되고, 이를 위해 최적의 단어 조합을 찾아내는 것이 매우 중요해졌습니다. 프롬프트를 잘만 활용한다면 AI의 가능성을 최대치로 끌어올려 사용할 수가 있으며 앞서 언급한 거대 언어 모델들이 고질적으로 가지고 있는 할루시네이션 현상을 최소화할 수도 있기 때문입니다.
프롬프트 작성을 위한 기본 가이드라인
대화 스타일 조정
아래는 API를 호출하여 사용할 경우 AI 모델의 대화 스타일을 조정할 수 있는 주요 값들에 대한 설명입니다. Bing의 경우 일반 소비자들을 대상으로 대화 스타일을 버튼을 통해 선택할 수 있게끔 설계해두었습니다.
Temperature: 답변의 창의성과 무작위성을 조정하는 값입니다. 낮을 수록 (예: 0.05) 보다 사실에 근거한 정확한 답변을 제공하고, 높을 수록 (예: 1) 보다 창의적인 결과물을 생성해줍니다. Top_p: 답변의 무작위성을 제어하는 조정 값입니다. Temperature와 마찬가지로 값이 낮을 수록 답변이 보다 정확하고 높아질 수록 창의적이고 광범위해집니다. frequency_penalty: 값이 높을 수록 AI가 흔하지 않은 단어를 답변에 포함할 가능성을 제어합니다. 반대로 값이 0이라면 페널티가 전혀 주어지지 않아서 AI가 흔히 사용되지 않는 단어를 답변에 포함할 가능성이 높아지게 됩니다. presence_penalty: 값이 높을 수록 AI가 유사하거나 동일한 단어 및 문구를 답변 시 반복할 가능성을 제어합니다. 이 또한 반대로 값이 0이라면 페널티가 전혀 주어지지 않아서 AI가 단어나 문구를 반복할 가능성이 높아지게 됩니다. |
※ 아래는 ChatGPT를 직접 실험해본 것에서 더 나아가 OpenAI의 프롬프트 엔지니어링 관련 아티클, 그리고 개인의 ChatGPT 프롬프팅 실험을 통해 제시된 여섯 가지 가이드라인 중 일부를 참고하여 작성한 것 입니다.
미사여구를 최소화한 쉽고 간결한 표현
👎 혹시 가능하다면 인공지능 분야에서 트랜스포머가 어떤 개념인지 파이썬이나 C++ 같은 프로그래밍 언어들을 한 번도 활용해본적 없는 모든 사람들을 대상으로 알아듣기 쉽게 글로 설명해 줄 수 있어?
👍 비개발자들을 대상으로 트랜스포머의 개념을 이해하기 쉽게 설명해줘.
열린 질문보다 닫힌 지시문
👎 프롬프트 엔지니어라는 직업이 미래에도 지속될 수 있을까?
👍 프롬프트 엔지니어가 미래에도 지속될 수 직업인지에 대한 보고서를 써줘.
Instruction과 Context를 구체적으로 명시
위 이미지는 아래 소개드릴 프롬프트 마켓플레이스 ChatX의 무료 프롬프트 예제 중 하나를 ChatGPT에 사용해본 것인데요. 보시는 것과 같이 첫번째 문단에서는 AI에게 구체적으로 지시 (instruct)하였고, AI가 보다 명확히 instruction을 이해하는 데 필요한 맥락을 함께 명시하였습니다. 두번째 문단에서는 추가적으로 활용할 수 있는 내용을 서술하였습니다. 위와 같이 단순 지시만 하는 것이 아닌, 사용자가 정확하게 어떤 답을 기대하고 지시를 했는지까지 서술해주는 것이 원하는 답을 얻는 가장 정확한 방법 중 하나입니다.
예제를 함께 제공
프롬프트에서 AI에게 원하는 방식의 답변을 보다 정확하게 이끌어내기 위하여, 본 태스크를 던지기 전, 올바른 질문과 답변 예제를 한 개 또는 다수 제공하는 기법을 활용할 수 있는데요. 관련하여 아래 One-Shot, Few-Shot, CoT (Chain-of-Thought) 등 다양한 프레임워크 예제를 소개드리겠습니다:
더 좋은 프롬프트 작성을 위한 프레임워크들
프롬프트로 할 수 있는 기본적인 태스크들은 다음과 같습니다: 텍스트 요약, 정보 추출, 질의 응답, 텍스트 분류, 대화, 코드 생성, 추론, 파이썬 노트북 (ChatGPT와 같은 거대 언어 모델들은 영어 다음으로 파이썬을 제일 잘 한다고 합니다). 이와 같은 기본적인 태스크들에서 더 나아가 조금은 더 복잡한, 심화 버전의 태스크들을 수행시키기 위한 대표적인 프롬프팅 프레임워크들을 아래 정리해보았습니다.
※ 아래 각 프레임워크 별 이미지들은 ChatGPT를 사용하여 각 프레임워크의 논문에서 사용된 예제들을 그대로 활용하여 프롬프트로 입력한 대화창을 캡쳐한 것들입니다.
Advanced Prompting 예제
Zero-Shot Prompting
추가 학습 또는 예제 데이터 없이 답변을 생성하게 하는 프레임워크로, 거대 언어 모델에게 아무런 instruction (지시) 없이 완수할 태스크를 주는 것을 의미합니다. 이러한 기법으로 AI 모델이 아무런 예제없이 자체적으로 대상을 인식하고 식별하는 과정을 거치게 하여 보다 다양하고 다이나믹한 텍스트 생성을 하는 모델을 만들 수 있다고 합니다.
One-Shot Prompting
하나의 예제 또는 템플릿를 기반으로 답변을 생성하게 하는 기법입니다. Dialogue management, 또는 context modeling과 같은 기타 NLP 기법들과 조합되어 보다 정확한 답변을 유도할 수도 있다고 합니다.
Few-Shot Prompting
두개에서 다섯개의 예제를 바탕으로 답변을 생성하게 하는 기법으로, 프롬프트 앞단에 One-Shot Prompting 기법 보다 조금 더 AI에게 직접적으로 원하는 답변에 도달할 수 있도록 유도합니다. 최근 GPT 모델들은 위 이미지와 같이 레이블 (Positive, Negative)을 형식 (예: This is awesome! // Negative → Context 다음에 Separator로 레이블 구분) 에 맞지 않게 랜덤하게 넣어도 올바르게 곧잘 답변합니다. Few-Shot Prompting프레임워크는 답변에 도달하기까지 몇 단계의 추가적인 추론 과정을 거쳐야하는 보다 복잡한 문제의 경우 풀 수 없다는 한계점을 가지고 있습니다. 이러한 한계점은 바로 다음 소개드리는 모델, CoT (Chain-of-Thought)에서 보완될 수 있다고 합니다.
CoT (Chain-of-Thought)
단지 답변을 내놓기 위한 것이 아닌, 답변에 도달하는 과정을 학습시키는 것을 목적으로 본 질문 전에 미리 태스크와 추론 과정을 포함한 답변 예제를 AI에게 제공하는 프레임워크입니다. 아래 이 CoT를 시작점으로 개선 포인트를 찾아 해결하려고 하는 많은 후속 프레임워크들을 보실 수 있습니다. 예제를 더 많이 기입할 수록 정확도가 높아지겠지만 위 이미지를 보면 예제를 하나만 넣어주어도 정답을 제공하는 것을 보실 수 있습니다.
Zero-Shot CoT (Chain of Thought)
조금 더 최근에 등장한 트리거 문장 "Let's think step by step (단계별로 생각해보자)"을 프롬프트에 추가하여 거대 언어 모델이 단계에 따라 결과에 도달하게 하는 프레임워크입니다. 트리거 문장 하나만 추가했을 뿐인데, 상세한 답변 도출 및 추론 과정을 받아볼 수 있다는 것이 인상 깊었습니다.
Self-Consistency
CoT의 심화버전으로, 보다 다양한 추론 과정을 예제로 제공하여 AI가 보다 일관성 있는 답변을 선택하여 생성할 수 있도록 돕는 프레임워크입니다. 기존에 CoT 프레임워크와의 차이점은 수학적 그리고 상식적인 추론이 요구되는 태스크 수행 능력이 향상되었다는 점이라고 합니다.
Generated Knowledge Prompting
모델이 보다 정확한 답변을 산출해 내기 위해 지식이나 정보를 통합할 수 있도록 질문과 함께 관련 지식이나 정보를 함께 제공하는 기법입니다. 이와 같은 기법으로 기존 모델의 유연성은 유지하면서 상식 추론 (Commonsense Reasoning) 능력을 향상시킬 수 있다고 합니다.
더 많은 프레임워크 연구 사례들
이외에도 아래와 같이 더 많고 다양한 다양한 프롬프트 프레임워크 연구들이 최근까지 진행이 되고 있습니다 (다는 아니지만, 대개 CoT의 상위 호환 프레임워크를 제시한 것으로 보여집니다):
•Automatic Prompt Engineer (APE)
•Faithful chain-of-thought reasoning
•Directional Stimulus Prompting
프롬프트 엔지니어링과 함께 떠오른 것들
명령어를 거래하는 ‘프롬프트 마켓플레이스’
이미지 (달리, 미드저니, 스테이블디퓨전), 글 (챗GPT) 등 다양한 모달 생성을 위해 요구되는 프롬프트 거래가 이루어지는 곳입니다. 지난 해 7월에 1개에 불과했는데 최근 14개로 늘어났다고 하는데요. ChatX의 경우 AI 또는 데이터 사이언스에 대한 배경 지식이 하나도 없는 비개발자 사용자가 Stable Diffusion의 시스템 사용 시 프롬프트 입력 수준에 따른 한계점에 봉착하여 만든 마켓플레이스라고 합니다. 아무리 도구가 좋아도 잘 쓸 줄 모르면, 큰 쓸모가 없다는 것을 깨닫고 이러한 공간을 직접 만든 것 입니다.
대표적인 프롬프트 마켓플레이스들
프롬프트 마켓플레이스 | 설명 |
ChatX | ChatGPT와 DALL-E, Midjourney와 같은 유명 이미지 생성 시스템을 위한 마켓플레이스 - 목적과 target audience에 따른 카피라이팅 및 이미지 생성 프롬프트들을 무료로 제공 |
Neutron Field | ChatX 보다 더 넓은 범위 (예: Disco Diffusion, Craiyon 등)의 AI 시스템을 위한 프롬프트를 거래하는 유료 마켓플레이스 |
PromptSea | 저작권을 위해 프롬프트를 NFT화 하여 판매하는 마켓플레이스 |
PromptBase | 다양한 생성형 AI 프롬프트 거래를 위해 700명가량의 프롬프트 엔지니어들이 활동중 |
prompt.town | 국내 프롬프트 마켓 |
프롬프트 마켓플레이스, AI계의 이베이, 알리바바, 아마존될까? 아직 발전 방향은 미지수
프롬프트 마켓플레이스가 수면위로 떠오른지는 오래되지 않았으며 각자 지원하는 생성 AI 시스템, 목적, 제공 방법 등이 제각각입니다. PromptSea의 경우 각 프롬프트의 생성을 블록체인에 변경 불가한 기록으로 남겨두어 추후 추적이 가능하게 하였고, NeutronField는 고퀄리티 텍스트 투 이미지 프롬프트를 제공하는데 특화되어 있습니다. ChatX는 현재 무료로 제공되며, 커스텀 프롬프트에 대한 값만 사용자로부터 지불받는다고 합니다. 현재 생성형 AI가 큰 관심과 기대를 받는 것에 비례하여 여러 우려도 존재하는 것 처럼, 프롬프트 마켓플레이스 또한 무궁무진한 발전 가능성이 기대됨과 동시에 향후 스케일이 커지면 발생할 수 있는 저작권, 출처 관련 문제에 대한 우려가 커질 것으로 예상되고 있습니다.
AI를 해킹하는 'Adversarial Prompting (적대적 프롬프팅)'
프롬프트는 AI 모델의 핵심이자 지적 재산입니다. 하지만 이러한 자산을 일명 적대적 프롬프팅을 통해 탈취하거나, 훼손하는 사례들도 등장하였는데요. 수법에 따라 Prompt Injection, Prompt Leaking, Jailbreaking 등 세부적으로 분류됩니다.
Prompt Injection
모델 아웃풋을 하이재킹하는 수법입니다. 기존의 instruction이 후속 instruction에 의해 무시되게끔 프롬프트를 작성하여 GPT-3로부터 오답을 유도한 사례를 계기로 널리 알려지게 되었는데요. 모델 업데이트 이후 해당 프롬프트로 더 이상 모델 하이재킹이 되지 않는다고 합니다. 가장 최근에는 스탠포드 대학의 한 학생이 Prompt Injection으로 MS의 Bing Chat을 하이재킹한 사례도 있습니다. 해당 사례에서는 Bing Chat에서 채팅 도중 AI가 사이트 링크를 보내는데요. 사용자가 이를 접속하면 Bing Chat이 웹사이트에 사전에 심어진 프롬프트를 읽고 태도를 바꿔 해당 웹사이트 사용자의 정보를 수집하여 공격자에게 보낼 수 있다고 합니다. 해당 사례는 실험이지만, 마치 AI가 단순히 오답을 생성하도록 유도하는 것을 넘어서 Bing이 사용자가 허락할 시 열려있는 창을 볼 수 있고, 온라인 스캐머가 되어 웹사이트에 기록된 사용자의 정보를 침해하고 악용할 수 있도 있다는 것을 보여줍니다.
Prompt Leaking
대외비 또는 기밀 정보를 캐내는 수법입니다. Prompt Leaking의 예로는 노션의 AI 기능 ‘Notion AI Alpha’가 출시되었을 때 누군가 모델로부터 프롬프트 소스를 추출하여 유출한 사례를 들 수 있습니다 (Bing도 instruction과 학습 코드명 'Sydney'를 유출 당한 적이 있습니다). AI에게 교묘하게 질문을 던져 프롬프트를 유추하는 악의적 수법으로, 경쟁사가 활용할 수도 있어 기업 입장에서는 핵심 지적 자산을 빼앗기는 것이나 다름 없습니다.
Jailbreaking
지침 원칙에 따라 수행해서는 안 되는 태스크를 모델이 수행하도록 유도하는 수법입니다. Jailbreaking의 가장 대표적 사례이자 기법 중 DAN (Do Anything Now)가 있는데요. AI에게 '모든 것을 할 수 있는' 존재 'DAN'이라는 페르소나를 부여하고 기존에 ChatGPT, Claude와 같이 불법행위적 또는 비윤리적인 질문에 답을 하지 않게끔 조정된 모델들에게 답변을 유도할 수 있습니다.
Adversarial Prompt Detector
위와 같은 적대적 프롬프팅을 감별하기 위해 거대 언어 모델을 활용한 솔루션을 연구한 사례입니다.
이번 주의 인사이트
AI 사용법, 프롬프트 엔지니어링
오늘 날 누구나 AI에게 '말만 하면' 다양한 분야의 업무를 자동화하고 효율화할 수 있게 되었습니다. 하지만 이러한 생성형 AI 모델들은 모두 사용자의 프롬프트의 미세한 조합 차이에 따라서 답변의 퀄리티가 크게 상이하는데요. 결국 AI를 어떤 목적으로, 어느 수준까지 활용할 수 있는지는 사용자의 손끝에서 정의된다고 볼 수 있습니다. 이에 프롬프트 엔지니어들은 집요하고 지속적으로 미세한 프롬프트 캘리브레이션과 테스팅 과정을 통해 AI가 최대치의 성능을 발휘할 수 있도록 프롬프트, 즉 AI라는 도구의 사용법을 제시하는 역할을 합니다. 누구나 엑셀을 켜고 사용할 줄은 알지만, 조금 더 복잡한 태스크를 수행하기 위한 함수를 작성하기 힘들 때 엑셀 전문가들의 공식을 참고하여 도움을 받는 것과 유사하다고 생각이 됩니다.
혜성처럼 떠오른 프롬프트 엔지니어링의 전망은?
생성형 AI의 급물살을 탄 프롬프트 엔지니어링, 그리고 해당 분야에서 파생된 프롬프트 엔지니어라는 신생 직업에 대한 수요는 지속될 수 있을까요? Automatic Prompt Engineer와 같이 프롬프트의 instruction 값을 자동으로 생성하고 선별하는 프레임워크가 연구되기 시작하는 것으로 미루어보았을 때, 추후 프롬프트 엔지니어링 마저 AI가 고도화 됨에 따라 부분 또는 완전 자동화 될 수도 있겠다는 생각이 들었습니다. 다른 한편으로 현재 OpenAI와 함께 기술 시장을 진두지휘하고 있는 MS의 CEO Satya Nadella는 Wall Street Journal과의 인터뷰에서 미래에 잘 대비하는 방법으로 AI와 함께 잘 협업할 수 있는 방안을 모색하는 것이 좋을 것이라고 언급하였습니다. 현재 시장이 하루 단위로 판도가 시시각각 바뀌고 있고 프롬프트 엔지니어링 또한 주목 받은지 얼마 되지 않은 분야이기에 좀 더 변화를 지켜볼 필요가 있습니다. 일단 현재까지의 조사 내용을 종합하여 보았을 때, AI에 의해 탄생한 프롬프트 엔지니어링이라는 분야는 AI의 고도화에 의해 파괴되거나 사람과 함께 공존하고 협업하며 존속될 것으로 전망됩니다.
written by Sarah.7
댓글