검수요청.png검수요청.png

프롬프트 엔지니어링

위키원
이동: 둘러보기, 검색

프롬프트 엔지니어링(prompt engineering)은 거대언어모델(LLM)의 입력인 프롬프트를 효과적으로 작성하고 최적화하는 과정을 의미한다. 이는 인공지능, 특히 자연어 처리 분야에서 중요한 개념으로 자리 잡았다. 거대언어모델이 다양한 분야에서 중요한 역할을 맡으면서, 적절한 프롬프트 구성의 필요성이 크게 대두되었다.

거대언어모델은 자연어의 의미를 이해하고 대응하는 응답을 생성하지만, 그 방식은 인간과는 다르게 구성되어 있다. 이러한 특성을 고려하여, 모델에 적합한 프롬프트를 설계하는 것이 필요하다. 프롬프트 엔지니어링은 모델의 매개변수를 수정하는 파인튜닝(Fine-tuning)과 달리, 입력되는 프롬프트 자체를 수정하는 데에 집중한다.

또한, 프롬프트 엔지니어링에서 "접두어-튜닝" 또는 "프롬프트-튜닝"과 같은 방법이 활용되며, 특히 GPT 같은 대형 언어 모델은 이 과정에서 중요한 역할을 한다.

상세[편집]

프롬프트 엔지니어링은 대규모 언어 모델(Large Language Model, LLM)에서 원하는 결과를 얻기 위해 프롬프트를 공들여 만들고 최적화하는 과정이다. 여기서 프롬포트는 AI 모델에서 출력을 생성하기 위해 입력하는 텍스트를 말한다. 프롬프트는 AI 모델이 학습한 내용 가운데 특정 내용을 탐색하도록 안내해 목표에 맞는 결과를 생성한다. AI 민주화를 목표로 하는 연구 및 교육 기관인 DAIR.AI에서 깃허브를 통해 제공하는 프롬프트 엔지니어링 가이드에 따르면 프롬프트의 구성 요소는 1) 모델이 수행하기를 원하는 특정 작업 또는 지침을 말하는 ‘명령(Instruction)’, 2) 모델을 조정할 수 있는 외부 정보 또는 추가 맥락을 일컫는 ‘맥락 정보(Context)’, 3) 답변을 찾고자 하는 입력 또는 질문을 말하는 ‘입력 데이터(Input Data)’, 4) 출력의 유형 또는 형식을 의미하는 ‘출력 데이터(Output Data)’다.

프롬프트에 모든 구성 요소가 포함돼야 하는 것은 아니다. 아울러 AI 모델에 전달할 지시 사항이나 질문 같은 정보가 포함될 수 있으며, 입력이나 예제 같은 기타 세부 정보도 포함될 수 있다. 결과의 품질은 프롬프트가 얼마나 많은 정보를 제공하고, 프롬프트가 얼마나 잘 구성돼 있는지에 따라 달려있다. 아주 간단한 프롬프트의 예는 다음과 같다.

프롬프트
The sky is


출력
Blue
The sky is blue on a clear day. On a cloudy day, the sky may be gray or white.

여기서 AI 모델은 ‘The sky is~’라는 프롬프트의 맥락에 부합하긴 하지만, 이렇게 너무 단순한 프롬프트는 사용자가 예상하지 못했거나 원하는 것과는 거리가 먼 답을 제공할 수 있다. 이 예시는 사용자가 원하는 바를 구체적으로 설명해야 할 필요성을 강조한다. 따라서 프롬프트를 다음과 같이 추가할 수 있다.

프롬프트
Complete is sentence:
The sky is blue


출력
So beautiful today.

AI 모델에 문장을 완성하라고 지시했기 때문에, 즉 지시를 정확하게 따르기 때문에 결과가 더 적절해진다. 이렇게 ‘원하는’ 작업을 수행하도록 지시하는 최적의 프롬프트를 설계하는 접근 방식을 프롬프트 엔지니어링이라고 한다. 프롬프트 엔지니어링을 통해 텍스트 요약, 정보 추출, 질의응답, 텍스트 분류, 코드 생성, 추론 등의 작업에서 언어 모델의 성능을 향상할 수 있다.

프롬프트[편집]

프롬프트는 특정 작업을 수행하도록 생성형 AI에 요청하는 자연어 텍스트다. 생성형 AI는 스토리, 대화, 동영상, 이미지, 음악과 같은 새로운 콘텐츠를 만들어내는 인공지능 솔루션으로, 방대한 양의 데이터로 사전 훈련된 심층 신경망을 사용하는 대규모 기계 학습(ML) 모델을 기반으로 한다. 이러한 대규모 언어 모델(LLM)은 매우 유연하여 문서 요약, 문장 완성, 질문 응답, 언어 번역 등 다양한 작업을 수행할 수 있다. 특정 사용자 입력에 대해 모델은 과거 훈련을 바탕으로 판단한 최상의 결과를 예측하여 응답한다.

최근 생성형 AI 모델의 발전으로, 컴퓨터는 기존의 명령어가 아닌 자연어, 즉 인간의 언어 그대로를 입력받아 명령을 수행할 수 있게 되었다. 사용자는 이제 더 자유롭고 다양한 결과물을 기대할 수 있게 되었고, 이러한 AI 시스템에서 어떤 행동을 해야 하는지 설명하는 입력값을 프롬프트라고 부른다. 프롬프트는 명령, 지시, 질문, 요청 등 언어 모델에 입력하는 모든 것을 포함한다.

AI 언어 모델은 매우 강력하며, 단어 하나만으로도 상세한 응답을 생성할 수 있다. 하지만 모든 유형의 입력이 유용한 출력을 생성하는 것은 아니며, 생성형 AI 시스템이 정확하고 연관성 있는 응답을 생성하려면 컨텍스트와 세부 정보가 필요하다. 프롬프트를 체계적으로 설계함으로써 더 의미 있고 유용한 결과물을 얻을 수 있으며, 이를 프롬프트 엔지니어링이라 한다. 이는 AI 시스템에서 원하는 결과를 얻을 때까지 프롬프트를 지속적으로 조정하는 과정이다. 프롬프트 입력 수준에 따라 결과물의 품질이 달라지며, AI 서비스의 성능을 평가하는 중요한 기준이 된다.[1][2]

중요성 및 이점[편집]

프롬프트 엔지니어링의 중요성은 생성형 AI 기술의 발전과 함께 급격히 증가하고 있다. 프롬프트 엔지니어는 최종 사용자와 대규모 언어 모델 간의 격차를 해소하는 중요한 역할을 맡고 있다. 이들은 다양한 유형의 입력을 실험하여, 애플리케이션 개발자가 여러 시나리오에서 재사용할 수 있는 프롬프트 라이브러리를 구축한다. 이를 통해 AI 애플리케이션의 효율성과 효과를 극대화하고, 사용자가 AI 도구에서 일관되고 적절한 응답을 얻도록 돕는다. 또한 프롬프트 엔지니어링을 통해 사용자는 시행착오 없이도 처음부터 원하는 결과를 쉽게 도출할 수 있으며, 이를 통해 AI와의 상호작용에서 더 나은 사용자 경험을 얻을 수 있다.

프롬프트 엔지니어링의 첫 번째 이점은 개발자가 AI의 출력을 효과적으로 제어할 수 있는 능력을 강화한다는 점이다. 예를 들어, 사용자가 '셔츠 구입처'와 같은 모호한 질문을 입력하면, 엔지니어가 설계한 프롬프트를 사용해 AI는 보다 정확하고 관련성 높은 정보를 제공한다. 이를 통해 사용자가 AI에 잘못된 요청을 하거나, AI가 처리할 수 없는 것을 묻는 상황을 방지할 수 있다. 동시에 프롬프트 엔지니어링은 사용자가 최소한의 입력만으로도 AI가 그들의 의도를 충분히 이해하도록 해 준다. 예를 들어, 법률 문서 요약과 같은 상황에서 프롬프트 엔지니어는 AI가 스타일과 어조를 고려한 맞춤형 요약을 제공하도록 한다.

또한 프롬프트 엔지니어링은 AI 모델이 사용자에게 더욱 개인화된 결과를 제공하도록 돕는다. GPT-4나 Google Bard와 같은 서로 다른 AI 모델 간의 차이를 이해하고, 모델 특성에 맞는 프롬프트를 작성함으로써, 더 관련성 있고 정확한 결과를 생성할 수 있다. 이를 통해 AI 생성 아웃풋의 품질을 향상시키고, 광범위한 후처리의 필요성을 줄일 수 있다. 이러한 방식은 특히 AI 시스템이 발전함에 따라 더욱 중요한 역할을 하게 된다.

프롬프트 엔지니어링의 또 다른 중요한 이점은 AI 시스템을 보다 유연하게 만들 수 있다는 것이다. 프롬프트 엔지니어들은 도메인에 중립적인 지침을 포함하는 프롬프트를 설계하여, 이를 기업 전반에 걸쳐 재사용할 수 있는 시스템을 만들 수 있다. 이는 조직이 보다 유연한 도구를 대규모로 구축하는 데 기여하며, AI 투자를 확장하는 데 중요한 역할을 한다. 동시에 프롬프트 엔지니어는 AI와의 장기적인 상호작용에서 발생하는 다양한 문제를 해결하며, AI가 예상치 못한 작업까지도 수행하도록 한다. 결론적으로, 생성형 AI 기술의 발전에 따라 프롬프트 엔지니어링의 중요성과 필요성은 계속해서 증가하고 있다. AI의 출력 품질을 높이고, 개발자와 사용자가 더 나은 제어와 경험을 할 수 있도록 돕는 프롬프트 엔지니어링은 앞으로도 AI의 진화에 중요한 역할을 할 것이다.[1][3]

작동법[편집]

생성형 AI 모델은 복잡한 언어를 파악하고 신경망을 통해 방대한 양의 데이터를 처리할 수 있는 트랜스포머 아키텍처를 기반으로 구축된다. AI 프롬프트 엔지니어링은 모델의 아웃풋을 형성하는 데 도움이 되어 인공 지능이 의미 있고 일관성 있게 응답하도록 한다. 토큰화, 모델 매개변수 튜닝, 상위 k 샘플링 등 여러 가지 프롬프트 기술을 통해 AI 모델이 유용한 응답을 생성하도록 한다. 프롬프트 엔지니어링은 생성형 AI를 구동하는 파운데이션 모델의 잠재력을 최대한 발휘하는 데 필수적인 것으로 입증되고 있다. 파운데이션 모델은 트랜스포머 아키텍처를 기반으로 구축된 대규모 언어 모델(LLM)로, 생성형 AI 시스템에 필요한 모든 정보가 담겨 있다.

생성형 AI 모델은 자연어 처리(NLP)를 기반으로 작동하며 자연어 입력을 사용하여 복잡한 결과를 생성한다. 기본 데이터 과학 준비, 트랜스포머 아키텍처 및 머신 러닝 알고리즘을 통해 이러한 모델은 언어를 이해한 다음 대규모 데이터 세트를 사용하여 텍스트 또는 이미지 아웃풋을 생성할 수 있다. DALL-E 및 Midjourney와 같은 텍스트 이미지 생성형 AI는 텍스트 설명에서 이미지를 생성하는 데 탁월한 모델인 안정적인 확산과 함께 LLM을 사용한다. 효과적인 프롬프트 엔지니어링은 기술 지식과 자연어, 어휘 및 문맥에 대한 깊은 이해를 결합하여 수정이 거의 필요 없는 최적의 결과물을 만들어낸다.[3]

기본 구성 요소[편집]

프롬프트 엔지니어링의 기본 구성 요소는 다음과 같다.

  • 명확성(Clarity) : 프롬프트는 AI 모델이 이해하기 쉽도록 명확하고 간결해야 한다. 예를 들어 "부산의 날씨에 대해 알려줘" 보다는 "오늘 부산의 날씨가 어떤지 자세히 설명해줘"가 더 명확하다.
  • 구체성(Specificity) : 프롬프트는 원하는 출력을 얻기 위해 필요한 정보를 구체적으로 제공해야 한다. 예를 들어 "건강한 아침 식단"보다는 "낮은 칼로리, 고단백의 체중 감량을 위한 아침 식단"이 더 구체적이다.
  • 문맥(Context) : 프롬프트는 AI 모델이 적절한 맥락에서 생성할 수 있도록 충분한 배경 정보를 제공해야 한다. 예를 들어 "제주도 여행 계획 세워줘"보다는 "다음 달 제주도로 3박 4일 가족여행을 갈 계획이야. 맛집, 관광지, 숙소 추천해줘"가 더 많은 문맥을 제공한다.
  • 의도(Intent) : 프롬프트는 사용자의 의도를 명확히 전달하여 AI 모델이 원하는 방향으로 생성할 수 있도록 해야 한다. 예를 들어 "태백산맥에 대해 설명해줘"보다는 "태백산맥의 지형적 특징과 생태계에 대해 자세히 설명해줘"가 더 명확한 의도를 전달한다.

이러한 구성 요소들을 고려하여 프롬프트를 설계하면, AI 모델과 더욱 효과적으로 소통할 수 있다. 하지만 완벽한 프롬프트를 만드는 것은 쉽지 않으며, 경험과 실험을 통해 지속적으로 개선해 나가는 과정이 필요하다.[4]

기법[편집]

기초[편집]

제로샷 프롬프팅[편집]

제로샷 프롬프팅(Zero-shot Prompting)은 사전 학습이나 특정 예시를 제공하지 않고, AI 모델이 이전에 학습한 일반적인 지식을 바탕으로 새로운 작업을 수행하도록 하는 기법이다. 이 방법은 AI가 특정 작업에 대해 별도의 훈련을 받지 않았더라도 간단한 명령어만으로 기대되는 결과를 얻는 데 유용하다. 예를 들어, "다음 기사를 3줄로 요약하라"는 명령을 입력하면, AI는 해당 작업에 대한 사전 지식이나 예시 없이도 요약을 생성할 수 있다. 제로샷 프롬프팅은 다음과 같은 특징을 가지고 있다.

  • 범용성 : 모델이 특정 작업에 대한 사전 지식 없이도 적절한 답변을 생성할 수 있어야 한다. 이를 통해 AI 모델의 일반화 능력과 유연성을 평가할 수 있다.
  • 프롬프트 디자인 : 제로샷 프롬프팅의 성공 여부는 프롬프트(명령어)를 어떻게 구성하느냐에 크게 달려 있다. 질문이나 명령을 AI가 이해하고 반응할 수 있는 방식으로 설계해야만, 최적의 성능을 이끌어낼 수 있다.
  • 응용 가능성 : 제로샷 프롬프팅은 다양한 언어 작업에서 활용될 수 있으며, 특히 새로운 도메인이나 예상치 못한 시나리오에서 유용하다. AI가 특별한 사전 훈련 없이도 다양한 작업을 처리할 수 있다는 점에서 이 기법의 실용성이 두드러진다.

예를 들어, GPT에 아무런 사전 정보를 주지 않고,

"다음 문장의 감성이 어떤지 긍정, 부정, 중립으로 분류해줘:
'이 영화는 정말 실망스러웠어. 기대했던 것보다 훨씬 지루했어.'"

라는 프롬프트를 주면, 모델은 이전에 학습한 일반적인 지식에 기반해서 문장의 내용을 충분히 이해하고 감성을 분류할 수 있다. 제로샷 프롬프팅은 다양한 과제에 빠르게 적용할 수 있다는 장점이 있지만, 모델의 성능이 프롬프트에 크게 의존하므로 프롬프트 설계에 주의가 필요하다. 그럼에도 제로샷 프롬프팅은 AI 모델의 범용성과 확장 가능성을 평가하는 중요한 기법으로, 모델이 사전에 학습하지 않은 상황에서도 다양한 작업에 적응할 수 있는 능력을 갖추도록 돕는다.[5][6]

퓨샷 프롬프팅[편집]

퓨샷 프롬프팅(Few-shot Prompting)은 제로샷 프롬프팅의 한계를 보완하는 방식으로, AI 모델에게 소수의 예시를 제공하여 더 정확하고 관련성 높은 출력을 생성할 수 있도록 돕는 기법이다. 일반적으로 1~5개의 예시를 통해 모델이 작업을 더 잘 이해하고 학습할 수 있게 하며, 문장 내 단어 설명, 콘텐츠 분류, 감정 분석 등 다양한 언어 작업에서 효과적으로 사용된다.

퓨샷 프롬프팅에는 세 가지 주요 구성 요소가 있다. 첫째, 작업 설명으로, 모델에게 수행할 작업에 대한 간단한 설명을 제공한다. 예를 들어, ‘해달이라는 영어 단어를 프랑스어로 번역하라’라는 지침이 있을 수 있다. 둘째, 예시로, ‘sea otter → loutre de mer’와 같은 번역 예시를 제시하여 모델이 해당 작업을 더 잘 이해할 수 있게 한다. 마지막으로, 프롬프트는 새로운 예시의 시작 부분을 제공하여 모델이 누락된 텍스트를 완성하는 방식으로 결과를 생성하게 된다. 예를 들어, ‘치즈’라는 영어 단어에 대해 ‘cheese → ’라는 프롬프트를 제시하면, AI는 그에 맞는 프랑스어 단어를 생성한다.

퓨샷 프롬프팅은 몇 가지 특징을 갖는다.

  • 데이터 효율성: 퓨샷 학습은 많은 데이터를 필요로 하지 않는다. 대신, 몇 개의 학습 예제만을 사용하여 모델의 학습을 유도한다.
  • 적응성: 소수의 예제를 통해 새로운 도메인이나 작업에 대해 빠르게 적응할 수 있는 능력을 평가할 수 있다.
  • 프롬프트 디자인: 효과적인 퓨샷 학습을 위해선, 모델이 이해하고 반응할 수 있는 방식으로 명확하고 정확한 프롬프트 디자인이 필요하다.

예를 들어, 이전의 감성 분석 예시에 퓨샷 프롬프팅을 적용하면 다음과 같다.

"다음은 영화 리뷰 문장과 그에 대한 감성 분류 예시야:
'이 영화는 정말 최고였어! 연기, 연출, 음악 모두 완벽했어.' - 긍정'
영화는 나쁘지 않았지만, 좀 더 긴장감이 있었으면 좋았을 거야.' - 중립
이제 이 문장의 감성을 분류해봐:
'이 영화는 정말 실망스러웠어. 기대했던 것보다 훨씬 지루했어.'"

이렇게 실제 원하는 작업 요청 앞에 몇 개의 예시를 제공하면 모델은 과제를 더 명확히 이해하고, 유사한 패턴을 학습하여 더 나은 성능을 보일 수 있다. 결과적으로 이 기법은 특히 소수의 데이터로도 효과적인 성능을 발휘해야 하는 상황에서 중요한 역할을 하며, AI 모델의 유연성과 적응성을 평가하는 데 매우 유용하다.[5][6]

프롬프트 체이닝[편집]

프롬프트 체이닝(Prompt Chaining)은 복잡한 과제를 여러 개의 하위 과제로 나누어 순차적으로 처리하는 기법이다. 이는 각 단계에서 모델이 더 잘 수행할 수 있는 작은 과제를 제시하여, 전체 과제의 성능을 향상시킬 수 있다. 예를 들어, "서울에서 부산까지 가는 최적의 여행 경로를 알려줘"라는 과제를 프롬프트 체이닝으로 해결한다면 다음과 같은 단계를 거칠 수 있다.

“아래 과제들을 각 단계 별로 수행해줘.
1단계 : 서울과 부산 사이의 주요 도시들을 나열해줘
2단계 : 각 도시의 주요 관광지와 명소를 3개씩 추천해줘
3단계 : 서울에서 출발하여 추천된 도시와 관광지를 경유하여 부산까지 가는 효율적인 경로를 제안해줘
4단계 : 제안된 경로에 대해 예상 소요 시간, 교통수단, 숙박 옵션 등을 고려하여 자세히 설명해줘"

이렇게 단계별로 과제를 나눠 수행을 요청하면, 모델은 각 단계에서 더 구체적이고 명확한 지시 사항을 받게 되기 때문에 포괄적인 요청보다 최종 결과물의 품질을 높일 수 있다.[5]

고급[편집]

사고의 사슬 프롬프팅[편집]

퓨샷 프롬프팅은 다중 추론을 요구하는 작업, 특히 산술 및 논리 추론과 같은 복잡한 문제에서는 한계가 있을 수 있다. 이를 해결하기 위해 등장한 기법이 사고의 사슬 프롬프팅(Chain of Thoughts Prompting, 이하 CoT 프롬프팅)이다. 이 기법은 중간 추론 단계를 추가하여 AI 모델이 복잡한 문제를 단계적으로 해결하도록 한다. CoT 프롬프팅은 하나의 문제에 대한 추론 과정 자체를 단계별로 자세히 설명하도록 유도함으로써, AI 모델의 문제 해결 능력을 향상시키는 기법이다. 예를 들어, 산술 문제를 푸는 과정에서 AI가 중간 계산 단계를 일련의 과정으로 설명하고, 그 과정을 학습함으로써 더 나은 결과를 도출할 수 있다.

CoT 프롬프팅은 앞선 프롬프트 체이닝(Prompt Chaining)과 유사해 보일 수 있지만, 중요한 차이점이 있다. 프롬프트 체이닝은 복잡한 태스크를 여러 개의 하위 태스크로 나누어 순차적으로 처리하는 방식인 반면, CoT 프롬프팅은 중간 단계의 사고 과정을 명시적으로 표현하여 최종 답안에 이르기까지의 논리적 연결고리를 강화하는 데 초점을 맞춘다.

예를 들어, "민수는 60분 동안 시속 5km로 걷습니다. 민수가 간 거리는 몇 km일까요?"라는 문제를 간단한 CoT 프롬프팅으로 해결해 보면,

  • 프롬프트

"아래 문제를 단계별로 풀이해 주세요.
문제: 민수는 60분 동안 시속 5km로 걷습니다. 민수가 간 거리는 몇 km일까요?
풀이:"

  • 예상출력

"풀이: 1. 문제에서 민수의 걷는 속도는 시속 5km라고 했습니다. 2. 민수는 60분 동안 걸었다고 합니다. 3. 60분은 1시간이므로, 민수는 1시간 동안 걸은 것입니다. 4. 속도와 시간을 알고 있으므로, 거리는 '속도×시간'으로 구할 수 있습니다. 5. 민수의 걷는 속도는 시속 5km이고, 걸은 시간은 1시간이므로, 거리는 5km×1시간=5km입니다.

따라서, 민수가 간 거리는 5km입니다."

이렇게 CoT 프롬프팅을 사용하면, 모델은 문제 해결 과정을 자세히 설명하며 단계별로 풀이한다. 이는 모델의 추론 과정을 투명하게 만들어주며, 최종 답안의 정확도와 신뢰도를 높여준다.

사고의 사슬 프롬프팅은 특히 복잡한 추론 작업에서 뛰어난 성능을 발휘하지만, 이 방식은 수동으로 추론 프로세스를 구성해야 하므로 많은 시간과 노력이 필요하다. 이러한 프롬프트 엔지니어링 기법은 AI 모델의 성능을 높이는 데 중요한 역할을 하며, AI와의 상호작용에서 보다 정확하고 기대에 부합하는 결과를 이끌어내는 데 도움을 준다. 더 나아가, 프롬프트 인젝션과 같은 악용 가능성도 존재하여, 이러한 문제를 해결하는 연구 또한 중요한 과제가 되고 있다.[6][7]

사고의 나무 프롬프팅[편집]

사고의 나무(Tree of Thought, ToT) 프롬프팅은 CoT 프롬프팅을 확장한 개념으로, 문제 해결을 위한 다양한 접근 방식을 트리 구조로 표현하는 기법이다. 이는 모델이 여러 가지 사고의 흐름을 동시에 탐색할 수 있도록 도와주며, 최적의 솔루션을 찾는데 효과적이다. 예를 들어, "A 도시에서 B 도시로 가는 최적의 경로를 찾아주세요."라는 문제를 간단한 ToT 프롬프팅으로 해결해 보면,

  • 프롬프트

"아래 문제를 Tree of Thought 방식으로 아래 제시된 각각 접근 방식에서 분석하고 그 중 최적의 솔루션을 찾아주세요.
문제: A 도시에서 B 도시로 가는 최적의 경로를 찾아주세요.
접근 방식:
1. 최단 거리 경로
2. 최소 시간 경로
3. 최소 비용 경로
트리 구조로 표현하면서, 각 접근 방식의 장단점을 분석하고 최적의 솔루션을 제안해 주세요."

  • 예상 출력

"트리 구조:
1. 최단 거리 경로
 1.1. 고속도로 이용
    장점: 거리가 가장 짧음
    단점: 통행료가 비쌈, 정체 가능성 있음
 1.2. 국도 이용
    장점: 통행료가 없거나 저렴함
    단점: 거리가 상대적으로 김, 신호등이 많아 시간이 오래 걸림
2. 최소 시간 경로
 2.1. 고속철도 이용
    장점: 가장 빠른 이동 수단
    단점: 역까지의 접근성 고려 필요, 비용이 높음
 2.2. 항공편 이용
    장점: 장거리 이동 시 가장 빠름
    단점: 공항까지의 접근성 고려 필요, 비용이 가장 높음
3. 최소 비용 경로
 3.1. 버스 이용
    장점: 가장 저렴한 이동 수단
    단점: 시간이 오래 걸림, 환승 횟수가 많을 수 있음
 3.2. 카풀 이용
    장점: 비용 절감 효과가 있음
    단점: 동승자와의 시간 조율 필요, 경로 유연성 낮음

최적의 솔루션:
- A 도시와 B 도시 간의 거리, 이동 시간, 비용 등을 종합적으로 고려할 때, 고속철도를 이용하는 것이 가장 최적의 솔루션으로 보입니다.
- 고속철도는 빠른 이동 속도와 함께, 항공편보다는 저렴한 비용으로 이용할 수 있습니다.
- 다만, A 도시와 B 도시의 고속철도 역까지의 접근성을 고려하여, 역까지의 이동 수단과 소요 시간을 함께 고려해야 할 것입니다.
- 만약 A 도시와 B 도시 간의 거리가 매우 먼 경우, 항공편을 이용하는 것이 시간 절약 측면에서 더 나은 선택일 수 있습니다."

이렇게 ToT 프롬프팅을 사용하면, 모델은 문제에 대한 다양한 접근 방식을 트리 구조로 표현하며, 각각의 장단점을 분석한다. 이를 통해 문제를 다각도로 바라보고, 최적의 솔루션을 도출할 수 있다.[7]

리액트 프레임워크[편집]

ReAct(Reason+Act) 프레임워크는 추론(Reasoning)과 행동(Action)을 연결하여 문제를 해결하는 방식이다. 이는 모델이 문제에 대해 추론한 후, 그에 따른 행동을 생성하고, 다시 그 행동의 결과를 바탕으로 추론하는 과정을 반복하는 것을 의미한다. 예를 들어 데이터를 바탕으로 마케팅 문제를 해결하기 위해 다음과 같은 프롬프팅을 제시할 수 있다.

  • 프롬프트

“상황: 당신은 마케팅 회사에서 일하는 데이터 분석가입니다. 소셜 미디어 캠페인의 효과를 분석하는 새 프로젝트를 맡게 되었습니다. 이 캠페인은 여러 디지털 광고를 포함하고 있으며, 각 광고는 다양한 지표를 통해 성과가 측정됩니다.

문제: 최근 캠페인 데이터를 분석하던 중, 몇몇 광고가 예상보다 낮은 성과를 보이고 있는 것을 발견했습니다.

Reason: 당신의 역할은 이 문제의 원인을 파악하는 것입니다. 원인을 조사하기 위해 어떤 데이터를 분석하겠습니까? 이 문제에 대해 어떤 가설을 세울 수 있습니까?

Act: 원인을 파악한 후, 상황을 개선하기 위해 어떤 조치를 제안할 수 있습니까? 여러분의 제안은 어떤 근거에 기반하고 있습니까?”

  • 예상 출력

<분석>

데이터 분석:
데이터 파일에서 사용자 참여율, 클릭 수, 전환율 등의 지표를 종합적으로 분석합니다.
특정 광고가 평균보다 낮은 성과를 보인 지표들을 상세히 파악합니다.
시간대별, 지역별, 타깃 오디언스별 데이터를 분석하여 어느 부분에서 문제가 발생했는지 추적합니다.

가설 설정:
타깃 오디언스가 잘못 설정되어 광고가 의도한 대상에게 도달하지 못했을 수 있습니다.
광고 콘텐츠의 메시지가 경쟁 광고에 비해 덜 매력적이거나 명확하지 않을 수 있습니다.
광고 게재 시간이 타깃 오디언스의 온라인 활동 시간과 맞지 않을 수 있습니다.

<조치 제안>

타깃 오디언스 재조정:
타깃 설정을 보다 세밀하게 조정하여, 광고가 정확한 대상에게 도달하도록 합니다. 이를 위해 타깃 오디언스의 소비 행태와 관심사를 재분석합니다.

광고 콘텐츠 개선:
광고 메시지를 더욱 명확하고 매력적으로 재작성하고, 디자인을 개선하여 사용자의 관심을 끌 수 있도록 합니다. 경쟁 광고를 분석하여 우리 광고의 차별점을 강조합니다.

광고 시간 조정:
광고가 게재되는 시간을 조정하여, 타깃 오디언스의 최대 활동 시간에 맞춰 효율을 높입니다. 데이터 분석을 통해 최적의 광고 시간대를 결정합니다.

이렇게 ReAct 프레임워크를 사용하면, 모델은 사용자와의 대화를 통해 문제에 대한 추론과 행동을 반복하며 단계적으로 문제를 해결해 나간다. 이는 실제 상황에 적용 가능한 문제 해결 능력을 향상시키는 데 도움이 될 수 있다.[7]

멀티모달 CoT 프롬프팅[편집]

멀티모달 CoT 프롬프팅은 이미지와 텍스트를 함께 활용하여 문제를 해결하는 기법이다. 이는 시각적 정보와 언어적 정보를 통합적으로 처리할 수 있는 AI 모델의 능력을 활용하는 것으로, 더욱 풍부하고 정확한 문제 해결을 가능하게 한다. 예를 들어, "다음 이미지에서 고양이를 찾아 빨간색 상자로 표시하고, 고양이의 품종을 설명해 주세요."라는 문제를 멀티모달 CoT 프롬프팅으로 해결해 보면,

  • 프롬프트

"첨부 이미지를 분석하여 고양이를 찾아 빨간색 상자로 표시하고, 고양이의 품종을 설명해 주세요.
[이미지: 강아지와 고양이가 함께 있는 사진]

분석 과정:
1. 이미지에서 고양이를 찾습니다.
2. 고양이에 빨간색 상자를 그려 표시합니다.
3. 고양이의 특징을 분석하여 품종을 파악합니다.
4. 고양이의 품종과 그 근거를 설명합니다."

  • 예상 출력

"분석 과정:
1. 이미지를 분석한 결과, 강아지 옆에 턱시도 무늬의 고양이가 있습니다.
2. 고양이를 빨간색 상자로 표시했습니다. [이미지: 빨간색 상자로 고양이가 강조된 사진]
3. 고양이의 특징을 살펴보면, 검은색과 하얀색의 대비되는 털 색, 짧은 털, 긴 몸통과 다리가 특징입니다. 이는 턱시도 고양이의 전형적인 모습입니다.
4. 이 고양이는 턱시도 고양이로 보입니다. 턱시도 고양이는 검은색과 하얀색의 털 색이 마치 턱시도를 입은 것처럼 대비되는 것이 특징이며, short hair 종에 속합니다.
긴 몸통과 다리를 가지고 있어 우아한 자태를 자랑하죠."

이렇게 멀티모달 CoT 프롬프팅을 활용하면 이미지와 텍스트를 함께 단계 별로 분석하여 더욱 정확하고 상세한 문제 해결이 가능해진다.[8]

그래프 프롬프팅[편집]

그래프 프롬프팅은 지식 그래프(Knowledge Graph)를 활용하여 문제를 해결하는 기법이다. 지식 그래프는 개념들 간의 관계를 노드와 에지로 표현한 것으로, 방대한 양의 정보를 구조화하여 저장할 수 있다. 그래프 프롬프팅은 이러한 지식 그래프를 활용하여 복잡한 질의에 대한 답변을 생성할 수 있다. 예를 들어, "알버트 아인슈타인의 업적과 그가 받은 수상 내역을 알려주세요."라는 문제를 그래프 프롬프팅으로 해결해 보면,

  • 프롬프트

"아래 질문에 대해 지식 그래프를 활용하여 답변을 생성해 주세요.
질문: 알버트 아인슈타인의 업적과 그가 받은 수상 내역을 알려주세요.
지식 그래프 검색 키워드: 알버트 아인슈타인, 업적, 수상"

  • 예상 출력:

"지식 그래프 검색 결과
- 알버트 아인슈타인 노드
- 업적 에지: 상대성 이론, 광전효과 설명, 브라운 운동 이론
- 수상 에지: 노벨 물리학상알버트 아인슈타인은 세계적으로 가장 유명한 물리학자 중 한 명입니다. 그의 주요 업적으로는 다음과 같은 것들이 있습니다:
1. 상대성 이론: 특수 상대성 이론과 일반 상대성 이론을 발표하여 시공간과 중력에 대한 새로운 이해를 제시했습니다.
2. 광전효과 설명: 빛의 입자성을 설명하는 광전효과를 발견하고 이론적으로 설명했습니다. 이는 양자역학의 기초가 되었죠.
3. 브라운 운동 이론: 물질을 구성하는 원자와 분자의 운동을 설명하는 이론을 발표했습니다.
이러한 업적을 인정받아 아인슈타인은 1921년 노벨 물리학상을 수상했습니다. 수상 이유는 광전효과에 대한 연구와 이론이었습니다."

이렇게 그래프 프롬프팅을 활용하면 방대한 지식 베이스에서 질문과 관련된 정보를 효과적으로 추출하여 답변을 생성할 수 있다.[8]

가이드라인[편집]

대표적인 프롬프트 엔지니어링[편집]

일반적으로 프롬프트에는 답변을 얻고자 하는 질문을 포함하지만, 아래의 방법을 활용하면 보다 효과적인 응답을 얻을 수 있다.

  1. 역할 설정하기: 거대 언어 모델에게 특정한 역할을 부여하고, 이에 따라 답변하게 할 경우 더 전문적인 답변을 받을 수 있다. 예를 들어, 모델에게 ‘영어 강사’의 역할을 부여하면 영어 대화를 진행하며 교육적인 목적의 응답을 얻을 수 있다.
  2. 형식 지정하기: 프롬프트에 원하는 답변의 형식을 명시하면, 해당 형식의 답변을 받을 수 있다. 예를 들어, ‘선생님과 학생의 대화문 형식으로 설명해 주세요’ 라는 지시를 통해 상세한 대화 형식의 답변을 생성하도록 유도할 수 있다.
  3. 닫힌 질문 설정하기: ‘어떻게 해야 할까요?’의 막연한 질문보다는 ‘합리적으로 해결하는 방안을 제시해 주세요’와 같은 구체적인 질문을 전달할 때 모델은 더 구체적이고 목적에 부합하는 답변을 제시한다.
  4. 참고할 예제 제공하기: 단순히 질문만을 주고 답변을 요구하는 것을 제로-샷 러닝(Zero-shot Learning)이라고 부르고, 참고할 만한 예시를 함께 제공하는 것을 예시의 수에 따라 퓨-샷 러닝(Few-shot Learning) 혹은 원-샷 러닝(One-shot Learning)이라고 부르는데, 퓨-샷 러닝과 원-샷 러닝은 제로-샷 러닝에 비해 정확한 답변을 얻을 수 있다.[9]

복잡한 문제에서의 프롬프트 엔지니어링[편집]

만약 수학적 계산이나, 논리적인 추론이 필요한 문제를 프롬프트로 전달하는 경우, 잘못된 결과를 내거나 존재하지 않는 결과를 제시하는 환각(Hallucination)의 가능성이 높아진다. 아래의 방법을 활용하면 보다 정확한 답변을 얻을 수 있다.

  1. 관련된 문서 제공하기: 프롬프트에 대해 답변하는 데 참고할 만한 데이터를 프롬프트와 함께 제시하면 모델이 보다 정확한 정보를 활용할 수 있다. 질문과 관련된 문서를 검색하여 프롬프트에 추가하는 방식을 검색 증강 생성(Retrieval Augmented Generation, RAG)이라고 부른다.
  2. 생각의 연쇄(Chain of Thought): 복잡한 문제를 해결하기 위해, 모델이 문제를 단계별로 분해하여 생각하는 과정을 보여주도록 하는 방식이다. 이를 통해 모델은 더 명확하고 논리적인 답변을 생성할 수 있다. 이는 논리적인 추론 과정이 포함된 예시를 제공하는 퓨-샷 러닝으로 볼 수 있다.
  3. 최소에서 최대(Least to Most): 복잡한 문제를 작은 문제로 나누어, 점진적으로 프롬프트를 전달하며 이전의 답변 결과를 프롬프트에 계속 추가한다. 이를 통해 모델은 문제를 단계별로 나누어 더 체계적으로 접근할 수 있다.
  4. 자기 확신 (Self-consistency): 거대 언어 모델의 무작위성을 해결하기 위한 이 기법은 모델이 여러 번 같은 질문에 대답하게 한다. 이후 가장 일관성이 높은 답변을 선택함으로써, 더 신뢰할 수 있는 결과를 얻을 수 있다.[9]

예시[편집]

명확하고 구체적인 지시 작성

작업 관련 내용을 모르는 신입 사원에게 지시하듯 명확하고 구체적으로 필요한 결과를 얘기해야 한다. 그리고 텍스트의 어조를 어떻게 원하는지 명시하는 것도 도움이 된다. 일반적으로 긴 프롬프트가 모델에게 더 많은 명확성과 맥락을 제공하며, 이는 실제로 더 상세하고 관련 있는 결과를 이끈다.[10]

  • (X) 앨런 튜링에 대해 무언가 써주세요
  • (O) 앨런 튜링의 과학적인 업적 및 역사적 역할에 대해 전문 과학 기자처럼 알려줘
  • (X) 가장 큰 나라를 알려줘
  • (O) 인구가 가장 많은 나라를 알려줘
  • 구분 기호를 사용하여 입력 내용을 명확하게 표시 : 문장에서 끊어야 할 부분에 대해서 명확하게 띄어쓰기, 쉼표, 마침표 등으로 의도한 단어를 구분해야 한다. 동일한 말도 구분에 따라서 의미 차이가 큰 경우라면, 명확한 구분이 중요하다.
  • (X) 아버지가방에 들어가신다
  • (O) 아버지가 방에 들어가신다
  • 구조화된 출력 방식 요청 : 어떤 방식으로 표현되길 원하는지 구체적으로 알려줘야 한다.
  • (X) 구구단을 출력해 줘
  • (O) 구구단을 9×9 표형식으로 출력해 줘
  • 원하는 작업의 성공적인 실행 예시 제공 : 원하는 답변에 대한 베스트 예제가 있다면, 그 내용을 알려주고 일관된 스타일의 응답을 요청할 수 있다.

당신의 임무는 일관된 스타일로 대답하는 것입니다.
<어린이>: 인내심에 대해 가르쳐주세요.
<할머니>: 가장 깊은 골짜기를 조각하는 강은
계곡을 깎아내는 강은 겸손한 샘에서 흐르고,
가장 웅장한 교향곡은 하나의 음에서 시작된단다.
<어린이>: 회복탄력성에 대해 가르쳐 주세요.

——-——- (위 프롬프트 입력 후의 답변) ——-——-

회복탄력성은 폭풍우 속에서도 꿋꿋이 버티고
시간이 지날수록 더욱 강해지는 떡갈나무와 같단다.
회복탄력성은 인생의 도전이 우리를 쓰러뜨리려 할 때
다시 일어설 수 있도록 도와주는 내면의 힘이지.

AI 모델에 생각할 시간 주기

AI 모델에게 짧은 시간이나 적은 단어로 너무 복잡한 작업을 주면, 잘못된 추측을 할 가능성이 높다. 이러한 상황에서는 AI 모델에게 문제를 더 오래 생각하도록, 즉 계산하는 노력을 더 하도록 지시할 수 있다.[10]

  • 단계를 나눠서 요청 : 복잡한 과업의 경우, 세부적으로 필요한 단계를 나누어 정해 알려준다.

첫째, 세 개의 문단으로 구분된 텍스트를 한 문장으로 요약하세요.
둘째, 요약문을 프랑스어로 번역하세요.
셋째, 프랑스어 요약문에 있는 각 이름을 나열하세요.

  • 모델이 스스로 해결책을 찾도록 지시 : 입력된 수학 풀이가 잘 못 되어 있더라도, AI 모델에게 자신만의 풀이를 찾아내고 입력되어 있는 수학 풀이와 비교하도록 할 수 있다.

당신의 임무는 학생의 수학 풀이가 정답인지 확인하는 것입니다.
문제를 해결하기 위해 다음 단계를 수행합니다:
– 먼저 문제에 대한 자신만의 해결책을 찾아냅니다.
– 그런 다음 자신의 솔루션을 학생의 솔루션과 비교합니다.
이 후 학생의 솔루션이 올바른지 평가합니다.
학생의 솔루션이 올바른지 문제를 직접 풀기 전에는 결정하지 마세요.

사용 사례[편집]

정교한 AI 시스템에서는 프롬프트 엔지니어링 기법을 사용하여 학습 언어 모델을 통한 사용자 경험을 개선한다. 다음은 몇 가지 예다.

  • 주제별 전문 지식 : 프롬프트 엔지니어링은 AI가 주제별 전문 지식으로 답해야 하는 애플리케이션에서 중요한 역할을 한다. 현장 경험이 풍부한 프롬프트 엔지니어는 AI가 올바른 출처를 참조하고 질문에 따라 적절하게 답변을 구성하도록 유도할 수 있다. 예를 들어 의료 분야에서 의사는 프롬프트 엔지니어링 언어 모델을 사용하여 복잡한 사례에 대한 감별 진단을 생성할 수 있다. 의료 전문가는 증상과 환자 세부 정보만 입력하면 된다. 그러면 애플리케이션이 엔지니어링된 프롬프트를 사용하여 AI가 먼저 입력된 증상과 관련된 가능한 질병을 나열하도록 유도한다. 그런 다음 추가 환자 정보를 기반으로 목록 범위를 좁힌다.
  • 비판적 사고 : 비판적 사고 애플리케이션에는 복잡한 문제를 해결하기 위한 언어 모델이 필요하다. 이를 위해 모델은 정보를 다각적으로 분석하고 신뢰도를 평가하며 합리적인 결정을 내린다. 프롬프트 엔지니어링은 모델의 데이터 분석 기능을 개선한다. 예를 들어 의사 결정 시나리오에서 가능한 모든 옵션을 나열하고, 각 옵션을 평가하고, 최상의 솔루션을 추천하도록 모델에 지시할 수 있다.
  • 창의성 : 창의성에는 새로운 아이디어, 개념 또는 솔루션을 생성하는 것이 포함된다. 다양한 시나리오에서 모델의 창의적 능력을 높이는 데 프롬프트 엔지니어링을 활용할 수 있다. 예를 들어 시나리오를 작성할 때 작가는 프롬프트 엔지니어링 모델을 사용하여 스토리에 대한 아이디어를 생성할 수 있다. 작가는 모델에 가능한 등장 인물, 배경 및 줄거리를 나열하도록 지시한 다음 이러한 요소를 사용하여 스토리를 전개할 수 있다. 또는 그래픽 디자이너가 특정 감정을 불러일으키는 색상 팔레트 목록을 생성하도록 모델에 지시한 다음, 해당 팔레트를 사용하여 디자인을 만들 수도 있다.[1]

분야[편집]

  • 챗봇 : 프롬프트 엔지니어링은 AI 챗봇이 실시간 대화에서 상황에 맞는 관련성 있고 일관된 응답을 생성하는 데 도움이 되는 강력한 도구다. 챗봇 개발자는 효과적인 프롬프트를 만들어 AI가 사용자 쿼리를 이해하고 의미 있는 답변을 제공하도록 할 수 있다.
  • 의료 : 의료 분야에서 프롬프트 엔지니어는 AI 시스템에 의료 데이터를 요약하고 치료 권장 사항을 개발하도록 지시한다. 효과적인 프롬프트는 AI 모델이 환자 데이터를 처리하고 정확한 인사이트와 권장 사항을 제공하는 데 도움이 된다.
  • 소프트웨어 개발 : 프롬프트 엔지니어링은 AI 모델을 사용하여 코드 스니펫을 생성하거나 프로그래밍 문제에 대한 솔루션을 제공함으로써 소프트웨어 개발에서 중요한 역할을 한다. 소프트웨어 개발에 프롬프트 엔지니어링을 사용하면 시간을 절약하고 개발자의 코딩 작업을 지원할 수 있다.
  • 소프트웨어 엔지니어링 : 생성형 AI 시스템은 다양한 프로그래밍 언어로 학습되기 때문에 프롬프트 엔지니어는 코드 스니펫 생성을 간소화하고 복잡한 작업을 단순화할 수 있다. 개발자는 특정 프롬프트를 작성하여 코딩을 자동화하고, 오류를 디버깅하고, API 통합을 설계하여 수작업을 줄이고, API 기반 워크플로를 생성하여 데이터 파이프라인을 관리하고 리소스 할당을 최적화할 수 있다.
  • 사이버 보안 및 컴퓨터 과학 : 프롬프트 엔지니어링은 보안 메커니즘을 개발하고 테스트하는 데 사용된다. 연구자와 실무자는 생성형 AI를 활용하여 사이버 공격을 시뮬레이션하고 더 나은 방어 전략을 설계할 수 있다. 또한 AI 모델을 위한 프롬프트를 작성하면 소프트웨어의 취약점을 발견하는 데 도움이 될 수 있다.[3]

모범 사례[편집]

프롬프트 엔지니어링을 제대로 수행하려면 상황, 범위 및 예상 응답이 포함된 지침을 제공해야 한다.

  • 모호하지 않은 프롬프트 : 원하는 응답을 프롬프트에 명확하게 정의하여 AI가 잘못 해석하지 않도록 힌다. 예를 들어 참신한 요약을 요청하는 경우 자세한 분석이 아니라 요약을 원한다는 점을 분명히 밝힌다. 그러면 AI가 그 요청에만 집중하고 목표에 맞는 응답을 제공할 수 있다.
  • 프롬프트 내의 적절한 컨텍스트 : 프롬프트 내에서 적절한 컨텍스트를 제공하고 프롬프트 입력에 출력 요구 사항을 포함하여 특정 형식으로 제한한다. 예를 들어 1990년대 가장 인기 있는 영화 목록을 표 형식으로 원한다고 가정해 보면, 정확한 결과를 얻으려면 목록에 올릴 영화 수를 명시하고 표 형식을 지정해야 한다.
  • 대상 정보와 원하는 출력 간의 균형 : 프롬프트에서 단순성과 복잡성의 균형을 유지하여 모호하거나 관련이 없거나 예상치 못한 답변을 피한다. 너무 단순한 프롬프트는 컨텍스트가 부족할 수 있고, 너무 복잡한 프롬프트는 AI를 혼란스럽게 할 수 있다. 이는 AI가 아직 익숙하지 않을 수 있는 복잡한 주제나 분야별 용어에 있어서 특히 중요하다. 따라서 간단한 언어를 사용하고 프롬프트 크기를 줄여 질문을 더 이해하기 쉽게 만들어야 한다.
  • 프롬프트 실험 및 개선 : 프롬프트 엔지니어링은 반복적인 프로세스다. 다양한 아이디어를 실험하고 AI 프롬프트를 테스트하여 결과를 확인하는 것이 중요하다. 정확성과 연관성을 높이기 위해 최적화를 여러 번 시도해야 할 수 있다. 지속적인 테스트와 반복은 프롬프트 크기를 줄이고 모델이 더 나은 결과를 생성하도록 하는 데 도움이 된다. AI가 정보를 출력하는 방식에는 정해진 규칙이 없으므로 유연성과 적응성이 필수적이다.[1]

문제점[편집]

  • 데이터 편향 : AI 모델은 학습 데이터에 기반하여 학습하므로, 프롬프트에 대한 응답 역시 학습 데이터의 품질과 편견이 반영된다. 이 경우 AI 모델은 의도치 않게 이러한 편향을 지속 및 확대할 수 있다. 예를 들어, 특정 인종에 대해 편향된 데이터로 학습한 인공지능 모델은 편향된 응답을 생성할 수 있다. 따라서 윤리적 고려 사항을 염두에 두고 학습 데이터를 준비하는 것이 중요하다.
  • 과적합(Overfitting) : 프롬프트를 지나치게 구체적이거나 특정한 방식으로 최적화하면, 모델이 과적합될 위험이 있으며 AI 모델이 학습 데이터와 너무 밀접하게 일치하게 된다. 이는 모델이 새로운 상황이나 다양한 입력을 마주했을 때 유연하게 대응하지 못하거나 부정확한 출력을 초래할 수 있다.
  • 모델의 한계 : 프롬프트 엔지니어링은 AI 모델의 성능에 의존한다. 모델 자체에 한계가 있다면 아무리 잘 설계된 프롬프트라도 정확한 결과를 보장할 수 없고 모델이 훈련된 데이터에 따라 성능이 좌우된다. 예를 들어, 특정 주제에 대한 데이터가 부족한 상태로 학습된 AI 모델은 해당 주제에 대한 프롬프트의 응답이 부정확할 수 있다. 또한 AI 모델은 인간의 방식으로 언어를 이해할 수 없기 때문에 사용자의 의도를 파악하는 데 한계가 있을 수 있다. 동일한 프롬프트에 대해서는 사용자에 따라 의도가 다를 수 있으며 인공지능이 이를 완벽하게 이해하는 것은 쉽지 않다.[6]

전망[편집]

프롬프트 엔지니어링이 떠오르면서 ‘프롬프트 엔지니어’라는 새로운 직업도 생겨났으며, 그 수요가 급증하고 있다. 일례로 오픈AI의 개발자들이 설립한 AI 스타트업 안트로픽(Anthropic)은 올해 초 28~37만 달러의 높은 연봉을 제시하면서 프롬프트 엔지니어 채용 공고를 냈다. 인사이더(Insider)에 의하면 온라인 뉴스 미디어 보딩에어리어(BoardingArea)도 콘텐츠 최적화용 프롬프트를 구축하기 위한 시간제 챗GPT 전문가를 채용한다고 밝혔으며, 프리랜서 플랫폼 업워크(Upwork)는 웹사이트 콘텐츠 제작을 위해 시간당 최대 40달러에 프롬프트 엔지니어를 고용했다. AI 기반 계약 검토 업체 클라리티(Klarity)도 23만 달러 연봉에 대규모 언어 모델을 미세 조정할 프롬프트 엔지니어를 찾았다.

국내에서도 지난 3월 AI 스타트업 뤼튼테크놀로지스가 최대 1억 원의 연봉을 내걸고 프롬프트 엔지니어를 공개 채용한 바 있다. 회사에 따르면 프롬프트 엔지니어는 1) 뤼튼 서비스에 사용되는 다양한 목적의 프롬프트 제공, 테스트, 문서화 2) 다양한 생성형 AI 모델을 프롬프트 관점에서 분석 및 정리 3) 프롬프트 모범 사례 구축 등의 업무를 하게 된다.

이렇게 프롬프트 엔지니어 수요가 증가하면서 자신만의 프롬프트를 무료로 공유하거나 사고파는 마켓플레이스의 수와 규모도 증가하는 추세다. 대표적인 마켓플레이스가 바로 프롬프트베이스(PromptBase)다. 프롬프트베이스는 달리(DALL-E), 챗GPT(ChatGPT), 스테이블 디퓨전(Stable Diffustion), 미드저니(Midjourney) 등의 프롬프트를 사고파는 곳이다. 1.99달러에서 9.99달러 사이의 가격으로 프롬프트를 올리거나 구매할 수 있으며, 판매 수익의 20%가 프롬프트베이스의 수수료로 부과된다.

AI 생성 예술 작품을 전문으로 공유하는 무료 플랫폼도 있다. AI 생성 이미지의 핀터레스트라고 보면 된다. 프롬프트히어로(PromptHero)와 아트허브닷에이아이(Arthub.ai)는 AI 생성 이미지나 AI 생성 이미지의 프롬프트를 검색할 수 있는 사이트다. 무료로 이용할 수 있다. 이밖에 프롬프트씨(PromptSea)는 블록체인 기반의 프롬프트 마켓플레이스다. 이미지는 프롬프트와 함께 NFT로 토큰화되며, 프롬프트는 암호화돼 NFT 소유자에게만 공개된다. 플로우GPT(FlowGPT)와 프롬프트플랫(Promptflat)은 챗GPT 명령 전용 프롬프트 마켓플레이스다.

이처럼 많은 기업에서 프롬프트 엔지니어를 채용하고 있고, 관련 마켓플레이스가 성장 중이지만, 일부 업계 전문가들은 프롬프트 엔지니어링의 필요성 자체에 의문을 제기하기도 한다. 워싱턴 포스트에 따르면, 워싱턴 대학의 언어학과 셰인 스타이너트-트렐켈드 교수는 프롬프트 엔지니어가 AI 모델의 출력을 예측할 수 없다면서, "동일한 프롬프트가 수십 개의 서로 다른 답을 생성할 수 있다. 프롬프트 엔지니어링은 과학이 아니다. 곰을 여러 방법으로 찔러보고 어떻게 포효하는지 보는 것일 뿐이다"라고 지적했다. 와튼 스쿨의 에단 몰릭 교수는 프롬프트 엔지니어라는 역할이 곧 사라질 유행이라고 언급했다. 몰릭은 트위터를 통해 "프롬프트 엔지니어는 미래의 직업이 아니다"라면서, "AI는 점점 더 쉬워지고 있다. 미드저니 버전 3에서 복잡했던 기본 프롬프트가 버전 4에서 얼마나 쉬워졌는지만 봐도 알 수 있다"라고 전했다. 아울러 파이낸셜 타임스는 프롬프트 엔지니어가 AI에 의해 생겨나고, AI에 의해 없어질 최초의 직업이 될 수 있다고 평가하기도 했다.

프롬프트 엔지니어링은 비교적 새로운 분야다. 앞으로 지속 가능할지, 반짝 유행에 그치고 말지 판단하기에는 아직 섣부르다. 다만 중요한 건 AI를 다루는 방법을 배워야 한다는 것이고, 프롬프트 엔지니어링은 필요한 스킬이라는 점이다. AI가 모두의 일상에 기반 기술로 자리 잡고 있기 때문이다.

사람들은 이제 더 이상 날씨나 물어보고 음악이나 재생해 주는 장난감 같은 AI를 경험하지 않는다. AI는 갑자기 진지해졌다. 사람들은 이제 어떤 식으로든 AI를 다루게 될 것이다. 따라서 AI를 잘 알아야 한다. 그리고 최소한 지금까지 AI는 입력을 통해 만들어졌다. 올바른 프롬프트를 확보하는 것은 앞으로 중요한 문화적 기술적 과제가 될 것이다.

프롬프트 엔지니어[편집]

프롬프트 엔지니어는 ‘AI 모델에 효과적인 입력문(프롬프트)을 작성하는 방법을 연구함으로써, 최적의 결과를 도출하고 일관성 있게 제어를 이루어 내는 직업’이라고 풀이할 수 있다. AI를 원하는 입맛에 맞게 지시하고 훈련시킨다는 점에서 ‘AI 조련사(AI Whisperer)’라고도 불리기도 한다.[11] 프롬프트 엔지니어의 주요 역할은 다음과 같다.

  • 프롬프트 설계 및 개발(프롬프트 엔지니어링): 인공지능 모델이 이해하고 반응할 수 있는 효과적인 프롬프트를 개발하고 최적화한다.
  • 시스템 통합: 자연어 처리(NLP) 알고리즘과 기존 시스템 및 인터페이스와의 통합을 관리한다.
  • 테스트 및 평가: 프롬프트의 성능을 평가하고 개선하며, 사용자 경험 및 비즈니스 요구 사항을 충족시키는지 확인한다.
  • 보안 프롬프트 설계: 별다른 보안조치를 하지 않는다면 프롬프트 인젝션이나 리킹과 같은 문제가 발생할 수 있으므로, 프롬프트 보안에 대한 대비가 필요하다.

새롭게 등장한 직업군이기 때문에 명확한 체계나 공인된 형태의 자격이 존재하지 않는다. 하지만 다양한 노하우 습득과 프롬프트 개발을 통해 실무에 활용할 수 있는 능력을 갖추는 것이 중요하다. 사용자의 요구와 의도를 정확하게 파악하고, 그에 맞는 응답을 생성하는 기술을 익혀야 한다. 대개 다음과 같은 역량과 스킬이 요구된다.

  • 글쓰기 실력 : 기능을 분석하고 이를 문자로 구현하는 과정에서 프롬프트 텍스트를 간결하고 명확하게 구성할 수 있는 글쓰기 실력이 필요하다.
  • 커뮤니케이션 능력 : 프롬프트 엔지니어의 특성상 서비스에 대한 이해가 폭 넓게 요구된다. 따라서 개발자 뿐만 아니라 기획직과 영업직 등 다른 직군과도 원활한 커뮤니케이션을 할 수 있어야 한다.
  • AI 언어 모델 구조에 대한 이해: 인공지능과 생성형 AI, LLM의 작동원리와 모델 별 특징을 이해하고 사용할 수 있어야 한다.
  • 창의성 : 현실세계에서 고객이 필요한 기능과 사고를 어떻게 LLM과 생성형 모델의 추론과 결과물로 해결할 지에 대한 고민과 전략의 혁신이 필요하다.
  • 기술에 대한 이해 : 프롬프트를 활용하는 서비스는 어떻게 설계하고 구현할 지에 대한 역량과, 이를 최적화하고 편리하게 진행하기 위한 역량이 필요하다.

최근에 프롬프트 엔지니어는 단순히 프롬프트만 작성하는 것에서 벗어나 개발 영역에서 더욱 많은 일들을 하고있다. 사내에서 테스팅 자동화를 위해 어플리케이션이나 인터페이스를 직접 만들기도 하며 여기에 사용되는 프롬프트와 프레임워크를 만들기도 한다.[1] 또한 회사의 데이터를 기반으로 사용자의 질의에 가장 근접하고 필요한 데이터를 찾아서 답변을 형성하는 RAG(retrieval augmented generation, 검색 증강 생성)이 중요하게 다루어지고 있어서 이를 구현하는 데에도 Milvus나 Faiss와 같은 Vector Database의 활용과 이해가 함께 중요해지고 있다. 특히 이를 잘 활용하고 구현하기 위해서 기본적인 데이터베이스 활용과 더불어 선형대수와 유사도, 검색 이론 등을 이해하고, 어떤 상황에서 특화된 데이터 구조와 데이터베이스를 활용할 지 결정하는 개발자적인 사고도 필요하다.

프롬프트는 텍스트로 이루어져 있기 때문에 글쓰기 역량이 좋을 수록 더 좋다. 생성형 AI가 이해할 수 있는 문체의 구체적이고 간결한 글을 잘 작성할 수록 균일한 아웃풋이 나올 확률이 높아진다. 또한 명확한 작문실력과 더불어 커뮤니케이션에 대한 이해가 깊을 수록 더욱 명확하고 창의적인 구현이 가능하다. 또한 새로이 생겨난 분야이다보니 많은 전략이 개발되지 않은 상황인데, 언어활용에 능숙하고 간학문적 사고에 익숙한 문과적 인재에게 상당부분 유리하다. 다른 예시지만, 생성형 AI 중 미드저니와 같은 이미지 생성 AI의 경우, 화풍이나 영상 및 미술 용어에 대한 정확한 이해가 있어야 원하는 대로 아웃풋을 만들고 생성할 수 있다. 하지만, 프롬프트 엔지니어는 기본적으로 '엔지니어'라는 명칭이 붙기에, 공학에 대한 이해도 필수적이라고 여겨진다. 보통 프롬프트 엔지니어링으로 채용되면 근무하는 직무도 개발팀원 소속이고, AI팀에 소속되어 일하는 경우도 생긴다. 좋은 프롬프트 엔지니어링은 LLM의 원리와 구현을 이해하고 사용하는 것이기에 LLM을 이해하는 것도 엔지니어링 지식을 상당부분 요구한다. 한마디로 문이과의 융합적인 역량이 필요한 것이다.[12]

각주[편집]

  1. 1.0 1.1 1.2 1.3 프롬프트 엔지니어링이란 무엇인가요?〉, 《AWS》
  2. AI 프롬프트와 프롬프트 엔지니어링 | 정의와 예시〉, 《코드블로그》, 2023-05-24
  3. 3.0 3.1 3.2 프롬프트 엔지니어링이란 무엇인가요?〉, 《IBM》
  4. <지식 사전> 프롬프트 엔지니어링이란 ① - Chat-GPT(LLM)를 스마트하게 활용하는 방법〉, 《카카오클라우드블로그》, 2024-06-25
  5. 5.0 5.1 5.2 <지식 사전> 프롬프트 엔지니어링이란 ② - 기초 기법 (제로샷, 퓨샷, 체이닝)〉, 《카카오클라우드블로그》, 2024-06-25
  6. 6.0 6.1 6.2 6.3 프롬프트 엔지니어링(Prompt Engineering)이란?〉, 《아펜》, 2024-02-19
  7. 7.0 7.1 7.2 <지식 사전> 프롬프트 엔지니어링이란 ③ - 고급 기법 (CoT, ToT, ReAct)〉, 《카카오클라우드블로그》, 2024-06-25
  8. 8.0 8.1 <지식 사전> 프롬프트 엔지니어링이란 ④ - 고급 기법 (Multi-modal CoT, Graph 프롬프팅)〉, 《카카오클라우드블로그》, 2024-06-24
  9. 9.0 9.1 프롬프트 엔지니어링 ( Prompt Engineering )〉, 《두산백과》
  10. 10.0 10.1 장혜정, 〈프롬프트 엔지니어링 방법 예시 꿀팁 대방출 (feat. 앤드류 응)〉, 《모두의연구소》, 2023-09-17
  11. 서승완 유메타랩 대표, 〈AI의 조련사, 프롬프트 엔지니어가 뭐기에?〉, 《제일기획 매거진》, 2024-01-29
  12. 프롬프트 엔지니어링〉, 《나무위키》

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 프롬프트 엔지니어링 문서는 인공지능 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.