6 minute read

이 글은 「생성형 AI로 시작하는 데이터 분석」 9회 연재 중 5회입니다. 전체 목차 보기

안녕하세요, 헬로데이터사이언스 나성호입니다.

지난 4회차까지는 생성형 AI가 무엇이고, 어떻게 활용되는지에 대한 이야기였습니다. 오늘부터는 본격적으로 “그래서 생성형 AI한테 어떻게 일을 시켜야 원하는 답변을 얻을 수 있는가”로 넘어갑니다. 바로 프롬프트 엔지니어링입니다.

프롬프트가 왜 그렇게 중요할까?

프롬프트는 사용자가 생성형 AI에게 직접 제공하는 입력이며, 생성형 AI가 답변을 작성할 때 참고하는 주요 문맥(컨텍스트)입니다. 2회차에서 말씀드렸듯이 생성형 AI가 사용자의 의도를 파악하는 출발점은 결국 프롬프트입니다. 그런데 프롬프트에서 필요한 정보가 누락되어 있으면, 생성형 AI는 그 자리를 가장 그럴듯한 값으로 채워 넣습니다. 이 과정에서 사용자의 의도와 다른 값이 채워질 수 있고, 그 결과 원하는 답변과 달라집니다.

동일한 생성형 AI를 쓰더라도 프롬프트가 담고 있는 맥락에 따라 결과의 방향과 품질이 크게 달라집니다. 결국 좋은 프롬프트는 생성형 AI의 추측을 최소화하고, 사용자 의도에 맞는 결과를 끌어내는 가장 직접적인 수단입니다. 생성형 AI가 추측해야 할 부분을 최소화한다는 것은, 판단이 필요한 요소를 사용자가 직접 프롬프트에 적어준다는 뜻입니다.

여기에서 오해하지 말아야 할 게 있습니다. 프롬프트를 작성할 때 염두에 두어야 할 핵심은 모호함을 줄이는 것입니다. 그 결과로 프롬프트가 길어질 수 있는 것이지 프롬프트를 길게 쓰는 게 목적이 아닙니다.

좋은 프롬프트의 9가지 구성 요소

제가 강의에서 쓰는 중요도를 기준으로, 프롬프트에 들어가면 좋을 9가지 요소를 정리해 봤습니다.

구분
중요도
기능
지시 필수 생성형 AI가 실제로 수행해야 할 작업을 명확하고 구체적으로 지정합니다.
출력 형식 매우 높음 표, 목록, 코드, 보고서 등 원하는 결과물의 형태를 지정합니다.
예시 매우 높음 원하는 결과물의 구조와 표현 방식을 보여주어 답변 품질을 높입니다.
목적 높음 답변이 필요한 이유를 알려주어 초점과 우선순위를 정합니다.
배경 높음 상황, 대상, 주변 환경 등 맥락을 제공하여 답변의 적합성을 높입니다.
제약 조건 높음 반드시 지키거나 피해야 할 조건을 정해 답변의 범위를 통제합니다.
어조·문체 중간 말투와 표현 수준을 조정하여 읽는 사람에게 맞게 다듬습니다.
답변 분량 중간 답변의 길이와 내용의 밀도를 조절합니다.
역할 낮음~중간 생성형 AI가 답변할 관점과 전문성의 방향을 잡는 데 도움을 줍니다.

이제부터 나쁜 프롬프트와 좋은 프롬프트의 예시를 비교하면서 9가지 요소를 하나씩 자세하게 살펴보겠습니다. 예시는 주로 “고객 이탈 원인을 분석해줘”라는 요청을 기준으로 작성하였습니다.

① 지시 — 무엇을 해야 하는지 알려주는 핵심 문장입니다. 아홉 가지 중에서 유일하게 빠뜨리면 안 되는 요소죠. ‘분석해줘’, ‘정리해줘’, ‘작성해줘’처럼 작업의 방향이 드러나야 합니다. 지시가 모호하면 생성형 AI는 의도를 추측해서 답하고, 그만큼 원하는 결과에서 멀어집니다. 작업 대상과 수행 방식까지 함께 적어주면 더 좋습니다.

나쁜 예: “보고서를 작성해줘”
좋은 예: “첨부한 매출 데이터를 바탕으로 월별 매출 추이를 분석하고, 주요 변화 요인을 요약해줘”

② 출력 형식 — 답변을 어떤 모양으로 받을지 미리 정해두는 것입니다. 표로 받을 때와 줄글로 받을 때, 내용이 같아도 쓸모가 전혀 달라집니다. 따로 말하지 않으면 생성형 AI가 알아서 형식을 고르기 때문에, 받아놓고 다시 정리하는 일이 생깁니다. 출력 형식은 ‘표로 작성해줘’, ‘엑셀 파일로 다운로드할 수 있게 해줘’, ‘Jupyter Notebook의 셀 단위로 코드를 작성해줘’처럼 구체적으로 알려주시면 됩니다.

나쁜 예: “고객 이탈 원인을 정리해줘”
좋은 예: “첨부한 데이터를 바탕으로 고객 이탈 원인을 분석하고 원인, 근거, 개선 방안으로 나누어 표로 정리해줘”

③ 예시 — 원하는 답변이 어떤 모습인지 직접 보여주는 것입니다. 말로 열 번 설명하는 것보다 견본 하나가 빠를 때가 많습니다. 표의 한 행이나 문장 하나면 충분합니다. 참고로 예시를 하나도 주지 않으면 Zero-Shot, 하나만 주면 One-Shot, 여러 개를 주면 Few-Shot이라고 부릅니다.

나쁜 예: “고객 이탈 원인을 표로 정리해줘”
좋은 예: “고객 이탈 원인을 표로 정리해줘. 예를 들어 ‘결제 실패 | 최근 3개월 내 결제 실패 2회 이상 | 결제 수단 재등록 안내 필요’처럼 원인·근거·개선 방안 순서로 한 줄만 보여주면, 그 형식대로 나머지도 작성해줘”

④ 목적 — 이 작업을 왜 하는지 알려주는 정보입니다. 임원 보고용인지 실무 확인용인지에 따라 강조할 지점이 달라지니까요. 목적을 알려주면 생성형 AI가 질문에 답하는 데서 그치지 않고, 실제로 쓰기 좋은 형태로 답변을 구성합니다.

나쁜 예: “고객 이탈 원인을 분석해줘”
좋은 예: “임원 보고용으로 고객 이탈 원인을 설명할 수 있도록 첨부한 데이터를 분석해줘”

⑤ 배경 — 지금 어떤 상황인지 알려주는 설명입니다. 업무 맥락, 데이터의 의미, 이 글을 읽을 사람이 누구인지가 여기 들어갑니다. 배경이 없으면 답변은 교과서 같은 일반론에 머뭅니다. 사내 데이터나 업무 관행처럼 생성형 AI가 알 수 없는 정보일수록 꼭 짚어주셔야 합니다.

나쁜 예: “고객 이탈 원인을 분석해줘”
좋은 예: “최근 고객 이탈률이 크게 증가하고 있어. 성별·연령별·유입채널별 이탈률을 분석해줘”

⑥ 제약 조건 — 답변이 넘지 말아야 할 선을 그어두는 것입니다. 사용할 데이터, 제외할 내용, 금지할 표현, 반드시 포함해야 할 항목이 모두 여기 해당합니다. 선을 그어두면 곁가지가 줄고, 내가 세운 기준에 맞는 답이 돌아옵니다. 결과물의 정확성이 걸린 작업에서는 빠뜨리지 마세요.

나쁜 예: “고객 이탈 원인을 분석해줘”
좋은 예: “2025~2026년도 데이터만 사용하고, 추측은 제외하고, 고객 이탈 원인을 데이터에 근거하여 분석해줘”

⑦ 어조·문체 — 말투를 정하는 것입니다. 고객에게 보내는 안내문과 팀에 올리는 보고서는 문장의 결이 달라야 하죠. 그냥 두면 어느 쪽도 아닌 밋밋한 설명체로 나와서, 결국 다시 손보게 됩니다. 읽는 사람이 분명한 글이라면 문체부터 알려주세요.

나쁜 예: “고객에게 안내문을 작성해줘”
좋은 예: “고객에게 보낼 안내문을 정중하고 간결한 문체로 작성해줘”

⑧ 답변 분량 — 답변의 길이와 밀도를 조절하는 요소입니다. 한 줄 요약, 핵심 다섯 개, A4 한 장, 10분 발표 원고. 어느 쪽을 말했느냐에 따라 답변의 깊이가 달라집니다. 분량을 비워두면 필요 이상으로 길어지거나, 반대로 너무 얕게 끝나기도 합니다. 쓸 자리가 이미 정해진 결과물이라면 분량을 미리 못 박아두는 편이 낫습니다.

나쁜 예: “고객 만족도 조사 결과를 요약해줘”
좋은 예: “고객 만족도 조사 결과를 핵심 내용 5개 이내의 글머리 기호로 요약해줘”

⑨ 역할 — 어떤 관점에서 답할지 정하는 것입니다. 데이터 분석가와 마케팅 담당자는 같은 결과를 봐도 짚는 대목이 다릅니다. 역할을 주면 판단 기준과 용어, 설명 수준이 그쪽으로 맞춰집니다. 전문적인 검토나 코드 리뷰처럼 특정 관점이 중요할 때 곁들일 만합니다. 다만 효과는 제한적이라, 어디까지나 보조 수단으로 생각하시는 게 좋습니다.

나쁜 예: “이 분석 결과를 검토해줘”
좋은 예: “데이터 분석가의 관점에서 분석 방법, 해석, 한계점을 중심으로 검토해줘”

예전에 유행하던 “프롬프트 꼼수”는 더 이상 안 통합니다

여기서 한 가지 짚고 넘어갈 게 있습니다. 예전에는 “너는 세계 최고의 전문가야”, “단계별로 차근차근 생각해봐”, “완벽하게 해줘”처럼 AI를 구슬리는 듯한 문구가 효과가 있다고 알려졌었습니다. 하지만 대규모 언어 모델이 발전하면서, 이런 ‘문구 기교’의 효용은 줄어들고 오히려 사용자가 문제를 정의하고 구조화하는 역량의 비중이 훨씬 커졌습니다.

단독 사용 효과가 줄어든 기법

  • 역할 지정: “너는 세계 최고의 전문가야”
  • 생각의 사슬: “단계별로 차근차근 생각해봐”
  • 과장된 지시어: “완벽하게”, “박사급으로”
  • 형식 강제: 금지 포맷 지정, 단계 수 강제 등
  • 장황한 반복: “기억해”, “다시 강조하지만”
  • 모델별 꼼수 프롬프트

여기서 말하는 역할 지정은 앞에서 소개한 ⑨ 역할처럼 답변의 관점을 정해주는 것이 아니라, “너는 세계 최고의 전문가야”처럼 과장된 수식으로 성능을 끌어올리려는 시도를 뜻합니다. 이런 문구들 대신, 이제는 아래 항목들이 결과를 좌우합니다.

더 중요해진 역량

  • 문제 정의: 무엇을 풀 것인가?
  • 문제 구조화: 어떻게 잘라서 배열할 것인가?
  • 목적, 배경 등 맥락 전달
  • 출력 형식, 제약 조건 명확화
  • 예시 제공(Few-Shot)
  • 검증 가능한 요청: “모르면 모른다고 해줘”

앞의 ‘단독 사용 효과가 줄어든 기법’에 있던 ‘생각의 사슬(Chain of Thought)’을 예로 들어보겠습니다. ‘단계별로 생각해’와 같은 이 프롬프트는 복잡한 추론을 유도하는 대표 기법으로 자주 쓰였습니다. 다만 최근 추론형 모델은 내부적으로 문제를 분해하고 검토하는 능력이 강화되었으므로, 사용자가 사고 과정을 길게 강제하기보다 목표·조건·출력 형식·검증 기준을 명확하게 제시하는 것이 더 중요해졌습니다.

9가지를 다 모으면 이렇게 됩니다

마지막으로, 9가지 요소를 다 담은 프롬프트와 그렇지 않은 프롬프트가 실제로 얼마나 다른지 비교해보겠습니다.

나쁜 프롬프트 (지시만 있고 나머지는 전부 생략)

제주도 여행 계획을 세워줘. [지시]

좋은 프롬프트 (9가지 요소를 다 담음)

이번 여름 휴가 제주도 여행 계획을 세워줘. [지시]
날짜별 일정표를 작성하는 거야. 열 이름은 날짜, 시간, 관광지, 특징으로 해줘. [출력 형식]
예를 들어 ‘2026-07-01’, ‘09~12’, ‘천지연폭포’, ‘서귀포 시내에 있어 접근성 좋음’ 이런 식으로. [예시]
이번 여행의 목적은 부모님께 드리는 효도 여행이야. 편안하고 기억에 남는 시간을 보내고 싶어. [목적]
2박 3일 일정이고, 오전 10시쯤 제주공항 도착, 숙소는 서귀포시에 예약할 예정이야. [배경]
유명 관광지보다 경치가 좋은 곳으로 무리하지 않게 하루에 2곳 정도 여유 있게 다니고 싶어. [제약 조건]
일정표에 맛집도 추가해줘. 네이버 평점과 리뷰 수를 확인하고, 알 수 없으면 모른다고 해줘. [제약 조건]
설명은 부모님도 편하게 읽으실 수 있도록 정중하고 친근한 말투로 써줘. [어조·문체]
일정표는 표로 정리하고, 그 외 설명은 항목당 두 줄을 넘기지 말아줘. [답변 분량]
제주도를 여러 번 다녀온 여행 전문가의 관점에서 추천해줘. [역할]

첫 번째 프롬프트를 입력해도 그럴듯한 답변은 나옵니다. 하지만 지시를 제외한 나머지 조건이 다 빠져 있어서, 생성형 AI가 누락된 부분을 추측하여 일반적인 답변을 만들어낼 가능성이 매우 높습니다. 예를 들어 일정을 3박 4일로 잡는다든가, 일정표 형식이 매번 달라진다든가 하는 식입니다. 그런데 두 번째 프롬프트처럼 9가지 요소를 함께 담고 있으면 생성형 AI는 사용자의 의도에 부합하는 방향으로 결과를 작성합니다.

오늘 이야기 정리

오늘은 좋은 프롬프트를 구성하는 9가지 요소(지시, 출력 형식, 예시, 목적, 배경, 제약 조건, 어조·문체, 답변 분량, 역할)를 하나씩 살펴봤습니다. 그런데 사실, 이 9가지를 한 번에 다 담아서 프롬프트를 쓰기는 쉽지 않습니다. 저도 매번 그렇게는 못 씁니다.

다음 6회차에서는 “그럼 완벽한 프롬프트를 어떻게 만드나요?”에 대한 현실적인 답, 즉 대화를 이어가며 프롬프트를 단계적으로 다듬어가는 방법과, 반복되는 조건을 매번 입력하지 않아도 되는 나만의 GPT 만드는 법까지 실습과 함께 알려드리겠습니다. 감사합니다.

Updated:

Comments