# 프롬프트 엔지니어링

## AI 프롬프트와 프롬프트 엔지니어링

### AI 프롬프트란?

```{image} figs/image-2-1-1.jpeg
:width: 60%
:align: center
```

- 정의
  - 사람과 대규모 언어 모델 간의 상호 작용 방식
  - 모델이 의도된 출력을 생성하도록 하는 입력 데이터
- 특징
  - 질문, 텍스트, 코드 조각 또는 예시 등 다양한 형태 가능
  - 프롬프트의 구성에 따라 여러 출력을 제공할 수 있음
  - 충분한 정보를 제공하여 모델이 관련성 있는 출력을 생성하도록 함
- 역할
  - 생성형 AI 응용 프로그램에 입력을 제공하는 플레이스홀더 역할
  - 챗봇과 같은 AI 애플리케이션에 사용됨

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

```{image} figs/image-2-1-2.jpeg
:width: 60%
:align: center
```

- 정의
  - 생성형 AI 시스템이 특정 출력을 생성하도록 하는 프롬프트의 품질에 초점을 맞춤
  - 프롬프트를 통해 AI 모델이 다양한 쿼리에 효과적으로 응답하도록 돕는 과정
- 중요성
  - 좋은 프롬프트는 좋은 결과를 가져옴
  - 다양한 입력 데이터로부터 학습하고, 편향을 최소화하며, 정확한 응답을 생성하기 위해 필요
- 역할
  - AI 모델이 언어뿐만 아니라 쿼리의 뉘앙스와 의도를 이해하도록 도움
  - 고품질, 철저하고 지식이 풍부한 프롬프트는 AI 생성 콘텐츠의 질에 영향을 줌
- 접근 방법
  - 원시 쿼리와 의미 있는 AI 생성 응답 간의 간극을 해소하기 위해 세심한 프롬프트 생성이 필요
  - 효과적인 프롬프트를 미세 조정함으로써 출력의 질과 관련성을 크게 최적화할 수 있음
- 결과
  - 수동 검토 및 사후 생성 편집의 필요성을 줄임
  - 원하는 결과를 달성하기 위한 시간과 노력을 절약함

## AI 프롬프트의 이점과 중요성

### 응답의 정확성

```{image} figs/image-2-2-1.jpeg
:width: 60%
:align: center
```

- **목적**: 사용자의 의도를 AI 모델에 정확히 전달하여 적절한 응답 생성
- **사용자 의도 전달**: 효과적인 프롬프트를 통해 사용자 의도 명확히 전달
- **예시**: 주제 요약 요청 시, 프롬프트가 주제의 핵심을 정확히 전달하여 모델이 관련 요약 생성
- **결과**: 사용자가 원하는 정보에 대한 정확하고 유용한 응답 제공

### 성능 향상

```{image} figs/image-2-2-2.jpeg
:width: 60%
:align: center
```

- **이점**: 시간과 자원을 절약하여 사용자 작업의 효율성과 성능을 향상
- **시간 및 자원 절약**: 프롬프트를 통한 작업 자동화로 처리 시간 단축
- **예시**: 데이터 분석 자동화를 통한 분석 과정의 신속한 완료
- **효과**: 사용자의 작업량 감소 및 출력 증가

### 사용자 경험 개선

```{image} figs/image-2-2-3.jpeg
:width: 60%
:align: center
```

- **목표**: 사용자가 AI 모델로부터 원하는 정보를 쉽게 추출할 수 있게 함
- **정보 쉽게 추출**: 사용자 친화적인 프롬프트 구성
- **예시**: 특정 스타일의 이미지 생성 요청 시, 세부적인 프롬프트 제공으로 원하는 결과 도출
- **이점**: 사용자 경험 및 AI 시스템의 가치 향상

### 의사 결정 강화

```{image} figs/image-2-2-4.jpeg
:width: 60%
:align: center
```

- **효과**: 사용자가 신속하고 정보에 기반한 결정을 내릴 수 있도록 지원
- **정보 제공**: 시기적절하고 정확한 정보 제공으로 의사 결정 지원
- **예시**: 시장 조사 분석 시 AI 프롬프트를 통해 신속한 데이터 수집 및 분석
- **이점**: 개인 및 조직의 의사 결정 과정에서의 생산성 향상

### 생산성 향상

```{image} figs/image-2-4-1.jpeg
:width: 60%
:align: center
```

- **명시적 AI 프롬프트**: 사용자가 질문에 대한 답을 신속하고 명확하게 얻을 수 있게 함
- **정보 수집 가속화**: 처음부터 답변을 작성하는 것보다 정보 수집 과정을 가속화
- **대규모 데이터베이스에서 데이터 검색**: 효과적인 프롬프트를 통해 대규모 데이터베이스에서 데이터를 효율적으로 검색 가능

### 고객 서비스 개선

```{image} figs/image-2-4-2.jpeg
:width: 60%
:align: center
```

- **AI 챗봇의 활용**: AI 챗봇을 구성하여 자주 묻는 질문에 응답하고 기본 지원을 제공하며 주문 처리를 가속화
- **고객 만족도 향상**: 고객 문의에 대한 신속하고 정확한 응답을 통해 고객 상호 작용을 간소화하고 고객 만족도를 높임

### 맞춤화

```{image} figs/image-2-4-3.jpeg
:width: 60%
:align: center
```

- **프롬프트 프로그래밍 및 맞춤 설정**: 작가가 선호하는 톤, 스타일, 주제에 맞게 프롬프트를 맞춤 설정하여 특정 요구에 적합한 독특한 콘텐츠 생성
- **개인화된 사용자 경험 제공**: 사용자가 AI 모델로부터 맞춤형 콘텐츠를 얻을 수 있게 함

### 학습 지원

```{image} figs/image-2-4-4.jpeg
:width: 60%
:align: center
```

- **교육용 프롬프트 사용**: 교사가 각 학생의 사용 사례와 요구 사항에 맞게 교육 콘텐츠를 조정
- **자동 평가 및 신속한 피드백 제공**: 프롬프트를 활용하여 실시간 평가 및 피드백을 학생에게 제공

### 시간 절약

```{image} figs/image-2-4-5.jpeg
:width: 60%
:align: center
```

- **인간 언어와 AI 모델 간 통신 간소화**: 반복적인 설명을 줄이고 대규모 데이터 세트에서 신속한 정보 검색을 가능하게 함
- **수동 데이터 마이닝 절약**: 수동 데이터 마이닝에 드는 시간을 절약하고 생산성을 향상

## 프롬프트 엔지니어가 필요로 하는 기술

### 대규모 언어 모델에 대한 이해

```{image} figs/image-2-5-1.jpeg
:width: 60%
:align: center
```

- **언어 모델의 작동 원리**: GPT-3, GPT-4, Google Gemini와 같은 모델의 기본 구조와 기능에 대한 이해
- **언어별 훈련 모델 이해**: 다양한 언어로 훈련된 모델의 특성과 활용 방법 파악
- **모델 출력 최적화**: 주어진 작업에 가장 적합한 모델을 선택하고 조정하는 방법 이해
- **글로벌 시장 적용**: 다양한 언어와 문화적 맥락을 고려한 모델 선택과 적용 능력
- **업데이트 및 발전 추적**: AI 기술의 최신 동향 및 발전 사항을 지속적으로 학습하고 적용

### 강한 커뮤니케이션 능력

```{image} figs/image-2-5-2.jpeg
:width: 60%
:align: center
```

- **기술적 개념의 명확한 전달**: 복잡한 기술적 내용을 쉽게 설명할 수 있는 능력
- **언어 뉘앙스와 맥락 이해**: 효과적인 프롬프트 작성을 위한 언어의 세밀한 이해
- **이해관계자와의 소통**: 프로젝트 목표와 요구 사항을 명확히 전달하고 조율하는 능력
- **피드백 수집과 적용**: 사용자 및 다른 개발자로부터의 피드백을 수집하고 개선 사항 적용
- **문서화와 지식 공유**: 작업 과정과 결과를 문서화하고 팀 내외부와 공유하는 능력

### 프로그래밍 전문 지식

```{image} figs/image-2-5-3.jpeg
:width: 60%
:align: center
```

- **코딩 기초와 원리**: 프로그래밍의 기본 원리와 구조적 사고 방식 이해
- **Python 등 언어 숙련**: 데이터 과학과 AI 분야에서 널리 사용되는 Python 등 언어에 대한 숙련도
- **데이터 구조와 알고리즘**: 효율적인 프로그래밍을 위한 데이터 구조와 알고리즘에 대한 이해
- **AI 관련 라이브러리와 도구 활용**: TensorFlow, PyTorch 등 AI 개발에 필요한 라이브러리와 도구 활용 능력
- **버그 수정과 코드 최적화**: 코드의 오류를 식별하고 수정하며, 성능을 최적화하는 기술

### 창의성과 기술적 평가

```{image} figs/image-2-5-4.jpeg
:width: 60%
:align: center
```

- **창의적 문제 해결**: 기존의 접근 방식을 넘어서는 창의적인 해결책 모색
- **기술적 평가와 리스크 관리**: 새로운 기술의 장단점을 평가하고 리스크를 관리하는 능력
- **예술적 감각과 창의적 표현**: 이미지 생성 등 창의적 작업에 필요한 예술적 감각과 표현력
- **학습과 적응 능력**: 새로운 기술과 도구를 빠르게 학습하고 적응하는 유연성
- **팀워크와 협업**: 다양한 배경을 가진 팀원들과의 효과적인 협업과 의사소통 능력

## AI 프롬프트 생성 방법

### 목표 식별

```{image} figs/image-2-6-1.jpeg
:width: 60%
:align: center
```

- **목적 파악**: 프롬프트 작성 전, 원하는 출력의 목적을 명확히 해야 합니다
- **구체적 예시**: 블로그 포스트 생성 또는 특정 특징을 가진 고양이 이미지 생성 등의 목표 설정

### 구체성 및 맥락 제공

```{image} figs/image-2-6-2.jpeg
:width: 60%
:align: center
```

- **명확한 지시**: 특징, 모양, 색상 등 구체적인 지시 포함
- **배경 및 맥뽀 정보 포함**: 최상의 결과를 얻기 위한 배경과 맥락 정보 제공
- **예시**: "경치 생성"보다 "눈 덮인 산, 조용한 호수, 따스한 노을" 등 구체적인 설명 포함

### 키워드 및 구문 포함

```{image} figs/image-2-6-3.jpeg
:width: 60%
:align: center
```

- **SEO 목적**: 검색 엔진 최적화와 용어 선호도 전달에 유용
- **커뮤니케이션 용이성**: 원하는 용어나 표현을 명확하게 전달

### 프롬프트의 길이

```{image} figs/image-2-6-4.jpeg
:width: 60%
:align: center
```

- **간결함 유지**: 플랫폼에 따라 이상적인 프롬프트 길이가 달라질 수 있음
- **적절한 단어 수**: 최소 3~7 단어로 구성된 간결한 프롬프트 권장

### 상충되는 용어 피하기

```{image} figs/image-2-6-5.jpeg
:width: 60%
:align: center
```

- **모델 혼란 방지**: "추상적"과 "현실적"과 같이 상충되는 용어 사용 피하기

### 개방형 질문 사용

```{image} figs/image-2-6-6.jpeg
:width: 60%
:align: center
```

- **넓은 범위의 출력**: "예" 또는 "아니오"로 답할 수 있는 질문보다 개방형 질문이 더 넓은 범위의 출력을 생성
- **예시**: "커피가 건강에 좋지 않은가요?" 대신 "커피 소비의 장단점은 무엇인가요?"와 같이 질문

### AI 도구 활용

```{image} figs/image-2-6-7.jpeg
:width: 60%
:align: center
```

- **프롬프트 및 콘텐츠 생성**: ChatGPT, DALL-E, Midjourney와 같은 플랫폼을 통해 맞춤형 프롬프트 및 고품질 AI 생성 콘텐츠 제작 가능

## 고급 프롬프트 기법

### Zero-shot과 Few-shot Prompting

```{image} figs/image-2-8-1.jpeg
:width: 60%
:align: center
```

- **Zero-shot Prompting**

  - **개념**: 모델이 사전에 본 적 없는 작업을 수행하는 기법
  - **적용**: 기본 지식을 활용하여 새로운 문제 해결
  - **장점**: 광범위한 문제에 대한 유연성 제공
  - **한계**: 때때로 예상치 못한 결과를 초래할 수 있음
  - **사용 예**: 감정 분석, 주제 분류 등 다양한 NLP 작업

- **Few-shot Prompting**
  - **개념**: 소수의 예제를 통해 모델이 작업을 학습하는 기법
  - **적용**: 제한된 데이터로부터 학습 효율성 증대
  - **장점**: 적은 양의 데이터로도 높은 성능 달성 가능
  - **한계**: 예제의 질에 따라 결과가 크게 달라질 수 있음
  - **사용 예**: 문장 완성, 질문 답변 생성 등

### Chain of Thought (CoT) Prompting

```{image} figs/image-2-8-2.jpeg
:width: 60%
:align: center
```

- **개념**: 모델이 복잡한 문제를 단계별로 해결하도록 유도하는 기법
- **적용 방법**: 문제의 각 단계를 명시적으로 모델에게 요청
- **장점**: 모델의 추론 과정이 명확해지고, 결과의 이해도가 향상됨
- **한계**: 모든 문제에 적용 가능한 것은 아님
- **사용 예**: 수학 문제 해결, 복잡한 논리 문제 해석 등

### Least to Most Prompting

```{image} figs/image-2-8-3.jpeg
:width: 60%
:align: center
```

- **개념**: 문제를 간단한 부분에서 시작하여 점차 복잡한 부분으로 이동하는 기법
- **적용 방법**: 문제를 소규모 단위로 분해하고 점진적으로 해결
- **장점**: 점진적 학습을 통한 이해도 향상
- **한계**: 시간이 더 소요될 수 있음
- **사용 예**: 과학 문제 해석, 프로그래밍 작업 분석 등

### Generated Knowledge Prompting

```{image} figs/image-2-8-4.jpeg
:width: 60%
:align: center
```

- **개념**: 모델이 생성한 정보를 추가적인 학습이나 문제 해결에 활용하는 기법
- **적용 방법**: 초기 생성물을 다른 질문에 답변하거나 새로운 문제 해결에 사용
- **장점**: 모델이 생성한 지식의 활용도 증대
- **한계**: 잘못된 정보의 전파 가능성
- **사용 예**: 역사적 사건에 대한 설명 후 추가 질문 답변, 창작 스토리 확장 등

## 프롬프트 성능 평가

### 프롬프트 성능 평가 방법 개요

```{image} figs/image-2-7-1.jpeg
:width: 60%
:align: center
```

- **목적**: AI 모델 출력의 기대치 충족 여부 판단
- **중요성**: 출력의 질과 직접적인 관련성
- **평가 필요성**: 프롬프트의 효과와 효율성 확인
- **평가 접근법**: 객관적 지표와 주관적 지표의 활용
- **성능 개선 목표**: 최적의 AI 모델 출력 도출

### 객관적 지표

```{image} figs/image-2-7-2.jpeg
:width: 60%
:align: center
```

- **정의와 역할**: 측정 가능한 수치로 표현되는 평가 지표
- **예시**: BLEU 점수, 정확도, 일치도 측정
- **평가 방법**: 기대 출력과 AI 모델 출력의 비교 분석
- **적용 분야**: 기계 번역, 요약, 텍스트 생성 등
- **평가의 한계**: 모든 측면을 포괄하지 않을 수 있음

### 주관적 지표

```{image} figs/image-2-7-3.jpeg
:width: 60%
:align: center
```

- **정의와 중요성**: 개인의 판단에 기반한 평가 지표
- **평가 방법**: 사용자의 직접적인 응답과 피드백 수집
- **적용 예시**: 자연스러움, 유용성, 적합성 평가
- **평가 다양성**: 개인별 의견 차이 인정
- **평가의 가치**: 사용자 경험과 만족도 측정

### 평가 기법

```{image} figs/image-2-7-4.jpeg
:width: 60%
:align: center
```

- **실험 설계**: 명확한 비교를 위한 실험 구성
- **데이터 수집**: 사용자 반응, 선호도 조사
- **A/B 테스트**: 두 가지 버전의 출력 비교
- **결과 분석**: 성능 지표에 따른 분석과 해석
- **피드백 반영**: 사용자 의견을 통한 지속적 개선
