
최근 몇 년간 LLM(Large Language Model) 기반의 생성형 AI가 우리의 일상과 업무 방식을 혁신하고 있다.
이러한 흐름에 따라 더 똑똑하게 질문하는 방법인 프롬프트 엔지니어링에 대해 정리해 보려 한다.
프롬프트 엔지니어링이란 무엇일까.
- 프롬프트 엔지니어링(Prompt Engineering)이란, 한마디로 LLM에게 원하는 결과물을 얻기 위해 입력하는 명령어(프롬프트)를 최적화하는 일련의 과정을 뜻한다.
- LLM은 우리가 제공하는 프롬프트를 기반으로 다음에 올 가장 적절한 토큰을 예측하여 문장을 생성한다.
- 따라서 프롬프트의 형식, 구문, 단어 선택, 길이 등이 최종 결과물의 품질과 직결된다.
- 결국 프롬프트 엔지니어링은 LLM의 잠재력을 최대한 끌어내어 정확하고, 관련성 높으며, 원하는 형식의 결과물을 얻어내는 'AI와의 대화 기술'이라고 할 수 있다.
핵심 프롬프트 엔지니어링 기법들
- 원하는 결과물을 얻기 위해 효과적인 프롬프트를 설계하는 몇 가지 주요 기법들이 있다.
- 이 기법들을 숙지하는 것이 곧 LLM 마스터의 첫걸음이다.
1. 역할 할당(Role Assignment)
- 모델에게 특정 역할을 부여하는 기법이다.
- 이는 모델의 응답 스타일과 컨텍스트를 즉시 특정 분야의 전문가처럼 만든다.
- 예시: "너는 20년 경력의 시니어 백엔드 개발자야. Node.js를 사용하여..." 와 같이 역할을 명시적으로 지정한다.
2. 컨텍스트 제공 (Contextualization)
- 질문이나 작업 수행에 필요한 배경 정보나 맥락을 함께 제공하여 모델이 상황을 더 잘 이해하도록 돕는다.
- 예시: "현재 프로젝트는 A라는 레거시 시스템을 B라는 신기술로 마이그레이션 하는 중이야, 이 점을 감안하여 B 기술의 도입 시 예상되는 리스크 3가지에 대해 설명해 줘"
3. 몇 가지 예시 제공 (Few-Shot Prompting)
-
모델에게 작업의 예시(Example)를 몇 개 제공하여 원하는 출력 형태와 내용을 학습하게 하는 방법.
-
제로샷(Zero-Shot): 예시 없이 질문만 하기 (가장 기본적인 형태)
-
원샷(One-Shot): 하나의 예시를 제공.
-
퓨샷(Few-Shot): 두 개 이상의 예시를 제공.
-
장점: 예시를 통해 원하는 응답의 규칙, 형식, 스타일을 명확히 전달할 수 있어 복잡한 분류나 형식 맞추기 작업에 특히 효과적
4. 연쇄적 사고 프롬프트 (Chain-of-Thought, CoT)
- 모델이 최종 답을 도출하기 전에 추론 과정(사고의 연쇄)을 거치도록 유도하는 고급 기법.
- 복잡한 문제 해결 능력, 특히 수학적 추론이나 상식 기반의 추론 능력을 크게 향상시킴.
- ex) 프롬프트 끝에 "단계별로 생각하자(Let's think step by step)"와 같은 문구를 추가하는 것만으로도 모델의 성능이 향상될 수 있음.
5. 출력 제약 및 형식 지정
- 모델이 생성할 응답의 길이, 형식(Format), 사용 언어 등을 명확히 지정하여 예측 가능한 결과물을 얻음.
- 예시: "응답은 500자 이내의 한국어로 작성할 것, 결과는 JSON 형식으로 출력해야 하며. key는 'title'과 'summary'로 할 것"
프롬프트 엔지니어링, 왜 중요할까.
- 프롬프트 엔지니어링은 단순히 '질문을 잘 하는 것' 이상의 의미를 갖는다.
결과의 정확성 향상
- 원하는 의도와 맥락을 정확히 전달하여 LLM의 환각(Hallucination) 현상을 줄이고 정확한 정보를 얻을 수 있음
효율적인 작업
- 반복적인 수정과 수동 검토의 필요성을 줄여 시간과 노력을 절약할 수 있음
새로운 가능성 발견
- 정교하게 설계된 프롬프트는 LLM이 미처 예상치 못했던 창의적이고 혁신적인 결과를 만들어낼 수 있도록 함.
프롬프트 엔지니어링은 LLM 시대를 살아가는 모두에게 필수적인 기본 소양이 되었다.
꾸준한 연습과 실험을 통해 나만의 최적화된 프롬프트 템플릿을 만들어 가는 것이 중요하다고 할 수 있다.