# 1-3.Prompt Engineering

# **프롬프트(Prompt)란?**

- AI에게 작업을 요청하는 **명령어**, **질문**, **입력 텍스트**

    - “고양이에 대해 이야기해줘.”

    - "광고 **트렌드 분석 보고서 작성**해줘"

- 예시

![Image](https://upload.cafenono.com/image/slashpagePost/20250401/005522_HQu1Ymsgqe846WsEIo?q=80&s=1280x180&t=outside&f=webp)

# **프롬프트 엔지니어링** 이란?

- 프롬프트 엔지니어링은 "Prompt(프롬프트, AI에 입력하는 질문이나 지시문)"와 "Engineering(최적화)"의 조합.

- 생성형 AI 모델이 원하는 결과를 생성하도록 **입력 데이터**를 설계하고 최적화하는 과정. 

    - AI에게 특정 작업을 수행하도록 지시하는 기술

    - AI에게 효과적인 질문이나 명령을 제시하는 방법

    - AI와 대화를 통해 일관성 있는 좋은 결과를 이끌어 내는 기술입니다.

- 단순한 문장 입력 → 예상치 못한 결과

- **명확한 목표와 지시사항 추가 → 원하는 결과 도출 가능**

- **프롬프트 엔지니어링**: 효과적인 프롬프트 설계 및 최적화 과정

> 예시:
>     - 단순 프롬프트: _“초콜릿 광고 카피 작성.”_
>     - 프롬프트 엔지니어링 적용: 
>         -_"밸런타인데이를 맞아 20대 커플이 공감할 수 있는 달콤하고 감성적인 초콜릿 광고 카피 작성. 문장은 15자 이내로 짧고 인상적으로."_

# **프롬프트 엔지니어링** 중요한 이유?

- 생성형 AI 모델은 주어진 프롬프트(입력)에 따라 **텍스트**, **이미지**, **코드** 등 다양한 출력을 생성

- 따라서 **프롬프트의 품질**은 결과물의 품질에 직접적인 영향

### 사용자의 의도를 정확하게 파악

    - 프롬프트 엔지니어링은 GPT'가 사용자의 의도와 필요를 정확하게 파악하도록 합니다.

    - 이 과정에서 프롬프트의 구성, 질문 방식, 사용하는 언어 등은 중요한 요소입니다.

### GPT가 정확하고 일관되게 응답

    - 잘 설계된 프롬프트는 GPT가 보다 구체적이고 목적에 맞는 정보를 제공하도록 돕습니다.

    - 예를 들어, 사용자가 특정 주제에 대한 설명을 요청할 때 프롬프트 엔지니어링을 통해 더욱 상세하고 명확한 정보를 제공할 수 있습니다.

### 사용자 경험 개선

    - 프롬프트 엔지니어링은 사용자와 GPT 간의 상호 작용을 자연스럽게 만듭니다.

    - 사용자가 원하는 답변을 빠르고 정확하게 얻을 수 있도록 하여, 사용자는 GPT를 더욱 신뢰하게 되어 활용도가 높아집니다.

### 창의적인 콘텐츠 생성

    - 프롬프트 엔지니어링은 AI가 창의적인 콘텐츠를 생성하는 데 중요한 역할을 합니다.

    - 스토리텔링, 아이디어 발상, 예술 작품 생성 등에서 AI의 창의성을 극대화하기 위한 프롬프트 설계는 단순 정보 제공을 넘어 사용자에게 새로운 경험을 제공합니다.

### 특정 분야에 특화된 GPT 생성

    - 의료, 법률, 교육 등 특정 분야의 전문 지식과 정보를 제공하는 데 최적화된 프롬프트를 작성하면, 특정 분야에 특화된 GPT'를 만들어 전문 AI 비서로 활용할 수 있습니다.

    - 프롬프트 엔지니어링은 GPT'를 만들고 개선하는 과정에서 기본적이면서도 필수적인 요소로, 사용자와 GPT가 효과적인 대화를 할 수 있도록 다리 역할을 합니다.

- **챗GPT의 등장 이후**, 많은 AI 서비스들이 **”대화형 인공지능”** 으로 출시되기 시작

- 덕분에 이제 우리는 사람과 소통하듯 AI와 쉽게 대화

- **단, 쉽게 대화할 수 있다는 것이 곧 잘 대화할 수 있다는 의미는 X!!** 

- ChatGPT는 방대한 데이터를 바탕으로 학습해 매우 많은 정보 보유 > 매우 똑똑

- 챗GPT가 똑똑하다면, 왜 프롬프트 엔지니어링이 중요할까?

- 요청이나 질문이 명확하지 않다면 엉뚱한 답변 = Hollucination(환각) 발생 가능

- 효과적으로 AI와 대화하기 위해서는 AI와 소통하는 방법, 즉 **프롬프트 엔지니어링**을 이해할 필요

- AI를 잘 쓰려면, **AI에게 잘 물어보는 법** - 즉, 프롬프트 엔지니어링을 아는 게 중요하다는 거!

    - _“말 한마디로 천냥 빚을 갚는다”_

    - _"개떡같이 물으면 개떡같이 답한다!"_

    - **“만랩 능력치의 새로운 외부 컨설턴트에게 업무 지시하기"** 떠올리기

> [!NOTE] AI는 첫 출근한 외부 컨설턴트???
> 프롬프트 엔지니어링은 마치 회사에 외부로부터 첫 파견나온 막강 능력의 컨설턴트에게 '프로젝트 좀 해주세요'가 아니라, 명확한 목표와 배경, 필요한 자료, 단계별 지시를 통해 원하는 결과를 내도록 돕는 것과 동일한 셈

# **프롬프트 엔지니어링의 원칙**

- **명확한 목표 설정**: AI에게 수행할 작업을 명확하고 구체적으로 전달
-   _나쁜 예_: "광고 카피 하나 만들어줘."
-   _좋은 예_: "20대 대학생을 타겟으로 한 SNS 광고 카피 작성. 10자 이내, 재미있고 공감 가게."  

- **간결함 유지**: 불필요한 내용은 줄이고 핵심만 포함해 명확성 확보.
-   _나쁜 예_: "이 화장품의 모든 특징, 사용법, 성분, 장단점을 다 설명해줘."
-   _좋은 예_: "신제품 화장품의 장점을 3가지로 간결하게 설명."  

- **관련 데이터 제공**: AI가 작업을 수행하는 데 필요한 자료 제공 (예: 에러 메시지, 소스코드, 용어 설명 등)
-   _나쁜 예_: "아무 브랜드나 광고 슬로건 만들어줘."
-   _좋은 예_: "OO브랜드의 기존 광고 슬로건: 'OO하세요'. 이를 참고해 새로운 슬로건 작성."  

- **단계적 지시**: 복잡한 작업을 여러 단계로 나누어 지시
-   _나쁜 예_: "*** 브랜드 광고 전략 만들어줘."
-   _좋은 예_: 

    - 1단계: 브랜드의 주요 목표 설정

    - 2단계: 타겟층 설정

    - 3단계: 최종 광고 전략 작성."

- **이유와 설명 요구**: AI가 답을 제시할 때 그 이유나 과정까지 설명하도록 요청
-   _나쁜 예_: "이 PR 캠페인이 왜 좋은지 알려줘."
-   _좋은 예_: "이 PR 캠페인에 많은 사람들이 참여하고 소문이 나는 이유를 알려줘."  

- **상황과 배경 정보 포함**: 작업과 관련된 맥락, 배경 정보를 제공해 정확성과 일관성 향상
-   _나쁜 예_: "SNS 이벤트 제안해줘."
-   _좋은 예_: "MZ세대가 즐겨 찾는 브랜드를 배경으로 한 SNS 이벤트 아이디어 제안."  

- **피드백과 반복 개선**: AI의 응답을 평가하고 프롬프트를 반복적으로 수정해 개선.
-   _나쁜 예_: "이 카피 별론데, 다시 만들어줘."
-   _좋은 예_: 

    - 1차: 광고 카피가 너무 길다

    - 2차: 카피에 브랜드 핵심 메시지 추가

    - 3차: MZ세대가 공감할 키워드 추가

    - 4차: 밝고 경쾌한 톤으로 수정

# **프롬프트 엔지니어링 - 6 Steps

| •[TASK] - 명확한 목표 정의  •[CONTEXT] - 맥락/상황 전달  •[EXAMPLES] - 글의 스타일, 구조, 어조 등의 예시 보여주기 •[PERSONA] - 상황극, 역할극 시연  •[FORMAT] - 결과물 형식. 글머리 기호, 마크다운, 표 등  •[TONE] - Tone & Manner | ![Image](https://upload.cafenono.com/image/slashpagePost/20250401/005855_VoWJUxC294HgDKnWhx?q=80&s=1280x180&t=outside&f=webp) *Source : [https://maily.so/ai.lab/posts/37cde2ab](https://maily.so/ai.lab/posts/37cde2ab%5D(https://maily.so/ai.lab/posts/37cde2ab) |
| --- | --- |

[기타]

•꼬리에 꼬리를 물기 : Chain of Thought Prompting(CoT)

•역지사지: '너라면 멀 물어볼래?'

•새 음식은 새 그릇에 담기

### Task

- "만들어줘", "요약해줘", "분류해줘" 등과 같은 명확한 행동을 요구하는 동사 사용
-  - "3개월 다이어트 프로그램을 생성해줘"

- 복잡한 요청을 할 때는 여러 단계로 나누어 작성
-  - "뉴스레터에서 수집한 사용자 피드백을 분석하고, 개선점을 중심으로 상위 3가지를 요약한 후, 나머지는 중요도에 따라 분류해줘"

    - 복잡한 질문의 넘버링, 줄바꾸기 등도 효과적

![Image](https://upload.cafenono.com/image/slashpagePost/20250401/010320_AWgNNs08Nj5aeAonAz?q=80&s=1280x180&t=outside&f=webp)

### Context

- 프롬프트(명령)의 맥락(Context)을 설정

    - 사용자의 배경

    - 사용자의 목표

    - 사용자의 상황

- AI가 우리의 요구사항을 보다 깊이 이해하고 최적의 결과를 도출할 수 있게 해주는 것이 필요

![Image](https://upload.cafenono.com/image/slashpagePost/20250401/010533_IZyC2jO18pxDmzbLyM?q=80&s=1280x180&t=outside&f=webp)

### Examples

- AI가 직관적으로 이해할 수 있도록 예시(example)를 전달

    - "아래와 같은 형식으로 작성해줘"

    - "아래 예제를 참고해서 작성해줘"

    - "아래 분류 항목을 참고해줘"

- AI는 예시를 분석하여 유사한 문체, 논리 구조, 분량, 키워드 등을 학습

- 주어진 상황에 맞고, 더욱 품질이 향상된 결과물 생성

![Image](https://upload.cafenono.com/image/slashpagePost/20250401/010636_m9TWyz58mCgbhbXEOg?q=80&s=1280x180&t=outside&f=webp)

### Persona / Role

- AI에게 특정 전문성을 가진 페르소나 (Persona)를 설정

    - "넌 IT업계 경력 20년 차의 PR전문가야"

    - "넌 포춘 500개 기업의 채용 담당자야"

    - "넌 뛰어난 물리치료사야. 세계적으로 유명한 운동선수들도 너에게 치료받고 있어"

- 의사, 변호사, 과학자, 예술가 등과 같은 다양한 전문가들의 관점과 사고방식을 빌려 상황과 맥락을 이해하고, 결과물을 생성

![Image](https://upload.cafenono.com/image/slashpagePost/20250401/010722_8fiITfdU9svLKYKOUF?q=80&s=1280x180&t=outside&f=webp)

### Format

```
: 요청한 결과물의 레이아웃과 구조
```

- 표 형식 : 데이터를 행과 열로 정리하는 것으로, 비교나 분류에 용이

- 글머리 기호 : 주제를 간결하게 요약하고 서로 구분할 때 사용

- 이메일 형식 : 인사말, 본문, 맺음말 등 이메일 구성 요소를 갖추어 작성

- 코드 블록 : 프로그래밍 코드를 예쁘게 포매팅하는 데 사용

- 문단 : 내용을 단락 단위로 구분하여 작성

- **마크다운 : 제목, 볼드체, 이탤릭체 등을 활용해 가독성 확보**

![Image](https://upload.cafenono.com/image/slashpagePost/20250401/010842_bAWDurym3Nl3Lt17ue?q=80&s=1280x180&t=outside&f=webp)

### Tone

```
: 결과물의 어조와 스타일
```

- "캐주얼한 어조를 사용해줘": 격식 없고 편안한 말투를 원할 때

- "격식 있는 어조를 사용해줘": 정중하고 격식을 갖춘 표현이 필요할 때

- "재치 있는 결과물을 원해": 유머러스하고 엉뚱한 내용을 얻고 싶을 때

- "열정적인 모습을 보여줘": 특정 주제에 대한 관심과 열정이 느껴지길 바랄 때

- "냉소적인 어조로 들려줘": 비꼬는 듯한 어조로 현실을 비판적으로 바라보고 싶을 때

![Image](https://upload.cafenono.com/image/slashpagePost/20250401/010947_XfDp9EbpjIEglRvR4F?q=80&s=1280x180&t=outside&f=webp)

# **프롬프트 엔지니어링 기법

(ref. promptingguide.ai, GPTers Prompt Cheat Sheet)

### **Role Prompting**

`Role Prompting`은 언어 모델에게 _**특정한 역할**_을 부여하며 질의하는 방식

> 예를 들면, 사용자가 모델에게 "당신은 셰익스피어의 고문학자다. 그의 작품에 대해 설명해주세요."라고 요청하면, 언어 모델은 셰익스피어의 작품에 대해 전문가처럼 상세하게 설명하려고 노력합니다.

### **Zero-shot prompting**:

- **예시 없이 직접 명령**을 내려 모델이 작업 수행하도록 요청

- 모델이 사전 학습한 지식을 바탕으로 **추론하여 답변 생성**

- **Zero-shot이 잘 작동하지 않을 경우**, **Few-shot Prompting** 활용 권장

- Few-shot Prompting: **예제(샘플) 제공**을 통해 모델이 더 정확한 응답을 하도록 유도

> 예: _“이 문장의 감정을 분석해줘”_ → 모델이 자동으로 **긍정/부정/중립**으로 분류

### **Few-shot prompting**:

- 몇 가지 예시를 제공하여 모델의 이해도를 높임

- 모델이 주어진 예시를 기반으로 **맥락 내 학습(in-context learning) 가능**

- 단순한 프롬프트보다 더 **정확한 결과 도출** 가능

- 처음 접하는 태스크나 어려운 **태스크(요약, 추론, 코드 생성 등)에 효과적**

> 다음 뉴스 기사를 적절한 카테고리(정치, 경제, 스포츠, 기술)로 분류하세요. 
> 예제: 
> 기사: "정부는 내년도 예산안을 발표했습니다." 카테고리: 정치 
> 기사: "애플이 새로운 아이폰을 공개했습니다." 카테고리: 기술 
> 기사: "오늘 축구 경기에서 한국이 승리했습니다." 카테고리: 스포츠 
> 기사: "주식 시장이 급등하며 코스피 지수가 상승했습니다." 카테고리: 경제

### **Few-shot Prompting의 한계**

- 복잡한 추론(Reasoning) 작업에서는 한계 존재

- 더 많은 예시를 제공해도 해결되지 않는 문제 발생 가능

- 추론 단계가 필요한 작업에서는 별도의 기법이 필요

### **Few-shot Prompting의 보완 방법**

- **단계를 나눠 문제를 해결하도록 유도** (예: 논리적 사고 필요 시 문제를 단계별로 제시)

- **Chain-of-Thought (CoT) Prompting**을 활용하여 복잡한 문제 해결 가능

### **Chain of Thought Prompting(CoT)**

- _**연속적인 사고의 연쇄**_를 통해 언어 모델의 복잡한 추론 능력을 향상시키려는 접근법

- 즉, **복잡한 추론 능력 향상을 위해 중간 추론 단계를 포함하는 기법**

- 모델이 **단계별 논리를 따르도록 유도**하여 정답률 향상

- 특히 큰 모델에서 더욱 두드러지는 성능 향상을 보이며, 복잡한 추론 작업, 예를 들면 수학 문제나 상식 기반의 작업에서 더욱 효과적입니다.

- i.e. "Let's think step by step"

### **Zero-shot CoT Prompting**

- **"Let's think step by step" 문구 추가**만으로도 성능 향상

- 예제 없이도 모델이 논리적으로 문제를 해결할 가능성 증가

- 복잡한 문제에서도 높은 효과를 발휘

- **예제 없이 논리적 사고를 유도하는 방법으로 활용 가능**

> 문제: 철수가 사과를 3개 가지고 있습니다. 그는 친구에게 2개를 주고, 이후에 4개를 더 받았습니다. 철수가 현재 가지고 있는 사과의 개수는 몇 개인가요?

> 답을 단계별로 생각해보세요.

1. 철수는 처음에 사과 3개를 가지고 있음.

2. 친구에게 2개를 줌 → 남은 사과: 3 - 2 = 1

3. 이후에 4개를 더 받음 → 최종 사과 개수: 1 + 4 = 5

4. 따라서 정답은 5개.

### **Meta Prompting**

- 특정 내용보다 **문제 해결 방식(구조와 패턴)**을 강조하는 프롬프팅 기법

- 예제 대신 **문제 해결의 형식과 흐름을 제시**하여 답을 유도

- **규칙과 패턴을 배우는 것과 비슷**, 문제 자체를 분석하는 능력을 키움

> **예시:**

    - 일반 프롬프팅: `"이 문장을 요약해줘."`

    - Meta Prompting: `"문장의 핵심 내용을 뽑아, 10자 이내로 요약하는 형식을 따르시오."`

### **Self-Consistency Prompting**

- 여러 개의 답변을 생성한 후, **가장 많이 나온 답을 정답으로 선택**하는 방법

- 기존 **Chain-of-Thought (CoT) 방식보다 더 정확한 답을 도출**할 수 있음

- **특히 수학 문제, 논리 문제 해결에 효과적**

>  **예시:**

1. 같은 문제를 여러 번 풀어봄

2. 각각 다른 답이 나올 수 있음

3. 가장 많이 나온 답을 최종 정답으로 선택

### **프롬프트 설계 시 유용한 기법 정리

(Source : 박성혁)

| 기법 | 설명 | 예제 |
| --- | --- | --- |
| Zero-shot Prompting | 사전 예시 없이 질문 | "기후 변화란 무엇인가?" |
| Few-shot Prompting | 몇 가지 예제를 포함하여<br><br> 학습 유도 | "1+1=2, 2+2=4. <br><br>그렇다면 3+3은?" |
| Role Prompting | AI에게 특정 역할을 부여 | "너는 변호사야. <br><br>계약서 작성 방법을 설명해줘." |
| Chain-of-Thought (CoT) | 단계별 논리 전개 유도 | "347 × 29를 푸는 과정을 설명해줘." |
| Output Formatting | 원하는 출력 형식 지정 | "JSON 형식으로 답변해줘." |
| Context Setting | 문맥 제공하여 <br><br>정밀한 답변 유도 | "이전 대화 내용을 기반으로 <br><br>계속 진행해줘." |

[https://slashpage.com/lion/91kwev26gzne8my46jpg](https://slashpage.com/lion/91kwev26gzne8my46jpg)

- [https://slashpage.com/lion/91kwev26gpzv5my46jpg](https://slashpage.com/lion/91kwev26gpzv5my46jpg) 

[업로드-기본 프롬프트 - Lion's Class](https://slashpage.com/lion/91kwev26gpzv5my46jpg)

[업로드-기본 프롬프트 - Lion's Class](https://slashpage.com/lion/91kwev26gpzv5my46jpg)

For the site tree, see the [root Markdown](https://slashpage.com/lion.md).
