최근 수정 시각 : 2024-03-14 23:40:15

프롬프트 엔지니어링

파일:관련 문서 아이콘.svg   관련 문서: 소프트웨어 개발
,
,
,
,
,


1. 개요2. 프롬프트 엔지니어링의 종류
2.1. Text to Text2.2. Text to Image
3. 프롬프트 엔지니어
3.1. 주요 역할3.2. 프롬프트 엔지니어에게 필요한 역량3.3. 프롬프트 엔지니어와 개발자의 관계3.4. 문과에게 유리?3.5. 프롬프트 엔지니어의 필요성

[clearfix]

1. 개요

이제 우린 마법사가 될 수 있어요. 그리고 이 주문들을 배우고 있어요. 뉴로맨서가 어떻게 작동하는지는 잘 모르겠지만, 주문서에 추가한 다음 다른 주문과 결합하면 됩니다. 운이 나빠서 주문을 잘못 조합하면 악마가 나타날 수도 있습니다.
프롬프트 엔지니어 사이먼 윌리슨(Simon Wilison), Changelog Interview에서

프롬프트 엔지니어링은 AI가 최적의 결과물을 만들어낼 수 있도록, AI 프롬프트를 작성하고, 이를 기반으로한 개발 방법론을 의미한다. 프롬프트 엔지니어링은 챗GPT와 같은 생성 AI가 확산 됨에 따라 다양한 산업 분야에서 많은 수요를 끌어내고 있으며, 프롬프트 엔지니어링을 전문적으로 하는 직업을 프롬프트 엔지니어라고 부른다.

다양한 기업에서 프롬프트 엔지니어링을 소개하고 있다. openai, 구글

2. 프롬프트 엔지니어링의 종류

2.1. Text to Text

챗GPT와 같은 거대 언어 모델(Large Language Model)에서는 필요한 텍스트를 생성하기 위해 좋은 프롬프트를 작성해줄 필요가 있다. 이는 맥락 내 학습(In-Context Learning)이라는 거대 언어 모델의 특성과 관련이 있는데, 주어진 맥락 속에 존재하는 단어나 상황, 예시가 결과물의 완성에 영향을 미친다는 것이다. 챗GPT를 비롯한 LLM에서는 다양한 프롬프트 엔지니어링 기법들이 사용될 수 있다. 다양한 프롬프트 기법등을 통해 사용자의 특정 요구에 최대한 부합하는 기능을 하고, 동시에 외부의 공격이나 예외 입력에 대해 안정적으로 반응할 수 있도록 하는 것이 Text to Text 프롬프트 엔지니어링의 주된 목표이다.

2.2. Text to Image

미드저니, 스테이블 디퓨전과 같은 그림 생성 AI 서비스 또는 모델에서도 프롬프트는 중요하다. 하지만, 일반적으로는 대규모 언어 모델과 같은 방식으로 문법과 문장 구조를 이해하지는 못하며, 단 건의 키워드를 중심으로 프롬프트를 구성하는 것이 대부분이다. 따라서 미술 화풍이나 구도 등에 관한 전문 지식이 필요한 경우가 많다.

3. 프롬프트 엔지니어

프롬프트 엔지니어는 전문적으로 프롬프트 엔지니어링을 연구하고 수행하는 직업을 의미한다.

3.1. 주요 역할

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

3.2. 프롬프트 엔지니어에게 필요한 역량

새롭게 등장한 직업군이기 때문에 명확한 체계나 공인된 형태의 자격이 존재하지 않는다. 하지만 다양한 노하우 습득과 프롬프트 개발을 통해 실무에 활용할 수 있는 능력을 갖추는 것이 중요하다. 사용자의 요구와 의도를 정확하게 파악하고, 그에 맞는 응답을 생성하는 기술을 익혀야 한다. 대개 다음과 같은 역량과 스킬이 요구된다.
  • 글쓰기 실력 : 기능을 분석하고 이를 문자로 구현하는 과정에서 프롬프트 텍스트를 간결하고 명확하게 구성할 수 있는 글쓰기 실력이 필요하다.
  • 커뮤니케이션 능력 : 프롬프트 엔지니어의 특성상 서비스에 대한 이해가 폭 넓게 요구된다. 따라서 개발자 뿐만 아니라 기획직과 영업직 등 다른 직군과도 원활한 커뮤니케이션을 할 수 있어야 한다.
  • AI 언어 모델 구조에 대한 이해: 인공지능과 생성형 AI, LLM의 작동원리와 모델 별 특징을 이해하고 사용할 수 있어야 한다.
  • 창의성 : 현실세계에서 고객이 필요한 기능과 사고를 어떻게 LLM과 생성형 모델의 추론과 결과물로 해결할 지에 대한 고민과 전략의 혁신이 필요하다.
  • 기술에 대한 이해 : 프롬프트를 활용하는 서비스는 어떻게 설계하고 구현할 지에 대한 역량과, 이를 최적화하고 편리하게 진행하기 위한 개발역량이 필요하다.

3.3. 프롬프트 엔지니어와 개발자의 관계

프롬프트 엔지니어는 작업 특성상 프로그래밍 코드보다 자연어를 다루지만, 엄연히 개발자의 한 부류이다. 최근 생성AI의 발전과 확산에 따라 자체 서비스에 LLM을 도입하려는 시도가 많아지고 있기 때문이다. 생성형 AI를 서비스에 접목하기 위해서는 자체모델을 훈련하고 개발하는 회사이거나 GPT나 Gemini와 같은 상용 모델의 API활용을 하는 회사이기에, 개발친화적이어야 하고 스스로 개발을 할 줄 아는 개발자면 더욱 좋다. 현재에도 대부분의 프롬프트 엔지니어링을 채용하는 회사는 이러한 수요로 인해 개발팀이나 AI팀에 배치하는 경우가 대부분이다.

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

3.4. 문과에게 유리?

프롬프트 엔지니어는 기본적으로 '엔지니어'라는 명칭이 붙기에, 공학에 대한 이해가 필수적이라고 여겨진다. 보통 프롬프트 엔지니어링으로 채용되면 근무하는 직무도 개발팀원 소속이고, AI팀에 소속되어 일하는 경우도 생긴다. 좋은 프롬프트 엔지니어링은 LLM의 원리와 구현을 이해하고 사용하는 것이기에 LLM을 이해하는 것도 엔지니어링 지식을 상당부분[2] 요구한다. 하지만 그렇다고 문과에게 아주 기회가 없는 것은 아닌 직군이다.

프롬프트는 텍스트로 이루어져 있기 때문에 글쓰기 역량이 좋을 수록 더 좋다. 생성형 AI가 이해할 수 있는 문체의 구체적이고 간결한 글을 잘 작성할 수록 균일한 아웃풋이 나올 확률이 높아진다. 또한 명확한 작문실력과 더불어 커뮤니케이션에 대한 이해가 깊을 수록 더욱 명확하고 창의적인 구현이 가능하다. 또한 새로이 생겨난 분야이다보니 많은 전략이 개발되지 않은 상황인데, 언어활용에 능숙하고 간학문적 사고에 익숙한 문과적 인재에게 상당부분 유리하다. 다른 예시지만, 생성형 AI 중 미드저니와 같은 이미지 생성 AI의 경우, 화풍이나 영상 및 미술 용어에 대한 정확한 이해가 있어야 원하는 대로 아웃풋을 만들고 생성할 수 있다.

3.5. 프롬프트 엔지니어의 필요성

프롬프트 엔지니어가 필요한 이유는 다양한 영역에서 챗GPT와 같은 생성형 AI를 도입하고 있기 때문이다. 다양한 생성형 모델이 나오고 있는 상황에서 모델 별 특징과 특화 전략을 익혀서, 고객의 요구조건에 알맞은 출력을 지속적이면서도 꾸준하게 전달해 줄 수 있는 프롬프트를 빠르게 작성할 수 있는 것은 서비스 아이디어를 검증하고 실현하는 데에 있어서 중요한 요소 중 하나이다. 특히나 엔지니어로써 개발 역량 뿐만 아니라 모델에 알맞은 전략을 사용할 수 있는 센스와 요구사항을 글로 풀어낼 수 있는 글쓰기 능력, 영어 작문 실력이 필요하기 때문에 이 모두를 다 갖춘 프롬프트 엔지니어를 구하는 것은 흔하지 않다.

또한, 좋은 프롬프트 엔지니어는 회사가 운영하는 서비스의 최적화도 가능하다. 작게는 불필요한 API 호출 수를 절약하는 것부터 시작해서, 프롬프트의 토큰 최적화를 통해 동일한 출력을 가져오는 프롬프트라도 토큰 수를 절감하기도 한다. 출력이 중요한 상황에서는 기본적인 모델로도 플래그쉽 모델에 버금가는 안정성과 출력물을 뽑아내게도 할 수 있고, 다양한 프롬프트 전략과 서비스 구현을 통해 서비스의 특정한 기능이 고고도의 추론을 가능하게 할 수 있다. 이는 AI 기반 기능을 가진 서비스의 만족도와 운영 효율과도 직결된다.

[1] LLM기반 기능이나 챗봇의 테스트를 손으로 일일히 쳐가면서 하는 것은 생각보다 끔찍한 작업이다. 그리고 그런 테스트를 거치지 않고 바로 실서비스로 직행했다가는...[2] 사실 문과면서 LLM과 생성모델을 연구하고 개발하는 것 자체가 특이한 상황이긴 하다.

분류