프롬프트 엔지니어링의 기초
생성형 AI 기술의 발전과 함께 GPT-4o뿐 아니라 Gemini와 Claude 3.5 Sonnet 등 성능 좋은 최신 기초 모델(foundation models)이 쏟아져 나오고 있지만, 프롬프트 엔지니어링은 여전히 파인튜닝과 함께 언어 모델의 성능을 결정짓는 가장 중요한 요소 중 하나라고 할 수 있다.
특히 상당량의 데이터셋을 직접 구축해야 하고, 적지 않은 컴퓨팅 리소스와 시간이 필요한 파인튜닝과는 다르게 프롬프트 엔지니어링은 기초 원리만 알면 누구나 손쉽게 시도해 볼 수 있다는 장점이 있다.
뿐만 아니라 최근 각광받고 있는 Langchain이나 LlamaIndex와 같은 오픈소스 프레임워크를 활용한 검색증강생성(RAG) 파이프라인 구축에 있어서도 언어 모델 자체의 미세조정만큼이나 효과적인 프롬프트 엔지니어링을 통해 답변 정확도를 유의미한 수준으로 향상시킬 수 있음이 입증되고 있다.
이번 시간에는 이처럼 가성비 좋은 프롬프트 엔지니어링을 활용하기 위한 최소한의 기초 개념에 대해 짚어보고 효과적인 프롬프트 엔지니어링을 위해 알아두어야 할 점들에 대해 소개하도록 하겠다.
프롬프트 엔지니어링의 기초
프롬프트 엔지니어링이란 생성형 AI(이하 LLM)로부터 보다 높은 수준의 결과물을 얻기 위해 명령어를 입력하는 것을 말한다. 프롬프트 엔지니어링은 프로그래밍 언어가 아닌 흔히 우리가 사용하는 자연어(한국어, 영어 등)로 이루어지기 때문에 별도의 프로그래밍 지식이 필요하지 않다는 장점이 있다.
프롬프트를 구성하는 요소에는 작업, 맥락, 예시, 페르소나, 톤&스타일, 관점, 포맷 등이 있다. LLM은 위와 같은 구성 요소들에 따라 사용자의 명령을 수행하므로, 가급적이면 위의 요소를 모두 충족시킨다면 더욱 좋은 답변 품질을 기대할 수 있다.
효과적인 프롬프트 작성을 위해 알아두어야 할 점들
1) 구체적 지시
LLM은 주어진 맥락으로부터 정보를 찾기 때문에, 최대한 구체적인 문장을 제공할 필요가 있다. 단순한 단어나 문장으로 끝내는 것이 아닌 단어나 문장이 지칭하는 바에 대한 상세한 부연 설명을 추가함으로써 성능을 향상시킬 수 있다.
예) 좋은 여행지를 알려줘(x)
➜ ‘가격이 저렴하고, 볼 것이 많고, 가까운’ 좋은 여행지를 알려줘(o)
2) 명확한 단어 사용
LLM은 확률에 근거해 답변을 생성해 내기 때문에 모호하거나 중의적으로 해석될 수 있는 단어보다는 명확한 단어 사용하는 것이 좋다.
예) 그 다리는 정말 튼튼하다(x)
➜ 그 다리(bridge)는 정말 튼튼하다(o)
3) 관련 내용 제공
단순히 구체적으로 프롬프트를 작성하는 것에 그치지 않고, 해당 프롬프트를 작성하는 이유와 의도를 통해 문맥을 제시해 주면 더욱 좋은 답변을 얻을 수 있다.
예) 이탈리아 로마에 대해 알려줘(x)
➜ 부모님과 함께 이탈리아 로마를 여행하려는데, 가볼 만한 관광지를 추천해 줘(o)
4) 구조 형식화
형식화란 프롬프트를 작성할 때 일정한 패턴이나 구조를 가지도록 구성 것을 말한다. 사용자는 LLM에게 원하는 형식이나 양식을 설명함으로써 더욱 명확하고 구체적인 답변을 얻을 수 있다.
예) 나만의 인공지능 비서를 만들어줘
➜ 나만의 인공지능 비서를 아래의 형식에 맞춰 만들어 줘
- 이름 : [시리]
- 특징 : [비서의 특징을 한 줄로 묘사]
- 능력 : [비서의 능력을 한 줄로 묘사]
5) 일관성 유지
LLM은 통계학과 딥러닝에 기반한 확률을 바탕으로 작동한다. 따라서 매번 완전히 같은 형식의 답변을 제공하지는 못한다는 한계점을 염두에 두어야 한다. 그러나 프롬프트 엔지니어링을 통해 다양한 방법으로 시도하면서 비슷한 형식으로 유도한 답변이 나오는지 확인하는 작업을 통해 일관성을 유지할 수 있다.
문과 출신으로 AI 스타트업에서 데이터 사이언티스트로 일하고 있습니다. |
* 슈퍼브 블로그의 외부 기고 콘텐츠는 외부 전문가가 작성한 글로 운영 가이드라인에 따라 작성됩니다. 슈퍼브 블로그에서는 독자분들이 AI에 대한 소식을 더 쉽고 간편하게 이해하실 수 있도록 유용한 팁과 정보를 제공하고 있습니다.