Agent Mentor Learn
프롬프트 엔지니어링 기초: 효과적인 지시문 쓰는 법 · 6 / 6강

레슨 6: 작업 유형별 프롬프트 전략

학습 목표:

  • 코드 생성 작업의 프롬프트 모범 사례 익히기
  • 문서 작성과 요약에 효과적인 전략 배우기
  • 데이터 분석과 추출을 위한 프롬프트 기법 이해하기

전제: << 05 프롬프트 디버깅과 개선

작업이 다르면 프롬프트 전략도 달라야 한다

프롬프트의 기본 구조, few-shot, CoT, 디버깅까지 배웠습니다. 여기까지는 두루 통하는 기술입니다. 하지만 작업 종류마다 고유한 버릇과 함정이 있고, 그에 맞춘 전략이 필요합니다.

코드 생성에는 명확한 입력과 출력, 엣지 케이스가 필요하고, 문서 작성에는 독자와 어조를 정해야 하며, 데이터 추출에는 결측값 처리와 일관된 형식이 필요합니다. 이 레슨에서는 자주 마주치는 세 가지 작업 유형에 대한 구체적인 기법을 살펴봅니다.1

작업 유형 1: 코드 생성

코드 생성은 사람들이 AI를 쓰는 가장 흔한 방식 중 하나입니다. 핵심은 단순합니다. 요구사항을 분명히 적으면 AI는 실제로 쓸 수 있는 코드를 써 줍니다.1

코드 생성 프롬프트의 여섯 요소

좋은 코드 생성 프롬프트에는 다음이 담겨야 합니다:1

  1. 언어와 버전: Python 3.10, TypeScript 5.0
  2. 함수 시그니처: 입력 파라미터 타입, 반환 타입
  3. 핵심 로직: 함수가 무엇을 해야 하는가
  4. 엣지 케이스: 빈 입력과 오류 상황을 어떻게 처리할 것인가 — 이것이 방어적 프로그래밍입니다. 입력이 유효하지 않을 수 있다고 가정하고 어떻게 대응할지 미리 정해 두는 것입니다
  5. 코드 스타일: 주석, 타입 힌트, 에러 처리
  6. 의존성 제한: 표준 라이브러리만 쓸 것인지, 어떤 서드파티 라이브러리를 허용할 것인지

비교: 모호한 코드 프롬프트 vs 명확한 코드 프롬프트

모호한 프롬프트:

사용자 데이터를 처리하는 파이썬 함수를 작성해 줘

AI는 추측할 수밖에 없습니다. 어떤 데이터를? 어떻게 처리하라고?

명확한 프롬프트:

다음 요구사항에 맞는 Python 3.10 함수를 작성해 줘:
동작:- 입력: 딕셔너리 리스트, 각 딕셔너리는 name (str), age (int), email (str)을 가짐- 출력: age가 18 미만인 사용자를 제외하고, 남은 사용자의 email을 반환(중복 제거)
요구사항:- 타입 힌트 포함- 누락 필드 처리(딕셔너리에 age나 email이 없으면 해당 사용자는 건너뜀)- 파이썬 표준 라이브러리만 사용- 사용법을 설명하는 docstring 포함
예시:입력: [{"name": "Alice", "age": 20, "email": "a@example.com"},      {"name": "Bob", "age": 15, "email": "b@example.com"},      {"name": "Charlie", "age": 25, "email": "a@example.com"}]출력: ["a@example.com"]

이 프롬프트는 입력, 출력, 엣지 케이스, 코드 스타일을 못박아 두었기 때문에 AI가 한 번에 쓸 만한 코드를 써 줍니다.

여기에는 근거가 있습니다. "prompts with explicit specifications reduced the need for back-and-forth refinements by 68%"(명시적인 명세가 담긴 프롬프트는 주고받는 수정 요청의 필요를 68% 줄였습니다)1 — 세부 사항을 분명히 적을수록 바로 쓸 수 있는 코드를 받을 가능성이 훨씬 커집니다.

코드 생성 모범 사례

사례 1: 입력과 출력의 데이터 구조를 분명히 적기

'데이터를 처리해 줘'라고 하지 마세요. '입력은 List[Dict[str, Any]], 출력은 Dict[str, int]'라고 하세요.

사례 2: 예시로 엣지 케이스를 분명히 하기

다음 특수 상황을 처리해 줘:- 빈 리스트 입력 → 빈 리스트 반환- None 값 → 건너뜀- 중복 값 → 처음 등장한 것만 유지

사례 3: 코드 스타일 지정하기

코드 스타일 요구사항:- 타입 힌트 사용- docstring 포함(Google 스타일)- 과한 주석 금지(뻔한 코드를 설명하지 말 것)- 성능보다 가독성 우선

사례 4: 원하지 않는 것을 말하기

하지 말 것:- 전역 변수 사용 금지- 외부 의존성 추가 금지(표준 라이브러리만)- 테스트 코드 작성 금지(메인 함수만)

코드 리뷰 프롬프트

AI에게 코드 리뷰를 맡길 때는 리뷰 차원을 명시적으로 지목하세요:

아래 파이썬 코드를 리뷰해 줘. 다음에 집중해:
1. 정확성: 로직 오류, 엣지 케이스 처리2. 성능: 시간 복잡도 분석, 가능한 병목3. 보안: SQL 인젝션, XSS, 입력 검증
코드 스타일과 네이밍에는 언급하지 마(이미 lint 검사를 통과함).
발견한 문제마다 다음을 적어 줘:- 위치(줄 번호 또는 코드 조각)- 문제 유형(버그 / 성능 / 보안)- 구체적인 영향(어떤 조건에서 깨지는지)- 수정 제안
코드:[코드 붙여넣기]

리뷰 차원을 지목하면 AI가 중요하지 않은 세부 사항에 시간을 쓰지 않습니다.

작업 유형 2: 문서 작성과 요약

문서 작업은 범위가 넓습니다. 기술 문서, 회의록, 글 요약, 보고서 생성이 모두 여기에 들어갑니다.

문서 작성의 핵심 요소

  1. 대상 독자: 기술 독자인가 비기술 독자인가
  2. 목적: 사용법을 설명하려는 것인가, 의사결정권자를 설득하려는 것인가
  3. 어조와 문체: 격식체인가 편안한 말투인가, 상세한가 간결한가
  4. 구조 템플릿: 어떤 섹션으로 내용을 조직할 것인가

비교: 문서 요약 프롬프트

모호한 프롬프트:

이 기술 문서를 요약해 줘

명확한 프롬프트:

당신은 복잡한 기술 문서를 누구나 따라올 수 있는 요약으로 바꾸는 데능한 테크니컬 라이터입니다.
작업: 아래 API 문서를 프론트엔드 개발자용 퀵스타트 가이드로 요약해 줘.
독자: JavaScript는 알지만 이 API는 한 번도 써 본 적 없는 프론트엔드 엔지니어.
출력 형식:1. 이 API가 무엇을 하는지 한 문장으로2. 가장 많이 쓰는 기능 세 가지(각각: 용도 + 코드 예시)3. 완전한 사용 시나리오 예시 하나4. 흔한 실수와 해결책(2~3개)
어조: 직설적이고 실용적으로, 마케팅 어투 없이.
분량: 800단어 이내.
원본 문서:[문서 붙여넣기]

이 프롬프트는 독자(프론트엔드 엔지니어), 목적(퀵스타트), 구조(4부), 어조(실용적)를 못박았습니다.

문서 작성 모범 사례

사례 1: 독자의 배경을 분명히 적기

독자:- 역할: 프로덕트 매니저- 기술 수준: 코딩은 하지 않지만 기본적인 소프트웨어 아키텍처 개념은 이해함- 읽는 목적: 이 방식을 채택할지 결정하기 위해

사례 2: 구조 템플릿 제공하기

다음과 같이 구성해 줘:
## 배경이 방식이 왜 필요한가(1문단)
## 대안 비교| 방안 | 장점 | 단점 | 비용 ||------|------|------|------|| ...  | ...  | ...  | ...  |
## 권장안어느 방안을 택할지와 그 이유(2~3문단)
## 리스크이 방식의 주요 리스크와 대응 방법(목록)

사례 3: 상세함의 수준 통제하기

상세함 수준:- 각 항목을 1~2문장으로 설명하고 늘어놓지 말 것- 구현 세부 사항은 건너뛰고 비즈니스 영향만 다룰 것- 구체적인 코드나 기술 용어는 인용하지 말 것

회의록 프롬프트

당신은 회의 녹음이나 녹취록에서 핵심을 뽑아내는 데 능한 프로젝트어시스턴트입니다.
작업: 아래 녹취록으로 회의록을 작성해 줘.
출력 구조:1. 회의 정보   - 날짜: YYYY-MM-DD   - 참석자: [목록]   - 주제: [한 문장]
2. 논의 내용(우선순위 순)   각 항목마다:   - 문제 서술(1문장)   - 논의 포인트(2~3개)   - 결정 사항(명확한 결론. 결론이 나지 않았으면 '보류'라고 적을 것)
3. 액션 아이템   각 항목마다:   - 작업 설명(동사로 시작, 실행 가능하게)   - 담당자   - 마감일
제약:- 명확한 결론이 있는 논의만 기록하고 잡담은 건너뛸 것- 모든 액션 아이템은 확인 가능해야 함(명확한 산출물이 있을 것)- 전체 분량 500단어 이내
녹취록:[녹취록 붙여넣기]

작업 유형 3: 데이터 분석과 추출

데이터 분석에는 텍스트에서 구조화된 정보를 뽑아내는 일, 분류, 필터링, 집계가 들어갑니다.

데이터 추출의 핵심 요소

믿을 만한 데이터 추출 프롬프트는 네 가지를 미리 못박아 둡니다:

  1. 필드 정의: 각 필드가 무엇을 뜻하고 허용되는 값의 범위는 무엇인가
  2. 결측값 처리: 필드를 찾을 수 없을 때 어떻게 할 것인가
  3. 출력 형식: JSON, CSV, 표
  4. 데이터 검증: 추출한 데이터를 검사할 필요가 있는가

비교: 데이터 추출 프롬프트

모호한 프롬프트:

이 채용 공고에서 핵심 정보를 추출해 줘

명확한 프롬프트:

채용 공고에서 다음 필드를 추출해 JSON으로 출력해 줘.
필드 정의:- position (string): 직무명- location (string): 근무지(시 + 구, 있을 경우)- experience (string): 요구 경력(원문 표현 유지, 예: '3-5년', '무관')- salary (string): 급여 범위(단위 유지, 예: '월 500-700만원', '협의')- company (string): 회사명
결측값 처리:- 원문에 없는 필드는 null로 출력- 없는 정보를 추측하거나 유추하지 말 것
예시 1:입력: Java 엔지니어 급구, 서울 강남구, 경력 3년 이상, 월 500-700만원, XX테크출력:{  "position": "Java 엔지니어",  "location": "서울 강남구",  "experience": "3년 이상",  "salary": "월 500-700만원",  "company": "XX테크"}
예시 2:입력: 프론트엔드 개발자, 원격 근무, 급여 협의출력:{  "position": "프론트엔드 개발자",  "location": "원격 근무",  "experience": null,  "salary": "협의",  "company": null}
이제 처리해 줘:[채용 공고 붙여넣기]

예시가 완전한 경우와 결측 경우를 모두 다루기 때문에, AI는 찾지 못한 값을 지어내는 대신 null을 출력해야 한다는 것을 알게 됩니다 — 이렇게 자신 있게 사실을 꾸며내는 습성을 할루시네이션이라고 부릅니다.

데이터 추출 모범 사례

사례 1: 각 필드의 허용 값을 분명히 적기

필드: sentiment허용 값: positive / negative / neutral 중 정확히 하나출력 금지: good, upbeat, favorable 같은 그 밖의 단어

사례 2: few-shot으로 형식 표준화하기

구조화된 데이터를 추출할 때는 글로 설명하는 것보다 예시 2~3개가 더 잘 통합니다(레슨 3의 few-shot 기법입니다).

사례 3: 엣지 케이스 처리 방법 말하기

특수 상황:- 한 문단에 감정이 섞여 있으면('제품은 좋은데 너무 비싸요') → 'neutral'로 분류- 순수한 질문이면('이거 어떻게 동작하나요?') → 'neutral'로 분류- 텍스트가 너무 짧으면(3단어 미만) → null 출력

사례 4: 데이터 검증 추가하기

검증 규칙:- salary 필드는 숫자를 포함해야 함- experience가 null이 아니면 '년' 또는 '무관'을 포함해야 함- location은 빈 문자열일 수 없음 — 값이 있거나 null이거나 둘 중 하나
추출한 데이터가 검증 규칙을 통과하지 못하면, 잘못된 데이터 대신오류 메시지를 반환해 줘.

일반 원칙 적용하기

작업이 무엇이든, 앞선 레슨의 일반 원칙은 그대로 유효합니다:

  • 네 가지 요소(레슨 2): 역할, 작업, 형식, 제약
  • Few-shot(레슨 3): 복잡한 작업에는 예시 2~3개
  • CoT(레슨 4): 추론이 필요한 작업에는 "let's think step by step" 추가
  • 디버깅(레슨 5): 한 번에 하나씩 바꾸고 테스트 케이스로 검증

이 레슨의 작업별 전략은 그 일반 원칙 위에 얹는 표적 최적화입니다:

  • 코드 생성 → 입출력 타입, 엣지 케이스, 하지 말아야 할 것을 강조
  • 문서 작성 → 독자의 배경, 구조 템플릿, 어조를 강조
  • 데이터 추출 → 필드 정의, 결측값 처리, few-shot 예시를 강조

정리

작업이 다르면 프롬프트 전략도 달라야 한다:

  • 코드 생성: 입출력 타입, 엣지 케이스, 코드 스타일, 의존성 제한을 못박고, 예시로 특수 상황을 분명히 한다
  • 문서 작성: 독자의 배경과 기술 수준을 정의하고, 구조 템플릿을 제공하며, 상세함의 수준과 어조를 통제한다
  • 데이터 추출: 각 필드의 허용 값을 정의하고, 결측값 처리를 명시하며, few-shot으로 형식을 표준화하고, 데이터 검증을 더한다

이 전략들은 앞선 레슨의 일반 기술(네 가지 요소, few-shot, CoT, 디버깅) 위에 쌓이는, 특정 작업 유형을 위한 최적화다. 실전에서는 눈앞의 작업에 맞는 조합을 고르면 된다.

코스 마무리

프롬프트 엔지니어링 기초의 여섯 레슨을 모두 마쳤습니다:

  1. 프롬프트가 정말 무엇이고 왜 중요한지 이해하기
  2. 프롬프트의 네 가지 핵심 요소 익히기
  3. few-shot으로 예시를 들어 AI를 이끄는 법 배우기
  4. chain-of-thought로 AI가 추론을 보여주게 하기
  5. 프롬프트를 디버깅하고 개선하는 체계적인 절차 세우기
  6. 작업 유형별 구체적인 전략 배우기

이제 도구 상자가 갖춰졌습니다. 다음 단계는 연습입니다. 자기 일에서 실제 작업을 하나 골라 이 기법들을 적용하고, 무슨 일이 벌어지는지 지켜보고, 계속 다듬으세요. 프롬프트 엔지니어링은 직접 해 보면서 벼리는 기술입니다. 수업은 여기서 끝나지만, 진짜 배움은 실제로 써 보는 순간부터 시작됩니다.

Footnotes

  1. Prompt Engineering for Code Generation — https://graphite.com/guides/better-prompts-ai-code 2 3 4

연습

01

세 가지 작업이 주어집니다. 각각에 가장 중요한 전략 포인트를 고르고 그 이유를 설명하세요.

레벨 1: 알맞은 작업 전략 고르기

작업 A: AI에게 이진 탐색을 구현하는 파이썬 함수를 생성하게 하기 작업 B: AI에게 기술 백서를 경영진용 2페이지 보고서로 요약하게 하기 작업 C: AI에게 고객 이메일 묶음에서 고객명, 문제 유형, 긴급도를 추출하게 하기

각 작업에 대해 답하세요:

  1. 어떤 작업 유형인가?(코드 생성 / 문서 작성 / 데이터 추출)
  2. 가장 중요한 전략 포인트 3가지는 무엇인가?
  3. 왜 그 3가지가 이 작업에 가장 중요한가?
완료 기준 · 로컬에서 확인
02

아래 시나리오 중 하나를 골라, 이 코스에서 배운 것을 모두 엮은 완결된 프롬프트를 설계하세요.

레벨 2: 완결된 작업 프롬프트 설계하기

시나리오 선택지:

시나리오 1: 코드 리뷰 어시스턴트

  • AI에게 파이썬 코드의 잠재적 성능 문제와 보안 구멍을 리뷰하게 하기
  • 심각도 순으로 정렬된 구조화된 리뷰 보고서 출력
  • 각 이슈에 위치, 설명, 수정 제안, 우선순위 포함

시나리오 2: 학습 노트 생성기

  • AI에게 기술 강의 녹취록 제공
  • 구조화된 학습 노트 생성: 핵심 개념, 요점, 실습 팁, 더 읽을거리
  • 입문자를 대상으로, 쉬운 말로

시나리오 3: 고객 피드백 분석기

  • 고객 피드백 10~20건에서 공통 문제 추출
  • 출력: 문제 분류, 분류별 빈도, 구체적 예시, 개선 방향 제안
  • 제품 개선 의사결정에 활용

요구사항: 설계한 프롬프트는 다음을 갖춰야 합니다:

  1. 네 가지 요소 포함(역할, 작업, 형식, 제약)
  2. 예시가 필요하다면 few-shot 예시 2~3개 제공
  3. 추론이나 분석이 들어간다면 CoT 유도 추가
  4. 엣지 케이스와 결측값 처리 고려
  5. 뒤이어 활용하기 쉬운 명확한 출력 형식
완료 기준 · 로컬에서 확인