나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-09-28 12:31:53

프롬프트 엔지니어링

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


1. 개요2. 프롬프트 엔지니어링의 종류
2.1. Text to Text2.2. Text to Image
3. 프롬프트 엔지니어링의 필요성4. 프롬프트 엔지니어
4.1. 주요 역할4.2. 프롬프트 엔지니어에게 필요한 역량4.3. 프롬프트 엔지니어와 개발자의 관계4.4. 문과에게 유리?
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. 프롬프트 엔지니어링의 필요성

프롬프트 엔지니어링이 필요한 이유는 다양한 영역에서 ChatGPT와 같은 생성형 AI를 도입하고 있기 때문이다. 다양한 생성형 모델이 나오고 있는 상황에서 모델 별 특징과 특화 전략을 익혀서, 고객의 요구조건에 알맞은 출력을 지속적이면서도 꾸준하게 전달해 줄 수 있는 프롬프트를 빠르게 작성할 수 있는 것은 서비스 아이디어를 검증하고 실현하는 데에 있어서 중요한 요소 중 하나이다.

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

물론 생성형 인공지능의 특성 상 아무리 좋은 명령을 만든다 한들 원하는 결과나 이상적인 결과를 단번에 얻기란 쉽지 않다. 따라서 프롬프트 엔지니어링은 시간과 비용을 줄이기 위해 존재하는 것이지 생성형 인공지능을 통해 모든 솔루션을 해결해주는 데우스 엑스 마키나라는 비약적인 사고는 경계해야 한다.

4. 프롬프트 엔지니어

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

4.1. 주요 역할

프롬프트 엔지니어의 주요 역할은 다음과 같다.

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

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

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

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

4.4. 문과에게 유리?

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

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

5. 관련 항목



[1] 예컨대 테스트를 UI 위에서 한다고 python의 gradio를 쓰는 건 문제가 없지만, 실제 서비스를 한답시고 그것을 통째로 내놓으면 그 누구도 사용하지 않을 것이다. 대개의 서비스는 네트워크에서 이루어지기에 백엔드 및 네트워크 지식은 당연히 기본이다.[2] LLM기반 기능이나 챗봇의 테스트를 손으로 일일히 쳐가면서 하는 것은 생각보다 끔찍한 작업이다. 그리고 그런 테스트를 거치지 않고 바로 실서비스로 직행했다가는...[3] 사실 문과면서 LLM과 생성모델을 연구하고 개발하는 것 자체가 특이한 상황이긴 하다.