[이론] 프롬프트 엔지니어링이란?

조민수·2024년 9월 11일
0

개발 이론

목록 보기
8/8

들어가기에 앞서

ChatGPT, Gemini와 같은 생성형, 대화형 AI가 대두되면서 단순히 대화를 주고받으며 정보를 얻는 것을 넘어
어떻게 해야 이를 잘 활용할 지에 대해 큰 관심이 쏠리고 있다.
대표적으로 파인 튜닝, 프롬프트 엔지니어링, RAG 등의 기술이 각광받고 있는데
그 중 나도 직접 경험해 본 프롬프트 엔지니어링에 대해 먼저 얘기해볼까 한다.


프롬프트란?

  • 사전적 정의 : 누군가의 특정한 작업 수행을 도우려 전달하는 메시지
  • 특정 작업을 수행하도록 생성형 AI에 요청하는 자연어 텍스트

프롬프트가 중요한 이유는 모든 유형의 입력이 유용한 출력을 생성하는 것은 아니기 때문이다.
생성형 AI가 정확한 응답을 생성하기 위해선 컨텍스트와 세부 정보가 필요하기 때문.
따라서, 체계적인 프롬프트 설계는 보다 유의미한 결과를 위한 초석이라고 생각하면 된다.

DAIR.AI에서 제공하는 프롬프트 엔지니어링 가이드에 따르면,
프롬프트의 구성 요소는 다음과 같다.
1. 명령(Instruction) : 모델이 수행하길 원하는 특정 작업 또는 지침
2. 컨텍스트(Context) : 모델을 조정할 수 있는 외부 정보 또는 추가 맥락
3. 입력 데이터(Input Data) : 답변을 찾고자 하는 입력 또는 질문
4. 출력 데이터(Output Data) : 출력의 유형 또는 형식

프롬프트 엔지니어링이란?

  • AWS에선 프롬프트 엔지니어링을 '생성형 AI에게 솔루션을 안내해 원하는 결과를 생성하는 프로세스' 라고 정의하고 있다.
  • 삼성SDS에 따르면, 원하는 결괏값에 최대한 가까워지도록 입력을 계속해서 다듬는 과정을 일컫는다.
  • 요약하자면, 프롬프트의 구성을 만들어가는 일련의 과정을 프롬프트 엔지니어링이라 칭할 수 있다.

프롬프트 엔지니어링의 중요성, 이점

결과적으로, 사용자와 생성형 AI(LLM) 간의 격차를 해소함에 있다.
AI 애플리케이션의 효율성, 효과를 높이고 원하는 최상의 결과를 얻을 수 있기 때문이다.
이러한 과정에서 핵심은 자연어를 통해 AI 모델의 성능을 최대한 끌어올리고, 원하는 결과를 도출해내는 프롬프트를 구성하는 것이다.

그렇다면 프롬프트 엔지니어링은 어떤 이점이 있을까?

  1. 개발자의 제어 능력 강화
  • 개발자는 이를 통해 AI의 출력을 세분화하고 간결한 형식 표현 등이 가능해진다.
  • 또한 사용자의 AI 오용을 방지하고, 알지 못하거나 불명확한 처리에 대한 요청을 막는다.
  1. 개선된 사용자 경험
  • 시행착오를 피할 수 있다. 원하는 답을 얻기 위한 시간적 노력을 최소화 시키고,
    최소한의 입력으로 사용자의 의도를 파악할 수 있게 한다.
  1. 유연성 향상
  • 기업에선 프롬프트 재사용을 통해 생성형 AI를 유연하게 사용하고, 특정 작업에 특화된 모델을 사용할 수 있다.

가이드라인

일반적으로 프롬프트 엔지니어링은 제로샷(zero-shot), 퓨샷(few-shot)의 두가지 기법으로 나뉜다.

  • 제로샷
    예시를 제공하지 않고, 간단한 명령어 입력을 통해 예상되는 결과를 생성하는 방식.
    특정 작업과 관련된 데이터 사용없이 LLM을 학습시키는 것이 목적

    ex) 다음의 기사를 3줄의 문장으로 요약하라

  • 퓨샷
    원하는 결과를 얻기 위해 소량의 샘플 정보, 데이터를 사용해 LLM을 학습시키는 방식.
    3가지 구성요소로 이루어져 있다.

    1. 작업 설명(Task Description) : 모델이 수행할 작업에 관한 간단한 설명
    2. 예시 (Example) : 모델이 수행할 작업을 보여줄 몇가지 예시
    3. 프롬프트 (Prompt) : 새로운 예시의 시작 부분. 모델은 누락된 테스트를 생성해 예시를 완성한다.

대부분 API에선 사용자가 자체적인 프롬프트 엔지니어링 기법을 적용할 수 있다.


악의적 사용

프롬프트 인젝션 이라 불리는 프롬프트 엔지니어링의 악의적 사용은
Bing의 사례(회사 내부 기밀인 코드명(Sydney) 유출)과 같이 점점 심각성이 대두되고 있다.

또한, 기존 설계와 달리 의도치 않는 방식으로 생성형 AI를 사용하는 과정의 방지 방안 역시 중요시되고있다.


전망

뤼른테크놀로지스와 같이 생성형 AI를 메인으로 활용하는 기업들의 등장과, 그에 따른 프롬프트 엔지니어에 대한 수요도 증가하고 있다.
당연히, KT DS등의 기업에서도 생성형 AI를 활용한 서비스 들을 개발하고 있으니 중요성은 점점 더 올라갈 것이라고 전망한다.

또한 GPT4o로 접어들면서, 프롬프트 엔지니어링RAG를 도입한 프롬프트를 공유하는 시장도 더욱 활발해지고 있다.
대표적인 예시로 프롬프트베이스(PromptBase), 프롬프트플랫(Promptflat), 플로우GPT(FlowGPT) 등이 있다.

하지만, 반대로 프롬프트 엔지니어링의 필요성에 의문을 제기하는 사례도 있다.
이 또한 메타버스와 같은 하나의 유행으로 보고, 사라질 시기를 바라보는 관점도 있기 때문이다.
또한 GPT AI의 경우, 3.5에서 4o로 진화하면서 정교한 프롬프트 엔지니어링 없이도 효과적인 결과를 도출하기 때문이다.


마치며...

COCO 프로젝트, EDU:CONNECT 프로젝트내의 GPT API 연동 서비스를 개발하면서
퓨샷(few-shot) 방식의 프롬프트 엔지니어링을 경험하고 도입했었다.
당시, GPT 4가 막 등장한 상태에서 3.5 turbo 모델을 프롬프트 엔지니어링과 함께 API로 사용했었는데, 도입 전/후의 결과값 차이가 유의미한 것을 직접 경험하며 중요성을 인지했다.

비교적 새로운 분야인 생성형 AI의 효율적 활용
단순히 한 직무의 TASK가 아닌, 모든 직무에서 어떻게 잘 활용할 지를 고민하고 시도하는 자세가 필요하다고 생각한다.
국어, 수학과 같이 AI를 다루는 방법에 대해 모두가 배워야 한다고 생각하기 때문이다.

[참고자료]

profile
사람을 좋아하는 Front-End 개발자

0개의 댓글