프롬프트 엔지니어링 (Prompt Engineering)

1. 프롬프트 엔지니어링(Prompt Engineering)의 개요

(1) 프롬프트 엔지니어링의 부각 배경

  • 특정 산업 또는 조직에서 대규모 언어 모델(LLM)생성형(Generative) AI를 효과적으로 활용하기 위해서는 생성형 AI 맞춤화가 필요하며, 프롬프트 엔지니어링을 통해 생성형 AI 맞춤화로 기업/기관의 생산성 향상 가능
  • 특히 LLM(Large Language Model)의 방대한 텍스트 데이터에서 원하는 결과를 얻기 위해 프롬프트(질문)의 최적화가 필요하며, 다양한 방식으로 조작하고 개선하여 최선의 결과 도출 필요

(2) 프롬프트 엔지니어링의 개념

프롬프트의 개념텍스트, 질문 또는 이미지를 언어 모델 등 생성형 AI 모델에 입력하는 값
프롬프트 엔지니어링의 개념대규모 언어 모델(LLM)생성형(Generative) AI로부터 원하는 결과를 정확하게 제공받을 수 있도록 프롬프트를 설계 및 제작하는 기법

(3) 프롬프트 생성 가이드

방법설명예제
쉽고 간결한 표현– 불필요 형용사 등 문구 제거
– 작은 입력 차이 큰 변화
– 요즘 날씨도 좋고 해서 주말에 가족 여행 가려고 하는데 어디가 좋을까?
– 초등학생과 함께 가기 좋은 역사 유적지가 있는 여행지 3개 추천해줘.
지시의 맥락을
함께 입력
– 현재 상황 구체적으로 입력
– AI 모델의 현재 상황 이해
– 다리 운동 하는 방법 알려줘.
– 40대 여성 허벅지 근력 운동 일주일 루틴 짜줘.
작업의 조건을
구체적으로 명시
– 원하는 결과를 구체적 입력
– AI 수행 작업을 명확히 지시
– 인공지능의 종류를 비교해줘.
– 인공지능의 종류 3가지를 개념, 특징, 목적으로 비교 표를 만들어줘.
열린 질문 보다
닫힌 지시문 사용
– 의문문이 아닌 지시문 입력
– AI의 답변 선택 여지 차단
– 저녁에는 뭘 먹을까?
– 강남에서 먹을 저녁 식사 메뉴 짜줘.
원하는 결과물의
예시를 함께 입력
– 표, 그림 등 결과 예시 입력
– 필요한 결과물의 샘플 제공
– 가상의 게임 캐릭터 하나 만들고 설명해줘.
– 다음 포맷으로 가상의 게임 캐릭터를 만들어서 설명해줘.
캐릭터 이름: 멀린, 직업: 마법사, 스킬: 파이어볼, 아이스볼트
충분한 테스트와
반복 수행
– 프롬프트 최적화/추가 개선
– 가이드의 방법을 반복 적용
– 추가 정보 및 조건을 입력하여 원하는 결과물 도출할 때까지 수행
  • 좋은 프롬프트는 인공지능이 이해하기 쉽게 요구사항을 잘 정리한 것이고, 반면 모호하고 불명확한 프롬프트는 혼란하고 부실한 결과를 초래할 수 있어 모델 별 프롬프트의 특성에 대한 이해가 필요
  • 생성형 AI 모델은 학습할 데이터가 부족하거나 없으면 학습 자체가 어렵거나 편향이 발생할 수 있으므로 퓨샷 러닝(Few-Shot Learning) 기반 소량의 데이터로 원하는 결과 도출이 가능하도록 학습 가능

 

2. 퓨샷 러닝(Few-Shot Learning)

(1) 퓨샷 러닝의 개념 및 특징

개념메타 러닝, 메트릭 러닝 기반 적은 양의 데이터를 통해 새로운 작업이나 도메인을 학습하기 위한 기계 학습 기법
특징메타 러닝N-way K-shot 태스크를 통한 학습 전략에 대한 앙상블 학습
(N은 범주의 수, K는 범주 별 서포트 데이터의 수)
메트릭 러닝거리 학습 기반의 오차 함수를 사용하여 내재된 범위에 대한 의미 학습
(일반 학습 방식으로 적은 샷의 학습은 훈련데이터에서의 과적합 발생)

(2) 퓨샷 러닝의 주요 기법

주요 기법개념도학습 방법
메트릭 러닝
(거리 학습)
– 특징 공간
– 유클리디안 거리
GNN
(그래프 신경망 방식)
– Dense Graph 구조 활용 (일반 학습 행렬 활용)
– 노드 별 거리(유사도)를 곱한 값들의 합(가중 평균) 기반 그래프 변환 학습
  • 메타 러닝을 통해 스스로 학습 규칙을 도출할 수 있게 하여 일반화 성능 고도화

 

3. Transformer 모델 기반 프롬프트 엔지니어링의 한계점 및 개선방안

(1) Transformer 모델 기반 프롬프트 엔지니어링의 한계점

구분한계점제약 사항
학습 데이터에 따른 AI 모델 한계 측면편향성 발생 가능– 학습 데이터가 없거나 부족한 경우 발생
– 근거 데이터가 부족하여 결과의 정확성 저하
학습 데이터에 따라 다른 응답 결과– 표준 학습데이터 부재로 AI 모델 성능 저하
– AI 모델이 문맥 의미 파악 불가, 부정확한 출력
외부 입력에 따른 AI 모델 영향 발생 측면시퀀스 일관성 저하– 생성된 단어 등 결과물의 일관성 보장 불가
– 저품질 프롬프트 입력 시 예측 범위 외 결과물
악의적 공격에 취약– 프롬프트의 기능이 의도한 것과 다르게 작동
– 프롬프트 인젝션 등 공격으로 프롬프트 유출

(2) Transformer 모델 기반 프롬프트 엔지니어링 한계점 개선 방안

한계점개선 방안세부 방안
편향성 발생 가능학습 컨텍스트 제공– 가능한 많은 입력 컨텍스트 제공, 출력 테스트
– 학습 데이터셋 구축, 데이터 전처리, 퓨샷 러닝
학습 데이터에 따라 다른 응답 결과모델 미세 조정 (Fine-Tuning)– 모델 자체 데이터로 미세 조정(Fine-Tuning)
– 특정 사용 사례 요구사항에 유용, 정확한 출력
시퀀스 일관성 저하모범 사례 적용– 입력값에 명확하고 구체적인 프롬프트 입력
– 질문, 입력 데이터 등 경험 측면 모범 사례
악의적 공격에 취약프롬프트 유출 검사 / 가이드라인 최소화– AI 모델 질의 전 검사, 생성물에 프롬프트 확인
– Fine-Tuning을 통해 Task 가이드라인 최소화
  • 초거대 언어 모델이 등장하고 주류로 자리잡으며 프롬프트 엔지니어링의 중요성도 더욱 커질 것으로 예상, 공격자가 시스템 출력을 조작하기 위해 악의적 프롬프트를 주입하는 프롬프트 인젝션(Prompt Injection) 등 보안 위협도 커질 것으로 예상되므로 프롬프트 엔지니어링의 활발한 연구 및 보완 필요

[참고] 

  • OpenAI, Best practices for prompt engineering with OpenAI API
  • Google Research, Language Models Perform Reasoning via Chain of Thought

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^