본문 바로가기

공부/AI

[Prompt] 프롬프트 엔지니어는 어떤 일을 할까? 나의 업무 소개

 

프롬프트 엔지니어링이란? 프롬프트 엔지니어의 업무

 

📌 개요 

 
나는 현재 LLM 프롬프트 엔지니어로 근무하고 있다. 프롬프트 엔지니어라는 직무가 비교적 최근에 생긴 일이고 아직 많은 기업에서 채용하는 포지션이 아니다보니, 링크드인 메시지나 이메일 등으로 ‘프롬프트 엔지니어는 어떤 일을 하는지’에 대한 질문을 해주시는 분들이 꽤 계셨다. 
그리고 우리 회사에서는 매달 technical review라는 기술 공유 발표를 하는데, 나는 지난 12월에 technical review에서 프롬프트 엔지니어링에 대한 발표를 했었기 때문에 그 때 작성한 자료들을 기반으로 프롬프트 엔지니어의 업무에 대하여 궁금하신 분들에게 답변이 될만한 포스팅을 작성해보고자 한다.
 
 

📌 목차

 
1. 프롬프트 엔지니어링의 이해 : 프롬프트의 정의, 구성 요소, 프롬프트 엔지니어링의 의미 
2. 프롬프트 엔지니어의 업무1 : 프롬프트 설계 및 개발, 문서화
3. 프롬프트 엔지니어의 업무2 :  PoC 및 데모 시나리오 준비  
4. 프롬프트 엔지니어의 업무3 : 사용자 경험 디자인 (문서서식 템플릿 및 교정기능 프롬프트 엔지니어링) 
5. 프롬프트 엔지니어의 업무4 : 프롬프트 테스트 및 평가
 
 

📌 프롬프트 엔지니어링의 이해

 
프롬프트의 정의
프롬프트란, 인공지능 모델과의 상호 작용을 위한 입력 문장이다. 효과적인 프롬프트는 명확한 컨텍스트와 구체성을 기반으로 모델에게 원하는 결과물을 생성하도록 유도하여 생성된 콘텐츠가 의도한 목적에 부합하는데에 중요한 역할을 한다.

프롬프트의 구성 요소
1. input (입력) : 모델에게 응답을 요구하는 것으로, 모델이 답변해야 할 질문, 모델이 수행할 태스크, 모델이 작업을 수행할 대상 등을 포함한다.
2. context (문맥) : 추가 정보를 제공하거나 모델 동작 방법 등을 지정한다.
3. examples (예시) : 프롬프트에 예제를 포함하면 모델이 응답 방법에 대한 패턴과 관계를 식별하고 이를 응답 구성에 적용한다. 예제가 없는 프롬프트를 zero-shot 프롬프트, 예제가 적은 프롬프트를 few-shot 프롬프트라고 한다.

c.f. 프롬프트의 구성요소는 입력, 문맥, 예시가 있는데, 사실 이런 구성요소가 반드시 필요한 건 아니고 명확히 정해진 것도 아니지만 프롬프트를 구조적으로 작성하기 위해 임의로 이렇게 구분되는 편이다.
레퍼런스 : https://www.promptingguide.ai/kr
https://cloud.google.com/vertex-ai/docs/generative-ai/learn/introduction-prompt-design?hl=ko 
 
사실 설명만 들으면 잘 와닿지 않기 때문에 예제와 함께 구성요소를 설명하고자 한다.

이 예시를 보면 입력은 모델에게 응답을 요구하는 것으로, 모델이 답변해야 할 질문, 모델이 수행할 태스크, 모델이 작업을 수행할 대상 등을 포함한다. ‘이메일의 내용이 광고인지 아닌지를 분류해주세요’, 이 부분은 모델이 수행해야 할 ‘태스크’를 명시하고 있고 ‘안녕하세요! 매뉴얼 FAQ 질문에 답변 작업 부탁드립니다’ 이 부분은 모델이 광고인지 아닌지 ‘분류할 대상’을 명시하고 있다. 이 부분들은 모델에게 응답을 요구하고 있고 필수적인 입력 부분이라고 할 수 있다.
문맥은 추가 정보를 제공하거나 모델 동작 방법 등을 지정한 것이다. 예를 들어 이메일의 내용이 광고인지 아닌지 분류할 때 이메일의 어조, 내용, 특정 키워드를 고려해달라는 추가 설명을 통해 문맥 정보를 추가해줄 수 있다. 이러한 문맥 정보는 반드시 필요한 건 아니고 모델이 좀 더 태스크를 잘 수행하기 위해 알아두면 좋을 사항 등을 보충적으로 설명하는 것이기에 상황에 따라 추가를 할지, 그리고 얼마나 구체적으로 추가할지 등을 결정하면 된다.
그리고 프롬프트에 예시를 포함하면 모델이 응답 방법에 대한 패턴과 관계를 식별하고 이를 응답 구성에 적용한다. 예시가 없는 프롬프트를 zero-shot 프롬프트, 예시가 적은 프롬프트를 few-shot 프롬프트라고 한다. 여기에서는 광고인 예시와 광고가 아닌 예시, 두가지 예시를 들어서 few-shot prompting을 하고 있다.
 
프롬프트 엔지니어링의 포괄적인 의미
프롬프트의 구성 요소에는 일반적으로 입력, 문맥, 예시 등이 있지만 이러한 요소가 명확히 정해진 것이 아니기 때문에, 프롬프트 엔지니어링은 생성형 AI의 결과물의 품질을 향상시키기 위해 프롬프트를 적절하게 구성 및 설계하여 원하는 결과를 도출하는 것이라고 할 수 있다. 

좁은 의미의 프롬프트 엔지니어링
사용자의 관점에서 생성형 AI 모델로부터 원하는 출력을 일관되고 정확하게 이끌어내기 위해 프롬프트를 효과적으로 작성하는 기술로, 모델의 기능과 한계를 이해하고 그에 맞춰 질문이나 명령을 최적화하는 능력을 포함한다.
 
넓은 의미의 프롬프트 엔지니어링
개발자의 관점에서 생성형 AI 모델이 다양한 사용자의 요구에 부응하며 최적의 성능을 발휘할 수 있도록 설계하는 전략적 프로세스를 의미한다.
모델의 기능과 한계에 대한 이해를 바탕으로 질문과 명령을 최적화하는 과정뿐만 아니라, 사용자 경험(UX) 디자인, 사용자 피드백 분석 및 반영 등을 포함한다.
 
 

📌 프롬프트 엔지니어의 업무1 : 프롬프트 설계 및 개발, 문서화

 
프롬프트 엔지니어는 다양한 사용 사례와 목적에 맞춰 효과적인 프롬프트를 설계 및 개발하고 이를 문서화하여 프롬프트의 사용법과 효과를 전달하며, 새로운 프롬프트 기법을 실험 및 연구한다. 이에 따라 나는 회사에서 프롬프트 검수 가이드, 프롬프트 작성 가이드 등을 만들어 배포하였다.
 
프롬프트 검수 가이드 
LLM의 학습 데이터셋을 검수할 때 지시-답변 쌍의 상응 여부와 명확하고 적절한 지시 제공 여부를 확인하게 되는데, 이 부분에 있어서 지시를 평가하는 데에 필요한 필수적인 체크리스트와 방향을 제시하기 위하여 검수 가이드를 작성하였다. 또한 사용자가 다양한 길이와 스타일의 프롬프트를 생성할 때의 방법을 제시하였다.
 
프롬프트 작성 가이드
사용자가 좀 더 명확하고 효과적인 프롬프트를 작성할 수 있도록 프롬프트 작성 및 개선 가이드라인을 제작하였다. 뿐만 아니라 파라미터 설정에 대한 이해를 높이기 위한 설명과 범용적인 예시 프롬프트를 제공하였다. 
 
 

📌 프롬프트 엔지니어의 업무2 : PoC 및 데모 시나리오 준비

 
또한 각종 Proof of Concept(PoC)와 데모 시나리오를 준비하는 업무를 하고 있다. 가령 나는 회사에서 과학기술정보통신부 ‘대한민국 초거대 인공지능 도약’ 행사 PoC 및 행정안전부 ‘초거대AI 민관협업’ PoC 등의 시나리오를 설계하였다. 
 
시나리오를 설계할 때에는 그 목적과 도메인 지식이 중요한데 특히 PoC 및 데모 시나리오를 작성할 경우, 해당 기관이나 행사에서 중요하게 여기는 부분이나 요구사항, 제약사항을 잘 반영하고 모델이 갖는 강점을 극대화하여 보여줄 필요성이 있다. 따라서 PoC 및 데모 시나리오의 설계는 크게 다음의 과정으로 이루어진다.
1. 기관이나 이벤트의 특성 및 요구사항 파악
2. 특성 및 요구사항에 맞는 도메인 지식 및 자료 조사
3. 시나리오 목차 구성
4. 수집한 자료를 바탕으로 프롬프트 설계

특히 이런 기관이나 이벤트의 요구사항을 맞추기 위해서는 해당 기관의 실제 문서 파악이 가장 중요하다고 판단하였다. 예를 들어 행안부 PoC의 경우 행정안전부의 국정과제 및 주요 업무를 조사하고 행안부의 요구사항에 따라 제공된 행안부 문서(관련 보도자료 총 2846건, 정책보고서 43건 등) 데이터의 주요 주제 및 키워드, 문서 구조를 분석하여 행안부에서 선호할만한 주제 및 보고서 구조를 파악하였다. 그리고 이것이 시연의 목표와 부합하는지를 검토하고, 코난 LLM으로 작성할 보고서 주제 및 들어가야 할 내용, 문서 양식 등에 대한 기준점을 만들었다. 
이제 자료조사 과정이 끝나면 시나리오의 목차를 구성할 차례이다. 여기에서 행안부의 요구사항을 잘 반영하도록 목차를 구성하고 코난 LLM의 특징인 ‘표 출력’, ‘문서 교정 기능’, ‘RAG 기술’, ‘문서 서식 템플릿’이라는 요소들을 잘 보여줄만한 태스크들로 구성하였다. 
(그리고 각 목차별 프롬프트 설계의 경우, PoC 특성상 대외에 공개하기는 어려울 것 같아서 생략하고 넘어가는 점, 양해 부탁드린다.)
 
 

📌 프롬프트 엔지니어의 업무3 : 문서 서식 템플릿 및 교정기능 프롬프트 엔지니어링

 
프롬프트를 효과적으로 작성하는 사용자 관점에서의 프롬프트 엔지니어링을 넘어서, 모델이 사용자의 요구에 최적의 성능이 발휘될 수 있도록 시스템 단위에서 프롬프트를 최적화하고 사용자 경험 디자인 등을 수행하는 개발자 관점의 프롬프트 엔지니어링에 대한 부분이다. 사용자가 AI와 상호작용하는 과정에서 만족스러운 경험을 할 수 있도록 하는 것이라고 할 수 있다.
 
 

✔ 문서 서식 템플릿 프롬프트 엔지니어링

 
문서 서식 종류 결정

LLM 페이지에 접속하였을 때 다양한 문서 서식 템플릿을 사용자들이 사용할 수 있게끔 구성하였다. 이 서식들은 다양한 종류의 보고서들을 검토하면서 사용자들이 자주 사용할 만한 종류로 엄선하였다. 그래서 일반적인 보고서 서식 뿐만 아니라 보도 자료, 출장 계획서, 사업 제안서, 공고, 이메일 등의 문서 서식들을 포함하였다.
 
문서 서식별로 최적 템플릿 항목 결정 
모든 사람이 양질의 콘텐츠를 생성할 수 있도록 프롬프트를 잘 작성할 수 있는 것은 아니기 때문에, 미리 프롬프트에 입력할 항목들을 템플릿으로 정의해서 사용자들이 좀 더 쉽게 문서를 작성할 수 있도록 지원하고 있다. 보다 구체적으로 사용자로부터 여러 항목을 입력받을 수도 있지만, 사용성의 편의를 위해 간단하고 쉬운 입력만으로 결과를 얻을 수 있도록 각 서식별로 가장 필수적인 항목들 위주로만 구성하였다. 예를 들어 출장 계획서의 경우 사용자가 주제, 출장지, 일정 항목을 입력하면 된다.


문서 서식별로 양질의 문서를 출력하도록 프롬프트 엔지니어링  
각 문서 서식별로 양질의 문서를 출력할 수 있는 최적의 시스템 메시지와 파라미터 설정을 찾고 이를 내부적으로 적용할 수 있도록 프롬프트 엔지니어링을 진행한다. 예를 들어 사용자가 프로젝트 계획서를 작성하고자 할 때, 주제와 예산, 일정, 간단한 설명 항목만 입력하면 시스템 내부에서 모델에게 해당 문서를 양질의 내용으로 구성할 수 있게끔 추가적인 프롬프트 및 파라미터 설정을 적용하게 된다.
 
여담이지만 디지털미래혁신대전이나 SK 테크써밋 등의 행사에 참여하였을 때 여러 분들이 이 문서 서식을 좋아해주셔서 감사하기도 했다. 사용하기 편하고 결과도 잘 나와서 좋다고 하신 피드백들을 받아서 뿌듯했고 하드 코딩한 게 아니냐는 분들도 계셨는데 참고로 하드 코딩은 따로 하지 않았고 프롬프트 엔지니어링을 해둔 결과이며, 근본적으로 우리 LLM이 문서 생성 태스크에 특화되어 있어서 문서 생성 결과가 잘 나오는 편이다.
 
 

✔ 교정기능 프롬프트 엔지니어링

 
우리 회사의 LLM은 단순히 문서 초안 작성을 하는 것에 그치는 것이 아니라, 작성된 초안을 교정하고 내용을 첨삭하여 완성해나가는 과정을 언어모델을 통해 지원하고 있다. 교정을 원하는 부분을 드래그하여 늘려쓰기, 줄여쓰기, 다시 쓰기, 프롬프트 기능을 적용하거나, 문서 전체에 대한 제목 생성, 요약하기 등을 사용할 수 있다. 




교정기능 최적 시스템 메시지 및 최적 문맥 정보 길이, 파라미터 발굴 
교정기능을 실행하였을 때 시스템 내부에서 각 기능이 더 제대로 동작하고 지시가 효율적으로 모델에게 전달될 수 있도록 최적의 시스템 메시지를 발굴하여 프롬프트 엔지니어링을 해두었다.   
또한 교정기능을 적용할 때 시스템 내부적으로 교정하고자 하는 부분만 언어모델에 입력할지, 또는 전체 문서를 맥락으로 함께 입력할지, 또는 교정할 부분 앞 뒤로 일부분만 맥락으로 입력할지를 결정해야 한다. 따라서 이러한 문맥 정보의 길이에 따른 결과값을 각각 도출 및 비교하는 실험을 진행하여 최적 문맥 정보 길이를 발굴하고 시스템 내부적으로 각 교정기능에 맞는 문맥 정보를 입력해주고 있다.
여기에 더불어 각 교정기능 별 최적 파라미터 조합을 찾아 설정해주는 작업을 진행하고 있다.


📌 프롬프트 엔지니어의 업무4 : 프롬프트 테스트 및 모델 평가

 
좋은 출력, 나쁜 출력의 프롬프트 샘플 발굴 
좋은 출력과 나쁜 출력의 프롬프트 샘플을 발굴하는 작업을 수행한다. 프롬프트 샘플은 문서 생성, QA, RAG 기반 문서 생성, 요약 등 다양한 태스크를 기반으로 한다.

프롬프트 샘플을 통한 모델 성능 평가
프롬프트 샘플을 통하여 모델의 출력 결과를 비교하고 모델 성능을 정성적으로 평가하는 작업을 진행한다. 
 
 

📌 마무리

 
개인적으로 회사에서의 업무가 재미있게 느껴진다. 위에서 열거한 업무 이외에도 데이터를 만드는 작업이나 RAG 관련 아이디어 제안 등 다양한 업무를 하고 있는데, LLM 기술과 관련된 여러가지 업무를 직접 경험하고 참여할 수 있다는 점에서 더욱 의미있고 배울 점이 많다고 느꼈다.
 
그리고 프롬프트 엔지니어가 최근에 새로 생긴 업무이다보니 어떤 일을 하는지 궁금해하는 분들이 많으셨는데 이 글을 통해 궁금증이 해결되셨다면 좋을 것 같다.
 


내용이 도움이 되셨다면 댓글 또는 좋아요 부탁드립니다. 감사합니다. 😀

반응형