프롬프트 엔지니어링 알아보기
프롬프트 엔지니어링 알아보기 — #프롬프트엔지니어링 #개발자의도구들 *09.29에 진행한 내용 프롬프트 엔지니어링이란? 프롬프트는 생성형 ...
#프롬프트엔지니어링 #개발자의도구들
\*09.29에 진행한 내용
프롬프트 엔지니어링이란?
프롬프트는 생성형 AI에게하는 텍스트형 질의입니다.
- 프롬프트를 어떻게 작성하냐에 따라서 결과가 완전히 변합니다.
프롬프트 엔지니어링 구성요소
프롬프트 엔지니어링에는 다양한 구성요소가 존재한다. 무조건 이렇게 써야한다는 것 보다는 이렇게 작성하면 응답 정확도가 올라간다.
- 역할지정(Role): AI에게 특정한 역할 페르소나를 부여합니다..
- "인사 담당자 처럼 행동해줘"
- 맥락(Context): 작업을 수행하는 데 필요한 배경 정보를 제공합니다.
- "현재 나의 개발 스택은 ~이렇다. "
- 작업 명시(TASK): AI가 구체적으로 무엇을 해야하는지 명확하게 지시합니다.
- "회사 채용 공고를 보고 핵심 스택 키워드를 추출해줘"
- 입력(INPUT): 분석하거나 처리해야할 실제 데이터나 정보를 입력합니다.
- 회사 채용 공고를 스크랩해서 제시
- 출력(OUTPUT): 원하는 결과물의 형태를 지정합니다.
- "json 파일로 출력해줘, PDF 파일로 출력해줘"
- 예시(Example): 원하는 결과에 대한 구체적인 예시를 제시합니다.
- "주제, 필요성, 관련 키워드 - 글의 목차"
- 제약사항: 지켜야할 규칙이나 피해야할 것들을 명시합니다.
- "500자 내로 서술, 전문용어는 피해줘"
- Tone & Style:응답의 분위기와 문제를 지정
-
- "무서운 면접관 말투로", "유머러스 하게"
- 프롬프트 예시
- 구성요소를 다양하게 만들어서 직접 활용해도 무관!
- 정해진 규칙이 아닌 이렇게 하면 좋더라~ 느낌
프롬프트 엔지니어링 패턴들
구성요소를 잘 활용하여 다양한 프롬프트 패턴을 만들 수 있습니다.
📌System prompt
System Prompt는 AI 모델의 기본 행동 방식과 역할을 정의하는 최상위 지시 사항입니다.
- AI와의 대화가 시작되기 전에 미리 설정되는 AI의 정체성과 행동 규칙을 정의하는 프롬프트입니다.
- 모든 대화에 걸쳐 유지되며, 모든 프롬프트보다 우선순위를 가집니다. 실제 시스템에서는 일반 사용자에게 보여지지 않습니다. 역할, 규칙, 제한사항 등의 구성요소가 포함됩니다.
장점
- 한 번 정한 지침을 지속적으로 사용 가능하다.
- 반복 작업이 줄어듦
- tone/style에 효과적이다.
단점
- 유연성이 떨어진다.
- 창의력이 억제된다.
예시
[Role] AI-Agent 학습자를 위한 Python langchain 튜터
[Rule]
1. 코드는 항상 주석과 함께 설명한다.
2. 어려운 용어는 사용하지 않는다.
3. 예제 코드를 먼저 제시하고 설명한다.
[Constraints]
1. 문제를 낼때 정답을 바로 제시하지 말고 학습자가 스스로 생각하도록 유도
2. 스스로 생성한 코드는 예외 및 에러 상황에 대한 가능성을 사용자에게 제시하기
📌Few-shot learning
프롬프트 내에 몇 가지 예시를 제공하여 원하는 작업을 수행하게 하는 기법입니다.
- In-Context Learning: 모델을 직접 변경할 필요 없습니다.
- 예시가 없는 경우 Zero-Shot이라고 불립니다.
장점
- 모호함을 줄인다.
- 분류 작업에 탁월하다.
- 긴 예시가 필요없다.
단점
- 예시가 정확해야 한다.
- 잘못된 예시 = 잘못된 결과
- Token 소비가 증가
- 예시 입력 때문에 창의적인 작업에 부적합
예시
[task] 리뷰를 읽고 감정을 분석해줘
[example]
Review: "The product broke after one day. Terrible quality."
Sentiment: Negative
Review: "Absolutely love it! Best purchase this year."
Sentiment: Positive
📌Chain-of-Thought
복잡한 문제를 해결할 때 최종 답변만 제시하는 것이 아니라, 단계적인 추론 과정을 명시적으로 표현하도록 유도하는 프롬프팅 기법입니다.
장점
- 복잡한 문제에 대한 정답 정확도가 크게 향상
- 추론 과정을 볼 수 있다.
- 모델의 정확성 판단이 더 간단해짐
- 수학, 논리학과 같은 문제에 적합
단점
- 체인이 길어짐에 따라 토큰 소모가 심해진다.
- 간단한 작업에는 적합하지 않다.
- 응답 속도가 느려진다.
- 중간 단계 추론이 에러가 나면 전체 과정이 에러
예시
질문: 카페에서 커피 3잔(각 4,500원)과 케이크 2개(각 6,000원)를 샀습니다.
10% 할인을 받았다면 최종 금액은? 단계별로 계산해서 보여줘
답변: 단계별로 계산해보겠습니다.
1단계: 커피 총 금액 계산
3잔 × 4,500원 = 13,500원
2단계: 케이크 총 금액 계산
2개 × 6,000원 = 12,000원
3단계: 할인 전 총액
13,500원 + 12,000원 = 25,500원
4단계: 10% 할인 금액
25,500원 × 0.1 = 2,550원
5단계: 최종 금액
25,500원 - 2,550원 = 23,850원
따라서 최종 금액은 23,850원입니다.
질문: [복잡한 문제]
"Let's think step by step" 또는 "단계별로 생각해봅시다"
📌Chain-of-Thought
Reasoning(추론)과 Acting(행동)을 결합한 프롬프팅 패턴입니다.
AI가 생각하고, 행동하고, 관찰하는 사이클을 반복하여 복잡한 작업을 수행하도록 하는 기법입니다.
전통적인 CoT는 추론만 하지만, ReAct는
- Thought: 현재 상황 분석 및 다음 행동 계획
- Action: 구체적인 도구 사용 또는 작업 수행
- Observation: 행동의 결과 확인
이 3단계를 반복합니다.
장점
- API와 연동하여 다양한 작업 수행
- 실시간 정보와 결합 가능
- 실제 데이터를 통해 할루시네이션을 제거
단점
- 외부 도구와 통합 설정 필요
- 실행과 디버깅이 더 어렵다
- 지연시간이 증대
- 사용하는 도구가 많아서
예시
Question: [사용자 질문]
Thought 1: [현재 상황 분석, 무엇이 필요한지 판단]
Action 1: [구체적인 행동 - 도구 사용, 검색 등]
Observation 1: [행동의 결과]
Thought 2: [결과 분석, 다음 단계 결정]
Action 2: [다음 행동]
Observation 2: [행동의 결과]
...
Thought N: [충분한 정보 확보, 최종 답변 준비]
Action N: Finish[최종 답변]
Question: 2023년 한국의 GDP는 얼마이고, 2022년 대비 몇 퍼센트 증가했나요?
Thought 1: 2023년 한국 GDP를 먼저 찾아야 합니다.
Action 1: Search[2023 한국 GDP]
Observation 1: 2023년 한국의 GDP는 약 1조 7,130억 달러입니다.
Thought 2: 이제 2022년 한국 GDP도 필요합니다.
Action 2: Search[2022 한국 GDP]
Observation 2: 2022년 한국의 GDP는 약 1조 6,730억 달러입니다.
Thought 3: 이제 증가율을 계산할 수 있습니다.
Action 3: Calculate[(1,713 - 1,673) / 1,673 * 100]
Observation 3: 약 2.39%
Thought 4: 필요한 정보를 모두 확보했으므로 답변할 수 있습니다.
Action 4: Finish[2023년 한국 GDP는 약 1조 7,130억 달러이며,
2022년 대비 약 2.39% 증가했습니다.]
예시 2: 코드 디버깅
📌Self-Consistency
복잡한 추론 문제에서 AI의 정확도를 높이기 위한 기법입니다. 같은 문제를 여러번 다른 방식으로 풀어보고, 가장 많이 나온 답을 최종답으로 선택합니다.
장점
- 정확도가 상승
- 할루시네이션 제거
- 신뢰도 증가
단점
- N번의 추론당 토큰이 N배 증가
- 훨씬 느리고, 비싸다.
- 간단한 문제에 적합하지 않다.
- 추론 path에서 에러 발생시 정확도가 떨어짐
예시
Question: 식당에 23명이 있었습니다. 14명이 나가고 8명이 들어왔습니다.
이제 몇 명인가요?
=== 추론 경로 1 ===
먼저 나간 사람 계산: 23 - 14 = 9명
그 다음 들어온 사람 더하기: 9 + 8 = 17명
답: 17명
=== 추론 경로 2 ===
변화량 계산: -14 + 8 = -6명
최종: 23 - 6 = 17명
답: 17명
=== 추론 경로 3 ===
순서대로:
- 처음: 23명
- 14명 나감: 23 - 14 = 9명
- 8명 들어옴: 9 + 8 = 17명
답: 17명











