Search

프롬프트 엔지니어링

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

프롬프트란?

프롬프트는 인공지능 서비스(예. ChatGPT)와 대화를 시작하기 위해 사용자가 제공하는 텍스트
생성형 AI 응답의 방향성을 결정하는 이정표 역할
프롬프트의 구체성과 품질에 따라 인공지능 모델의 응답 품질, 답변 길이, 질문과의 관련성 정도가 달라짐

LLM이 동작하는 방식의 이해

주제가 다르면 새 대화에서 하는 것을 추천합니다.

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

프롬프트를 효과적으로 설계하고 구축하는 방법과 규칙
응답이 잘 나올 수 있게 효율적으로 프롬프트를 하는 기법
프롬프트 프로그래밍(Prompt Programming)
사용자가 인공지능을 활용하는 새로운 패러다임

프롬프트 예시

인공지능에 대해서 어떻게 생각하나요?
대공황이 일어난 이유는 무엇인가요?
주요 포인트: 질문이 구체적이지 않아서 인공지능 모델이 유용한 답변을 제공하기 어려움
인공지능으로 무엇을 할 수 있나요?
대공황 동안 무슨 일이 일어났나요?
핀트: 인공지능이 좋은 답변을 만들기 위해 필요한 정보가 충분히 전달되지 않음
인공지능이 도와줄 수 있는 마케팅 분야 5가지를 설명과 함께 제시해주세요.
대공황의 주요 원인이 무엇이었으며, 특히 1929년 주식시장 붕괴의 원인은 무엇이었나요?
생성형 인공지능 모델을 활용한 신규사업 아이디어를 5개 도출해줘
성공 비결: 인공지능이 좋은 답변을 만들기 위해 필요한 직접적인 정보를 제공함
IT 분야 전문투자자로서 아래 요구사항을 고려해서, 생성형 인공지능모델을 활용한 신규 사업 아이디어를 5개 도출해줘
창업팀 구성은 대표겸PO 1명, 프론트엔드 개발자 2명, 백엔드 개발자 1명, UX/UI 디자이너 1명으로 이루어짐
관심 창업 분야는 청소년 언어교육 분야이고, 한국을 포함한 동아시아 국가를 타겟으로 서비스 하려고 함
고급 기법: 인공지능이 답변을 생성하기 위해 필요한 맥락 정보를 제공함

프롬프트 생성을 위한 GPT의 이해

메타학습 기능을 적용
현실 세계의 해당 정보에 대한 작동 원리를 배워서 새로운 문제와 상황에 적용하는 것을 배우고, 학습한 결과를 공유
제시되는 프롬프트를 단순 암기하여 대답하는 것이 아님
프롬프트 언어는 영어를 추천
많은 생성형AI의 경우 기본적으로 언어입력을 기반으로 동작하므로 모델을 구축할 때 학습에 사용했던 데이터의 언어를 파악하는 것은 매우 중요함
GPT3의 한국어 자료는 0.01697%
전세계 한국어 사용자의 비율은 1.13%
만약 질문을 하고자 하는 분야의 학습에 사용했던 데이터 언어가 영어라면, 질문 언어도 영어로 하는 것이 가장 효과적인 프롬프트엔지니어링이됨
이미지 모델 생성AI, 코딩 모델 생성AI(GitHub Copilot)는 영어만을 사용해야 하는 경우가 많음

프롬프트 엔지니어링 전략

지시(Instruction)맥락(Context) 정보를 제공
Who : 페르소나 지정하기, 역할 지정하기 What : 활동 지정하기 How: 방법, 전문기술 지정하기
페르소나
제품, 서비스, 브랜드의 대상 고객층의 특성과 관심사를 대표하는 가상 인물
특정 사람들의 행동, 동기, 목표를 이해하고 그들의 요구 사항에 맞는 제품이나 서비스의 설계와 마케팅에 사용
조사와 데이터를 기반으로 설정되며, 특정 사용자 또는 고객 그룹을 현실적으로 대표할 수 있도록 만들어짐
페르소나는 상품 설계나 마케팅 등에 활용해서 제품이나 서비스를 고객 요구에 맞게 조정하는 도구로 활용
기업이 고객을 이해하고 더 효과적인 커뮤니케이션 및 마케팅 전략을 개발하는 데 도움이 될 수 있음
역할
어떤 상황에서 사람이 해야 할 일과 책임
한 사람이 가족에서는 ‘부모, 형제, 배우자’라는 역할을 담당하고, 회사에서는 ‘상사, 동료, 고객’ 등의 역할을 담당하게 됨
활동
특정 역할이 책임을 다해야 하는 일
고객 서비스 담당자 역할에서 ‘첫 응대’ 활동이란 전화로 고객을 응대하고, 문제와 고객 불만을 조직에서 사용하는 용어로 기록하는 일 등을 활동이라 부를 수 있으며, 이러한 ‘첫 응대’ 활동은 고객 서비스 담당자 역할에서 매우 중요한 부분임
전문 기술
활동을 더 효율적이고 효과적으로 수행하는 방법을 지칭
고객 서비스 담당자가 계약 조건과 고객의 영향 수준에 따라 통화 우선 순위를 지정하는 전문 기술(Professional Skill)은 가장 시급한 문제를 적시에 먼저 해결해 전반적인 고객 서비스 경험을 향상시키는 결과를 만들어낼 수 있음
모든 역할은 자신에게 주어진 활동을 수행하고 역할의 책임을 다하기 위해 하나 이상의 방법 또는 전문 기술을 사용하게 됨
Tone & Manner(어조)를 지정
출력 개수, 출력 형식 지정

Who, What, How를 제시한 프롬프트 예시

마케팅 전문가로서, 선크림 제품에 대한 블로그 게시물전문적인 어조로 작성해줘
재무 컨설턴트로서, 30대에게 최적의 투자 전략이 무엇인지 알려줘
인사 전문가로서, 어려운 직원을 다루는 방법에 대해서 알려줘
패션 전문가 관점에서, 면접 때 입을 옷에 관한 조언을 해줘
[스타일/격식]을 가진 인터뷰어 스타일로 [주제]에 관한 [숫자]개의 질문을 만들어줘
친근한 말투, 건강과 웰빙, 10
다음 [접근법/전략]을 사용해줘
공급망 운영참조(SCOR)
균형성과표(BSC)
맥킨지7S 프레임워크
포터의 5가지경쟁요인
SWOT 분석
비즈니스 모델 캔버스(BMC)
사전 제품 품질 계획(APOP)
프로젝트 관리 지식체계(PMBOK)
전문 카피라이터로서, 처방전 홈 딜리버리 서비스에 대한 한 페이지 분량세일즈 레터를 작성해줘
1. 설득력 있는 언어를 사용
2. 짧은 문장간단한 용어를 사용하여 읽기 쉽게 만들것
3. 문단 간 전환을 위해 질문을 사용
4. 주요 내용을 숫자, 증거, 예시로 뒷받침할 것
5. 독자와 직접 대화하고 개인화할 것
6. 이 콘텐츠 작성의 목표는 뉴스레터 구독임

프롬프트 엔지니어링 기법, Medprompt

에릭 호비츠(MS CTO)가 일반 GPT4모델이 간단한 프롬프트 전략만으로 미세조정된 모델을 능가한다고 주장(11/28)
MS는 프롬프트 엔지니어링 기법(GPT4와 같은 범용 LM에 여러 프롬프트 전략을 합쳐서 수행)을 적용하여 특정 도메인 대상의 전문 지식으로 훈련된 모델보다 더 좋은 성능을 보인 연구 결과 발표
전문 지식을 가진 모델을 집중적으로 훈련시키지 않으면 전문가 능력과 일치 할 수 없다는 인식이 널리 퍼져있었음
예를 들어 의료 역량 벤치 마트에 대해서 MS의 BioGPT및 Google의 Med-PaLM에서 보여준 바와 같이 도메인 특화 훈련을 활용
제시하는 Prompt Engineering방법은 도메인 전문 지식을 특별히 사용하지 않아 전문가가 만들거나 관리한 컨텐츠의 필요성을 제거함
Medprompt가 적용된 GPT4는 현재까지 전문가 모델로 달성한 최상의 방법보다 MedQA 데이터셋에서 처음으로 90%의 점수를 돌파하였으며, MultiMedQA Suite의 전체 벤치마크 데이터셋에서 최고 결과를 달성

3가지 주요 기법

Dynmaic Few-shot

훈련 세트가 충분히 큰 경우 다른 작업 입력에 대해 서로 다른 몇 가지 샷 예제 선택이 가능하기 때문에, 해당 사례와의 유사성에 따라 예제를 식별하는 메커니즘을 사용
테스트 예제가 주어지면, 임베딩 공간에서 k-NN 클러스터링을 사용하여 의미적으로 유사한 k개의 훈련예제를 선택(text-embedding-ada-002를 사용하여 훈련/텍스트 질문을 임베딩)

Self generated chain of thought(CoT)

훈련 예제를 위한 chain of Thought 설명을 자동으로 생성하기 위하여 아래와 같은 prompt를 사용하여 gpt4에 요청
환각 또는 잘못된 추론 chain을 포함할 수 있다는 위험을 완화하기 위해 gpt-4가 근거와 추론 chain에 따라 가장 가능성 높은 답의 추정치를 생성하도록 하여, 실제 라벨과 불일치 시 폐기하도록 함

Choice shuffle ensembling

GPT4는 복수 선택 답변 중에서 선택지 내용과 무관하게 특정한 선택을 선호하는 경향, 다시 말해 모델이 위치 편향을 보일 수 있음 이러한 편향을 줄이기 위해 선택지들을 섞은 후에 복수 선택에 대한 다른 정렬 순서에 따른 답안 들에서 일관성을 확인하는데, 개별 추론 경로를 생성하기 전에 답변 선택의 상대적 순서를 섞은 후에 가장 일관된 답변, 즉 choice shuffle에 가장 덜 민감한 답을 선택

의견 및 시사점

범용 LLM에서 Prompt engineering 방법 만으로 도메인 특화된 작업을 충분한 성능으로 수행 가능하다는 근거를 제시한 의미있는 결과
GPT4Turbo와 Claude 2.1에서 입력 가능한 context 길이가 늘어남에 따라 In-Context Learning(ICL, 프롬프트의 내용만으로 하고자하는 태스크를 수행하는 방법)의 범위가 확장되고 있으며, 제안된 방법은 향후 더 많은 확장 및 개선 가능성이 있어 보임

다양한 프롬프트 엔지니어링 기법 모음

System Prompt 고도화

CO-STAR
TIDD-EC
실제로 오픈된 System Prompt는 4만 캐릭터 수준

지시문

지시문은 인공지능에게 특정한 행동을 수행하도록 명령하는 가장 간단한 방법입니다. AI는 보다 복잡한 지시를 이해하고 실행할 수 있습니다. AI의 이러한 지시문 처리 능력은 그 사용 범위를 크게 확장합니다.
AI가 기본적인 문자열 조작을 이해하고 실행할 수 있음을 보여줍니다. 이런 지시를 통해 보다 복잡한 작업들을 처리할 수 있습니다. 예를 들어, 문서의 맞춤법 검사나 문장의 문법 검사 등을 요청할 수 있습니다.
AI가 지시문을 정확하게 이해하고, 그에 따라 적절한 결과를 출력할 수 있어야 가능합니다. 따라서 AI에 지시문을 제공할 때는 가능한 명확하고 구체적으로 제공하는 것이 중요합니다.

퓨샷 프롬프팅

퓨샷 프롬프팅은 모델에게 원하는 작업을 수행하는 몇 가지 예시(퓨샷)를 보여주는 것을 말합니다.
모델에게 어렵게 설명하는 특정 방식으로 출력을 구조화할 필요가 있을 때 중요한 사용 사례가 됩니다. 예시의 개수에 따라 제로샷, 원샷, 퓨샷으로 나누어집니다.
퓨샷 프롬프팅은 출력이 훨씬 일관성 있게 만들어주기 때문에, 지시 프롬프트를 사용하는 것보다 더욱 효과적일 수 있습니다.
제로샷 프롬프팅은 프롬프팅의 가장 기본적인 형태입니다. 이는 모델에게 예시를 보여주지 않고 프롬프트를 보여주고 반응을 생성하도록 요청하는 것입니다. 원샷 프롬프팅은 모델에게 단일 예시를 보여주는 것입니다. 퓨샷 프롬프팅은 모델에게 2개 이상의 예시를 보여주는 것입니다.

역할 부여 프롬프팅

인공지능에 특정한 역할을 부여하여 작업을 수행하도록 지시하는 방법을 의미합니다. AI에게 역할을 부여함으로써, 더욱 풍부하고 다양한 결과를 얻을 수 있습니다.
역할 부여 프롬프팅은 인공지능에게 '당신은 의사다' 또는 '당신은 변호사다'와 같은 역할을 할당하고 그에 따른 의료 또는 법률 질문을 해결하도록 요청하는 방법입니다. 이를 통해 AI는 특정 문제에 대한 더 나은 이해를 가지게 되고, 따라서 더 나은 답변을 제공할 수 있습니다.
'Awesome ChatGPT Prompts' GitHub 저장소에서는 역할 부여 프롬프팅을 사용한 다양한 예시를 찾아볼 수 있습니다.

프롬프트 조합

프롬프트는 다양한 형식과 복잡성을 가질 수 있습니다. 주요 요소들로 역할, 지시문, 예시, 지문, 질문 등이 있습니다. 이러한 요소 및 구조는 '인 컨텍스트' 학습을 촉진합니다. 이는 매개 변수 업데이트 없이 학습할 수 있는 능력을 말합니다.

MRKL 시스템

MRKL(Modular Reasoning, Knowledge and Language, 미라클) 시스템은 LLM과 외부 도구를 결합하여 복잡한 문제를 해결하는 아키텍처입니다. 계산 도구로 확장되어 다양한 문제를 해결하거나 다양한 데이터 소스에 의존하는 더 복잡한 작업에도 적용할 수 있습니다.
MRKL 시스템은 계산기, 날씨 API, 데이터베이스 등의 모듈과, 들어오는 자연어 쿼리를 적절한 모듈로 '라우팅'하는 라우터로 구성되어 있습니다.
사용자의 텍스트에서 SQL 쿼리를 형성하는 정보를 추출하여 금융 데이터베이스에 대한 질문에 응답할 수 있는 챗봇이 있습니다. 예시) '현재 삼성전자 주식 가격은 얼마인가?'

ReAct 시스템

ReAct는 복잡한 작업을 해결하기 위한 자연어 추론을 활용하는 언어 모델을 활성화하는 패러다임입니다. 문제가 제시되면, ReAct는 외부 API와 상호작용하여 정보를 검색하는 등, 특정 작업을 수행할 수 있는 언어 모델을 위한 시스템입니다.
ReAct는 LLM (Large Language Model)이 특정 작업을 수행할 수 있게하는 작업에 대해 설계되었습니다.
질문이 제시되면, LLM은 정보를 검색하기 위해 작업을 수행하고 검색된 정보를 기반으로 질문에 답할 수 있습니다. 수행할 수 있는 행동에 대해 관찰하는 기능이 추가된 MRKL으로 생각할 수 있습니다.

출력형식 지정

JSON은 JavaScript Object Notation의 약자로, 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 데이터 교환 형식입니다. 키-값 쌍으로 구성되어 파싱하기에 용이합니다. 챗GPT의 출력을 JSON 형식으로 받은 뒤에 그 결과를 파싱하여 로직에서 사용할 수 있습니다.
{ "name": "John Doe", "age": 30, "cars": [ {"model": "Ford", "year": 2020}, {"model": "BMW", "year": 2019} ] }
JavaScript
복사
위 예시는 "name", "age", "cars"라는 세 가지 키를 가지고 있습니다.
"name"과 "age"는 각각 문자열과 숫자 값을 가지고 있으며, "cars"는 두 개의 객체를 포함하는 배열을 값으로 가지고 있습니다.
[주의사항]
이런 방식은 완벽한 JSON 형식을 보장하지는 않습니다. 챗GPT가 대화형 언어 모델이기 때문에 항상 완벽한 JSON 출력을 제공하지는 않습니다. 이를 보완하기 위해서는, 출력을 받은 후에 추가적인 JSON 유효성 검사를 수행해야 합니다.

부정적인 예시

개선된 예시

요약: 프롬프트 = AI와 소통하는 열쿠 | 구체적이고 명확할수록 더 나은 결과!
이 문서의 핵심 내용 • 프롬프트 엔지니어링의 기초 개념부터 고급 기법까지 • 좋은 프롬프트 vs 나쁜 프롬프트 비교 • Medprompt, MRKL 등 최신 연구 결과 • 실무에 적용 가능한 구체적 예시들