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

레슨 2: 프롬프트의 기본 구조

학습 목표:

  • 프롬프트의 네 가지 핵심 요소 익히기
  • 모호한 요청을 구조화된 지시로 바꾸어 보기
  • 각 요소가 AI의 결과물을 어떻게 좌우하는지 이해하기

전제: << 레슨 1: 프롬프트란 무엇이고 왜 중요한가 | 다음: 레슨 3 >>

AI가 자꾸 엉뚱한 답을 내놓는 이유

AI에게 '프로젝트 요약을 써 줘'라고 하면, 프로젝트의 실제 내용은 하나도 없는 뻔한 템플릿이 돌아옵니다. 어디서 어긋난 걸까요? AI의 능력이 모자란 것이 아닙니다. 여러분의 지시에 정작 중요한 조각들이 빠져 있었던 것입니다. 어떤 프로젝트인지, 누가 읽을 것인지, 무엇을 담아야 하는지, 어떤 형식이어야 하는지 말입니다.

효과적인 프롬프트는 담 너머로 던지는 한 줄이 아닙니다. 네 가지 요소로 이루어진 완결된 지시입니다. 이번 레슨에서는 그 네 요소가 무엇이고, 각각 어떤 역할을 하며, 어떻게 조합하는지 다룹니다.

프롬프트의 네 가지 요소

명확한 프롬프트는 보통 네 부분을 담고 있습니다1.

  1. 역할 — AI가 어떤 정체성으로 답해야 하는지 알려 준다
  2. 작업 — 무엇을 해 주기를 원하는지 정확히 말한다
  3. 형식 — 응답의 구조와 문체를 지정한다
  4. 제약 — 범위, 길이, 톤 등 경계를 정한다

매번 네 가지가 모두 필요하지는 않지만, 작업이 복잡할수록 더 많은 요소가 필요합니다. 하나씩 살펴보겠습니다.

1. 역할: AI가 어떤 정체성으로 답할 것인가

역할은 AI가 어떤 관점과 전문성 수준으로 답해야 하는지 알려 줍니다2. 같은 질문이라도 기술 전문가가 답할 때와 초등학교 교사가 답할 때의 결과는 완전히 다릅니다.

두 프롬프트를 비교해 보겠습니다.

역할이 없을 때:

Docker가 무엇인지 설명해 주세요.

AI는 이런 답을 줄 수 있습니다.

  • 사전식 정의('Docker는 오픈 소스 컨테이너화 플랫폼으로…')
  • 여러분이 Linux, 가상화, 이미지를 이미 안다고 전제하는 답

역할이 있을 때:

당신은 기술 개념을 일상적인 비유로 설명하는 데 능숙한 교사입니다.프로그래밍 배경지식이 없는 프로덕트 매니저에게 Docker가 무엇인지설명해 주세요.

이제 AI는 이렇게 합니다.

  • 일상적인 비유를 끌어옵니다('Docker는 표준 규격의 화물 컨테이너와 같아서…')
  • 전문 용어를 피하거나, 쓰는 용어마다 설명을 붙입니다
  • '어떻게 만들어졌는지'보다 '왜 필요한지'에 초점을 맞춥니다

자주 쓰는 역할 패턴:

  • 직업적 정체성: '당신은 시니어 Python 엔지니어입니다'
  • 교육 방식: '당신은 예시로 가르치는 멘토입니다'
  • 청자의 관점: '기술 배경이 없는 경영진에게 설명하는 상황입니다'
  • 톤: '당신은 친절하고 인내심 있는 어시스턴트입니다'

2. 작업: 무엇을 해 주기를 원하는지 정확히 말한다

작업은 프롬프트의 심장입니다. '무엇을 해 주기를 원하는가'라는 질문에 답합니다1. 작업 설명이 모호한 것이 가장 흔한 문제입니다.

비교해 보겠습니다.

모호한 작업:

이 코드를 분석해 주세요.

AI는 어느 각도로 봐야 할지 알 수 없습니다. 성능? 보안? 가독성? 버그?

명확한 작업:

이 Python 코드에서 성능 병목을 분석해 주세요. 데이터 규모가 커질 때느려질 수 있는 연산을 짚고, 어떻게 고치면 좋을지 제안해 주세요.

이제 AI는 다음을 압니다.

  • 초점은 성능이지 다른 관심사가 아니다
  • 데이터가 많은 경우를 염두에 두고 판단해야 한다
  • 문제만 짚을 것이 아니라 해결책까지 제안해야 한다

작업은 세 층으로 이루어집니다.

  1. 동사 — 요약한다, 분석한다, 생성한다, 수정한다, 검토한다…
  2. 대상 — 무엇을 다루는가(코드, 문서, 데이터…)
  3. 목표 — 어떤 결과에 도달할 것인가, 어떤 문제를 풀 것인가

3. 형식: 응답의 구조를 지정한다

형식은 AI에게 답을 어떻게 구성할지 알려 줍니다1. 형식 제약이 없으면 AI는 적당해 보이는 방식을 스스로 고릅니다. 긴 줄글일 수도, 목록일 수도, 표일 수도 있습니다.

비교해 보겠습니다.

형식 요구가 없을 때:

이 글의 핵심 내용을 요약해 주세요.

AI는 이런 것을 줄 수 있습니다.

  • 서술형 문단 세 개
  • 불릿 열 개짜리 목록
  • 한 문장짜리 결론 하나

형식을 지정했을 때:

이 글을 다음 형식으로 요약해 주세요.
핵심 주장: [한 문장]
뒷받침 근거(3가지):1. [근거 1, 한 문장]2. [근거 2, 한 문장]3. [근거 3, 한 문장]
결론: [한 문장]

AI는 이 구조를 그대로 따르고, 여러분은 결과를 자기 문서에 바로 붙여 넣을 수 있습니다.

자주 쓰는 형식 제약:

  • 목록: '핵심 항목 세 가지를 불릿으로 나열해 주세요'
  • 표: '두 선택지의 장단점을 표로 비교해 주세요'
  • 코드: '설명 없이 실행 가능한 코드만 출력해 주세요'
  • 섹션: '배경, 분석, 제안으로 나누어 주세요'
  • 길이: '각 항목을 50단어 이내로 유지해 주세요'

4. 제약: 경계를 정한다

제약은 AI가 옆길로 새지 않게 붙잡아 두는 '…하지 말 것', '오직 …만' 규칙입니다1.

비교해 보겠습니다.

제약이 없을 때:

Python 학습 자료를 추천해 주세요.

AI는 이런 것을 줄 수 있습니다.

  • 책, 강의, 웹사이트 열두 가지
  • 입문부터 고급까지 전부
  • 유료와 무료, 영어와 다른 언어가 뒤섞인 목록

제약이 있을 때:

Python 학습 자료를 3개 추천해 주세요. 요구사항은 다음과 같습니다.- 완전 무료일 것- 영어 자료일 것- 완전 초보자에게 적합할 것- 직접 해 보는 프로젝트가 포함될 것
각 자료를 두 문장으로 설명해 주세요. 첫 문장은 그것이 무엇인지,둘째 문장은 왜 초보자에게 알맞은지를 담아 주세요.

이제 AI는 이렇게 합니다.

  • 조건에 맞는 자료만 정확히 걸러 냅니다
  • 유료 강의와 언어가 다른 자료는 건너뜁니다
  • 요청한 형식대로 각 선택의 이유를 설명합니다

자주 쓰는 제약 유형:

  • 길이: '200단어 이내로'
  • 범위: '2023년 이후의 방법만 다룰 것'
  • 톤: '격식 있는 학술적 표현을 쓸 것'
  • 배제: '유료 선택지는 넣지 말 것'
  • 우선순위: '오픈 소스 도구를 우선할 것'

네 요소를 조합하기

완결된 프롬프트는 네 요소를 한데 모읍니다. 실제 상황을 하나 보겠습니다.

상황: AI에게 회의록 초안을 맡기기

작업만 있고 나머지 요소가 빠진 경우:

이 회의 녹취록으로 회의록을 작성해 주세요.

네 요소를 모두 갖춘 경우:

[역할] 당신은 경험 많은 프로젝트 어시스턴트입니다.
[작업] 아래 녹취록을 바탕으로 회의록을 작성해 주세요.
[형식] 다음과 같이 구성해 주세요.- 회의 기본 정보(시간, 참석자)- 논의한 안건(우선순위 순)- 안건별로 내려진 결정- 액션 아이템(담당자 + 마감일)
[제약]- 명확한 결론에 이른 논의만 기록하고, 잡담은 넘길 것- 모든 액션 아이템은 실행 가능할 것(동사 + 확인 가능한 산출물)- 전체 500단어 이내로 유지할 것
녹취록:[여기에 녹취록 붙여넣기]

이 프롬프트는 명확하고 완결되어 있으며 재사용할 수 있습니다. 녹취록 부분을 자리표시자로 바꾸면 몇 번이고 돌릴 수 있는 템플릿이 됩니다. 다음 회의에서는 새 녹취록만 갈아 끼우면 됩니다.

실습: 모호한 프롬프트 다시 쓰기

이제 모호한 프롬프트를 구조화된 프롬프트로 바꾸는 연습을 해 보겠습니다.

원래 프롬프트 (모호함)

이 코드 좀 최적화해 주세요.

다시 쓰는 단계

1단계: 작업을 못 박는다

  • 무엇을 위한 최적화인가? 성능, 가독성, 보안?
  • 목표를 성능이라고 정한다

2단계: 역할을 더한다

  • 코드 리뷰어의 관점이 가장 잘 맞는다

3단계: 형식을 지정한다

  • 출력을 구조화한다. 문제를 먼저 나열하고, 그다음 해결책을 제시한다

4단계: 제약을 더한다

  • 동작을 바꾸지 말 것
  • 눈에 띄는 성능 개선을 우선할 것

다시 쓴 프롬프트

당신은 시니어 성능 엔지니어입니다.
아래 Python 코드의 성능 문제를 분석하고 해결책을 제안해 주세요.
다음 형식으로 출력해 주세요.1. 현재 병목 (영향이 큰 순서대로)   - 병목에 대한 설명   - 어느 정도 데이터 규모에서 문제가 되는지2. 최적화 방안   - 구체적으로 무엇을 바꿀 것인지   - 최적화된 코드 조각   - 기대되는 성능 향상
제약:- 함수의 입출력 인터페이스를 바꾸지 말 것- 새로운 외부 의존성을 도입하지 말 것- 최소 2배 이상 빨라지는 변경을 우선할 것
코드:[여기에 코드 붙여넣기]

원래 프롬프트와 비교하면, 다시 쓴 프롬프트는 AI에게 어떤 역할을 맡을지, 무엇을 할지, 어떻게 출력할지, 어떤 한계 안에서 움직일지를 분명히 알려 줍니다.

네 요소를 유연하게 쓰기

네 요소는 교리가 아니라 체크리스트입니다.

  • 단순한 작업은 2~3개 요소만으로 충분합니다. '이 글의 핵심 주장을 세 문장으로 요약해 주세요'(작업 + 형식)
  • 복잡한 작업은 네 가지가 모두 필요합니다. '당신은 테크니컬 라이터입니다. 이 API 문서를 입문자용 튜토리얼로 다시 써 주세요. 코드 예시와 흔한 실수에 대한 안내를 넣고, 1000단어 이내로 해 주세요'
  • 탐색적인 작업에는 제약이 적어야 합니다. '이 문제에 접근할 수 있는 각도에는 어떤 것들이 있을까요?'
  • 실행형 작업에는 제약이 더 필요합니다. '설명 없이 다음 JSON 형식에 정확히 맞추어 출력해 주세요'

판단 기준은 간단합니다. 여러분의 프롬프트를 읽고 나서 AI가 무엇을 해야 하고 어떤 결과를 내놓아야 하는지 정확히 알 수 있는가? 여러분 스스로도 그 질문에 분명히 답할 수 없다면, AI가 알아낼 가능성은 더 낮습니다.

정리

효과적인 프롬프트는 네 요소를 담는다. 역할(어떤 정체성으로), 작업(무엇을 할지), 형식(어떻게 구성할지), 제약(경계는 어디인지)이다. 매번 네 가지를 다 쓰지는 않지만, 작업이 복잡할수록 더 완전한 요소 조합이 필요하다.

다시 쓰는 과정은 이렇다. 먼저 핵심 작업을 못 박고, 그다음 어떤 역할과 어떤 출력 형식, 어떤 제약이 필요한지 정한다. 모호한 한 줄을 구조화된 지시로 넓혀 놓으면 AI 결과물의 품질이 눈에 띄게 올라간다.

다음 레슨에서는 few-shot 학습을 다룹니다. 말로 설명하는 대신 2~5개의 예시로 원하는 패턴을 AI에게 이해시키는 방법입니다.

다음 레슨 Few-Shot 학습: 예시로 AI를 이끌기 >>

Footnotes

  1. OpenAI Prompt Engineering Best Practices — https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api 2 3 4

  2. Anthropic Prompt Engineering Overview — https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview

연습

01

여기 엉성한 프롬프트가 하나 있습니다.

레벨 1: 프롬프트를 분해하고 다시 조립하기
함수 하나 짜 줘, 입력은 문자열 리스트고, 출력은 중복을 제거한 결과,빠르게, Python으로, 주석도 달아 줘.

네 요소 프레임(역할, 작업, 형식, 제약)을 써서 더 명확해지도록 다시 구성해 보세요.

완료 기준 · 로컬에서 확인
02

상황: 기술 문서(API 사용 가이드)를 AI에게 검토시켜, 입문자가 헷갈릴 만한 지점을 찾아내고 개선안을 받아야 합니다.

레벨 2: 복잡한 작업을 위한 완결된 프롬프트 설계하기

네 요소를 모두 갖춘 완결된 프롬프트를 설계해 보세요.

완료 기준 · 로컬에서 확인