의견.png 의견.png

"프롬프트 엔지니어링"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(새 문서: '''프롬프트 엔지니어링'''은 거대언어모델(LLM)의 입력인 프롬프트를 효과적으로 작성하고 최적화하는 과정을 의미한다. 이는 인공지...)
 
잔글 (같이 보기)
 
(다른 사용자 한 명의 중간 판 하나는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''프롬프트 엔지니어링'''은 [[거대언어모델]](LLM)의 입력인 프롬프트를 효과적으로 작성하고 최적화하는 과정을 의미한다. 이는 [[인공지능]], 특히 [[자연어 처리]] 분야에서 중요한 개념으로 자리 잡았다. 거대언어모델이 다양한 분야에서 중요한 역할을 맡으면서, 적절한 프롬프트 구성의 필요성이 크게 대두되었다.
+
'''프롬프트 엔지니어링'''(prompt engineering)은 [[거대언어모델]](LLM)의 입력인 프롬프트를 효과적으로 작성하고 최적화하는 과정을 의미한다. 이는 [[인공지능]], 특히 [[자연어 처리]] 분야에서 중요한 개념으로 자리 잡았다. 거대언어모델이 다양한 분야에서 중요한 역할을 맡으면서, 적절한 프롬프트 구성의 필요성이 크게 대두되었다.
  
 
거대언어모델은 자연어의 의미를 이해하고 대응하는 응답을 생성하지만, 그 방식은 인간과는 다르게 구성되어 있다. 이러한 특성을 고려하여, 모델에 적합한 [[프롬프트]]를 설계하는 것이 필요하다. 프롬프트 엔지니어링은 모델의 매개변수를 수정하는 [[파인튜닝]](Fine-tuning)과 달리, 입력되는 프롬프트 자체를 수정하는 데에 집중한다.
 
거대언어모델은 자연어의 의미를 이해하고 대응하는 응답을 생성하지만, 그 방식은 인간과는 다르게 구성되어 있다. 이러한 특성을 고려하여, 모델에 적합한 [[프롬프트]]를 설계하는 것이 필요하다. 프롬프트 엔지니어링은 모델의 매개변수를 수정하는 [[파인튜닝]](Fine-tuning)과 달리, 입력되는 프롬프트 자체를 수정하는 데에 집중한다.
241번째 줄: 241번째 줄:
 
== 같이 보기 ==
 
== 같이 보기 ==
 
* [[프롬프트]]
 
* [[프롬프트]]
 +
* [[엔지니어링]]
 
* [[LMM]]
 
* [[LMM]]
 
* [[인공지능]]
 
* [[인공지능]]

2024년 9월 20일 (금) 06:08 기준 최신판

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

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

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

상세[편집]

프롬프트 엔지니어링은 대규모 언어 모델(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 시스템에서 원하는 결과를 얻을 때까지 프롬프트를 지속적으로 조정한다.[1]

중요성 및 이점[편집]

프롬프트 엔지니어링의 중요성은 생성형 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][2]

작동법[편집]

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

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

기법[편집]

제로샷 프롬프팅[편집]

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

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

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

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

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

퓨샷 프롬프팅[편집]

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

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

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

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

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

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

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

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

하지만 퓨샷 프롬프팅은 다중 추론을 요구하는 작업, 특히 산술 및 논리 추론과 같은 복잡한 문제에서는 한계가 있을 수 있다. 이를 해결하기 위해 등장한 기법이 사고의 사슬 프롬프팅(Chain of Thoughts Prompting)이다. 이 기법은 중간 추론 단계를 추가하여 AI 모델이 복잡한 문제를 단계적으로 해결하도록 한다. 예를 들어, 산술 문제를 푸는 과정에서 AI가 중간 계산 단계를 일련의 과정으로 설명하고, 그 과정을 학습함으로써 더 나은 결과를 도출할 수 있다. 사고의 사슬 프롬프팅은 특히 복잡한 추론 작업에서 뛰어난 성능을 발휘하지만, 이 방식은 수동으로 추론 프로세스를 구성해야 하므로 많은 시간과 노력이 필요하다.

이러한 프롬프트 엔지니어링 기법은 AI 모델의 성능을 높이는 데 중요한 역할을 하며, AI와의 상호작용에서 보다 정확하고 기대에 부합하는 결과를 이끌어내는 데 도움을 준다. 더 나아가, 프롬프트 인젝션과 같은 악용 가능성도 존재하여, 이러한 문제를 해결하는 연구 또한 중요한 과제가 되고 있다.[3]

프롬프트 체이닝[편집]

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

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

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

비교[편집]

사고의 사슬 프롬프팅(Chain of Thought Prompting)과 프롬프트 체이닝(Prompt Chaining)은 비슷하게 보일 수 있지만, 서로 다른 기법이다. 사고의 사슬 프롬프팅은 복잡한 문제를 해결하기 위해 중간 추론 단계를 명시적으로 도입하는 기법이다. 이 방법은 AI 모델이 문제 해결 과정을 단계별로 설명하거나 생각의 흐름을 따라가도록 하여 논리적이고 체계적인 추론을 가능하게 한다. 예를 들어, 산수 문제를 풀 때 각 계산 과정을 설명하게 하여 모델이 최종 답을 도출하도록 돕는 방식이다. 이 기법은 특히 복잡한 추론이나 논리적 문제에서 성능을 높이는 데 효과적이다.

반면, 프롬프트 체이닝은 여러 프롬프트를 연속적으로 연결해 복잡한 작업을 단계별로 수행하는 기법이다. 한 프롬프트의 결과를 다음 프롬프트로 넘겨주면서 여러 단계를 거쳐 최종 결과를 얻는 방식이다. 예를 들어, 첫 번째 프롬프트가 데이터를 추출하면, 두 번째 프롬프트가 그 데이터를 요약하고, 마지막 프롬프트가 요약을 분석하는 식으로 이어진다. 이 기법은 하나의 작업을 여러 단계로 나눠 처리하며, 각 단계마다 결과를 개선하는 방식으로 AI 작업의 정확도를 높이는 데 사용된다. 결론적으로, 사고의 사슬 프롬프팅은 AI 모델이 논리적 추론 과정을 명시적으로 수행하게 만드는 기법인 반면, 프롬프트 체이닝은 여러 프롬프트를 순차적으로 연결해 복잡한 작업을 분할 처리하는 방식이다. 두 기법은 비슷한 맥락에서 사용되지만, 각각의 목적과 사용 방식에는 차이가 있다.

가이드라인[편집]

명확하고 구체적인 지시 작성[편집]

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

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

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

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

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

AI 모델에 생각할 시간 주기[편집]

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

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

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

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

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

사용 사례[편집]

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

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

분야[편집]

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

모범 사례[편집]

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

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

문제점[편집]

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

전망[편집]

프롬프트 엔지니어링이 떠오르면서 ‘프롬프트 엔지니어’라는 새로운 직업도 생겨났으며, 그 수요가 급증하고 있다. 일례로 오픈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는 입력을 통해 만들어졌다. 올바른 프롬프트를 확보하는 것은 앞으로 중요한 문화적 기술적 과제가 될 것이다.

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

프롬프트 엔지니어는 전문적으로 프롬프트 엔지니어링을 연구하고 수행하는 직업을 의미한다. 프롬프트 엔지니어의 주요 역할은 다음과 같다.

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

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

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

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

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

각주[편집]

참고자료[편집]

같이 보기[편집]


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