Claude 팀이 정리한 프롬프트 엔지니어링 기법으로 AI 결과를 더 좋게 만드는 방법을 소개합니다.
Claude를 만든 팀이 전하는 프롬프트 엔지니어링 기법으로 더 나은 AI 결과를 얻어보세요.
컨텍스트 엔지니어링은 LLM과 함께 일할 때 점점 더 중요한 요소로 떠오르고 있으며, 프롬프트 엔지니어링은 그 필수적인 구성 요소(빌딩 블록)입니다.
프롬프트 엔지니어링는 AI 모델에서 더 나은 출력을 얻기 위해 지시사항을 구조화하는 기술입니다. 질문을 어떻게 표현하는지, 스타일을 어떻게 지정하는지, 어떤 컨텍스트를 제공하는지, 모델의 행동을 어떻게 유도하는지가 목표 달성에 큰 영향을 줍니다.
모호한 지시와 잘 다듬어진 프롬프트의 차이는, 일반적인 출력과 원하는 결과를 정확히 얻는 결과 사이의 간극이 될 수 있습니다. 구조가 나쁜 프롬프트는 의도를 명확히 하려고 여러 번 주고받아야 할 수도 있지만, 잘 설계된 프롬프트는 한 번에 목적지에 도달하게 해줍니다.
시작을 돕기 위해, 바로 결과를 개선하도록 설계된 실용적인 방법을 포함해 우리 팀의 모범 사례를 모았습니다. 오늘 당장 쓸 수 있는 간단한 습관부터 시작해, 복잡한 프로젝트를 위한 고급 방법까지 단계적으로 확장해 보겠습니다.
가장 기본적인 수준에서 프롬프트 엔지니어링은 LLM에 전달하는 질의를 수정하는 일입니다. 종종 실제 요청을 하기 전에 질의에 정보를 덧붙이는 정도로 충분합니다. 하지만 어떤 정보를 공유해야 하는지, 그리고 그중에서도 어떤 정보가 올바른 정보인지 아는 것이 훌륭하고 효과적인 프롬프트를 만드는 비밀입니다.
다음 프롬프트 엔지니어링 기법들은 효과적인 AI 상호작용의 기반을 이룹니다. 일관되게 적용하면 응답 품질이 즉시 개선되는 것을 확인할 수 있습니다.
현대 AI 모델은 명확하고 구체적인 지시를 매우 잘 따릅니다. 모델이 당신의 의도를 알아서 추론할 것이라 가정하지 말고, 직접적으로 말하세요. 모호함 없이 원하는 바를 정확히 표현하는 간단한 언어를 사용하세요.
핵심 원칙: 모델에게 당신이 보고 싶은 것을 정확히 말하세요. 포괄적인 출력을 원하면 그렇게 요청하세요. 특정 기능을 원하면 목록으로 나열하세요. Claude 같은 현대 모델은 특히 명시적인 지시에서 큰 이점을 얻습니다.
예시: 분석 대시보드 만들기
모호함: “분석 대시보드를 만들어줘”
명시적: “분석 대시보드를 만들어줘. 가능한 한 많은 관련 기능과 인터랙션을 포함해줘. 기본 수준을 넘어 완전한 기능을 갖춘 구현을 만들어줘.”
두 번째 버전은 포괄적인 기능을 명시적으로 요청하고, 최소한을 넘어서 더 잘해주길 바란다는 신호를 줍니다.
모범 사례:
왜 그것이 중요한지 설명하면 AI 모델이 목표를 더 잘 이해하고 더 맞춤형 응답을 제공하는 데 도움이 됩니다. 특히 근래의 모델들은 당신의 근본 목표를 추론할 수 있어 이 방식이 더 효과적입니다.
예시: 형식(포맷) 선호
덜 효과적: “절대 불릿 포인트를 사용하지 마”
더 효과적: “나는 불릿 포인트보다 자연스러운 문단 형태의 답변을 선호해. 흐르는 산문이 더 읽기 쉽고 대화체로 느껴지거든. 불릿 포인트는 내 캐주얼한 학습 스타일에는 너무 공식적이고 목록처럼 느껴져.”
두 번째 버전은 규칙의 이유를 모델이 이해하도록 돕고, 그 결과 관련된 다른 서식 선택에서도 더 나은 결정을 하게 해줍니다.
컨텍스트를 제공하면 좋은 경우:
프롬프트 엔지니어링에서 ‘구체성’이란, 명시적 가이드라인과 요구사항으로 지시를 구조화하는 것을 의미합니다. 원하는 바를 더 구체적으로 말할수록 결과는 더 좋아집니다.
예시: 식단 계획
모호함: “지중해식 식단으로 식단표를 만들어줘”
구체적: “당뇨 전단계(프리다이아베틱) 관리를 위한 지중해식 식단표를 설계해줘. 하루 1,800칼로리, 저당지수 식품을 중심으로. 아침/점심/저녁과 간식 1회를 포함하고, 각 식사의 완전한 영양 성분 분석을 제공해줘.”
프롬프트가 충분히 구체적이려면?
다음을 포함하세요:
예시는 항상 필요한 것은 아니지만, 개념을 설명하거나 특정 형식을 보여줘야 할 때 특히 빛을 발합니다. ‘원샷(one-shot)’ 또는 ‘퓨샷(few-shot)’ 프롬프팅이라고도 하며, 말로만 설명하기 어려운 미묘한 요구사항을 예시로 보여줌으로써 명확히 할 수 있습니다.
현대 모델을 위한 중요 참고: Claude 4.x와 유사한 고급 모델은 예시에 있는 디테일을 매우 면밀히 따릅니다. 예시가 유도하고 싶은 행동과 일치하도록 하고, 피하고 싶은 패턴은 최대한 줄이세요.
예시: 글 요약
예시 없이: “이 글을 요약해줘”
plaintext아래는 내가 원하는 요약 스타일의 예시야: Article: [AI 규제에 관한 기사 링크] Summary: EU가 고위험 시스템을 대상으로 하는 포괄적 AI 법안을 통과시켰다. 핵심 조항은 투명성 요구사항과 인간 감독 의무를 포함한다. 2026년에 시행된다. 이제 같은 스타일로 이 글을 요약해줘: [새 기사 링크]
예시를 사용하면 좋은 경우:
프로 팁: 예시는 1개(원샷)로 시작하세요. 그래도 출력이 맞지 않을 때만 예시를 더 추가(퓨샷)하세요.
추측하지 말고 불확실성을 표현해도 된다고 AI에 명시적으로 허락하세요. 이렇게 하면 환각(hallucination)이 줄고 신뢰성이 올라갑니다.
예시: “이 재무 데이터를 분석해 추세를 찾아줘. 데이터가 결론을 내리기엔 충분하지 않다면, 추측하지 말고 그렇다고 말해줘.”
이 간단한 한 문장만으로도 모델이 한계를 인정할 수 있어 응답이 더 신뢰할 만해집니다.
Claude에서 직접 시도해보세요.
위 핵심 습관만으로도 꽤 멀리 갈 수 있지만, 더 정교한 접근이 필요한 상황을 만날 수 있습니다. 고급 프롬프트 엔지니어링은 에이전트형 솔루션을 만들거나, 복잡한 데이터 구조를 다루거나, 다단계 문제를 쪼개야 할 때 특히 효과적입니다.
Prefill은 AI의 응답을 사용자가 먼저 시작해 형식, 톤, 구조를 유도하는 방식입니다. 출력 형식을 강제하거나 군더더기(서론)를 건너뛰고 싶을 때 특히 강력합니다.
Prefill을 사용할 때:
예시: JSON 출력 강제
Prefill이 없으면 Claude가 “요청하신 JSON은 다음과 같습니다: {...}” 같은 말을 덧붙일 수 있습니다.
Prefill 사용(API):
pythonmessages=[ {"role": "user", "content": "이 상품 설명에서 이름과 가격을 추출해 JSON으로 만들어줘."}, {"role": "assistant", "content": "{"} ]
AI는 여는 중괄호부터 이어서 유효한 JSON만 출력하게 됩니다.
참고: 채팅 인터페이스에서는 이렇게 근사할 수 있습니다. “서론 없이 유효한 JSON만 출력해. 응답은 여는 중괄호로 시작해.”
연쇄 사고(CoT) 프롬프팅은 답변 전에 단계별 추론을 요청하는 방식입니다. 구조적 사고가 도움이 되는 복잡한 분석 과제에 유용합니다.
현대적 접근: Claude는 구조적 추론을 자동화하는 확장 사고(extended thinking) 기능을 제공합니다. 가능하다면 대체로 확장 사고가 수동 CoT보다 낫습니다. 다만 확장 사고를 사용할 수 없거나, 검토 가능한 투명한 추론이 필요한 경우 수동 CoT를 이해하는 것은 여전히 가치가 있습니다.
연쇄 사고가 유용한 경우:
연쇄 사고에는 흔히 세 가지 구현 방식이 있습니다.
기본 연쇄 사고
지시에 “단계별로 생각해(Think step-by-step)”를 추가합니다.
plaintext올해 Care for Kids 프로그램에 기부를 요청하는 개인화된 이메일을 기부자에게 작성해줘. 프로그램 정보: <program> {{PROGRAM_DETAILS}} </program> 기부자 정보: <donor> {{DONOR_DETAILS}} </donor> 이메일을 쓰기 전에 단계별로 생각해.
가이드형 연쇄 사고
특정 추론 단계를 프롬프트에 구조화해 제공합니다.
javascript이메일을 쓰기 전에 생각해. 먼저 이 기부자의 기부 이력에 비추어 어떤 메시지가 호소력이 있을지 생각해. 다음으로 Care for Kids 프로그램의 어떤 측면이 이 사람에게 공감될지 고려해. 마지막으로 분석을 바탕으로 개인화된 기부자 이메일을 작성해.
구조화된 연쇄 사고
태그를 사용해 추론과 최종 답변을 분리합니다.
javascript<thinking> 태그 안에서 이메일을 쓰기 전에 생각해. 먼저 이 기부자에게 호소력 있는 메시지를 분석해. 다음으로 관련 프로그램 요소를 식별해. 마지막으로 분석을 사용해 <email> 태그 안에 개인화된 기부자 이메일을 작성해.
참고: 확장 사고를 사용할 수 있더라도, 복잡한 작업에서는 명시적 CoT 프롬프팅이 여전히 도움이 될 수 있습니다. 두 접근은 상호 배타적이 아니라 상호 보완적입니다.
현대 AI 모델에서는 응답 형식을 제어하는 효과적인 방법이 몇 가지 있습니다.
1) ‘하지 말 것’이 아니라 ‘할 것’을 말하기
“응답에 마크다운을 쓰지 마” 대신 “응답은 매끄럽게 흐르는 산문 문단으로 작성해”라고 요청하세요.
2) 원하는 출력에 프롬프트 스타일을 맞추기
프롬프트의 서식 스타일이 AI의 응답 스타일에 영향을 줄 수 있습니다. 마크다운이 최소화된 답을 원한다면, 프롬프트에서도 마크다운 사용을 줄이세요.
3) 서식 선호를 명시적으로 말하기
서식을 세밀하게 통제하고 싶다면:
plaintext보고서나 분석을 작성할 때는 완전한 문단을 사용해 명확하고 매끄럽게 흐르는 산문으로 작성해. 조직화를 위해 표준 문단 구분(줄바꿈)을 사용해. 마크다운은 인라인 코드, 코드 블록, 간단한 제목에 주로만 사용해. 진짜로 서로 분리된 항목을 제시해야 하거나 리스트 형식이 최선인 경우, 또는 사용자가 명시적으로 리스트를 요청한 경우가 아니라면 번호 목록이나 불릿 목록은 사용하지 마. 불릿으로 나열하는 대신 문장 속에 자연스럽게 통합해. 목표는 독자가 아이디어를 자연스럽게 따라가도록 안내하는 읽기 쉬운 문장 흐름이야.
앞선 기법들과 달리, 프롬프트 체이닝은 한 번의 프롬프트로 구현할 수 없습니다. 체이닝은 복잡한 작업을 더 작은 순차 단계로 나누고, 각 단계마다 별도의 프롬프트를 사용합니다. 한 단계의 출력이 다음 단계의 입력이 됩니다.
이 접근은 지연(레이턴시)을 늘리는 대신 정확도를 높입니다. 각 개별 작업이 더 쉬워지기 때문입니다. 보통 워크플로 또는 코드로 구현하지만, 응답을 받은 뒤 수동으로 다음 프롬프트를 입력해도 됩니다.
예시: 연구 요약
각 단계가 집중된 지시를 통해 점진적으로 품질을 높입니다.
프롬프트 체이닝을 사용할 때:
트레이드오프: 체이닝은 레이턴시(API 호출 횟수)를 증가시키지만, 복잡한 작업에서는 정확도와 신뢰성을 크게 개선하는 경우가 많습니다.
초기 AI 모델에서 인기가 있었던 일부 프롬프트 엔지니어링 기법은 Claude 같은 현대 모델에서는 덜 필요합니다. 하지만 오래된 문서에서 접하거나 특정 상황에서 유용할 수 있습니다.
XML 태그는 과거에, 특히 많은 데이터를 포함할 때 프롬프트에 구조와 명확성을 더하는 방법으로 추천되곤 했습니다. 현대 모델은 XML 없이도 구조를 더 잘 이해하지만, 특정 상황에서는 여전히 유용할 수 있습니다.
예시:
plaintext<athlete_information> - Height: 6'2" - Weight: 180 lbs - Goal: Build muscle - Dietary restrictions: Vegetarian </athlete_information> Generate a meal plan based on the athlete information above.
XML 태그가 여전히 도움이 될 수 있는 경우:
현대적 대안: 대부분의 경우, 명확한 제목, 공백, 그리고 “아래 선수 정보를 사용해서…” 같은 명시적 문장만으로도 충분하며 오버헤드가 더 적습니다.
역할 프롬프팅은 질의를 표현할 때 전문가 페르소나나 관점을 부여하는 방식입니다. 효과적일 수는 있지만, 현대 모델은 충분히 정교해 과도한 역할 부여는 종종 불필요합니다.
예시: “당신은 재무 상담가야. 이 투자 포트폴리오를 분석해줘…”
중요한 주의점: 역할을 과도하게 제한하지 마세요. “당신은 도움이 되는 어시스턴트야”가 “당신은 세계적 권위의 전문가이며 기술 전문용어로만 말하고 절대 실수하지 않아”보다 종종 낫습니다. 지나치게 구체적인 역할은 AI의 유용성을 제한할 수 있습니다.
역할 프롬프팅이 도움이 될 수 있는 경우:
현대적 대안: 역할을 지정하는 것보다 원하는 관점을 명시하는 편이 더 효과적인 경우가 많습니다. 예를 들어 “당신은 재무 상담가야” 대신 “이 투자 포트폴리오를 위험 허용도와 장기 성장 잠재력에 초점을 맞춰 분석해줘”라고 요청하세요.
지금까지 개별 기법을 분리해서 살펴봤지만, 진짜 힘은 이를 전략적으로 결합할 때 나타납니다. 프롬프트 엔지니어링의 핵심은 가능한 모든 기법을 다 쓰는 것이 아니라, 목적에 맞는 조합을 선택하는 것입니다.
여러 기법을 결합한 예시:
less분기 보고서에서 핵심 재무 지표를 추출해 JSON 형식으로 제시해줘. 이 데이터는 자동 처리에 사용될 예정이므로, 응답에는 서론이나 설명 없이 유효한 JSON만 포함되어야 해. 다음 구조를 사용해: { "revenue": "value with units", "profit_margin": "percentage", "growth_rate": "percentage" } 보고서에 어떤 지표가 명확히 기재되어 있지 않다면 추측하지 말고 null을 사용해. 응답은 여는 중괄호로 시작해: {
이 프롬프트는 다음을 결합합니다:
모든 프롬프트가 모든 기법을 필요로 하진 않습니다. 다음은 의사결정 프레임워크입니다.
여기서 시작하세요:
기법 선택 가이드:
| 필요하다면… | 사용하세요… |
|---|---|
| 특정 출력 형식 | 예시, prefill, 또는 명시적 형식 지시 |
| 단계별 추론 | 확장 사고(Claude 4.x) 또는 연쇄 사고 |
| 복잡한 다단계 작업 | 프롬프트 체이닝 |
| 투명한 추론 | 구조화된 출력과 함께 연쇄 사고 |
| 환각 방지 | “모르겠다”라고 말해도 된다는 허락 |
의도가 좋아도 예상치 못한 결과가 나올 수 있습니다. 흔한 문제와 해결법은 다음과 같습니다.
프로 팁: 단순하게 시작하고, 필요할 때만 복잡도를 추가하세요. 추가한 요소가 실제로 결과를 개선하는지 매번 테스트하세요.
시간을 절약하고 프롬프트를 개선하기 위해 흔한 함정을 참고하세요.
고급 프롬프트 엔지니어링을 구현할 때의 과제 중 하나는, 추가 토큰 사용으로 인한 컨텍스트 오버헤드가 늘어난다는 점입니다. 예시, 여러 프롬프트, 세부 지시—이 모든 것이 토큰을 소비하며, 컨텍스트 관리는 그 자체로 기술입니다.
프롬프트 엔지니어링 기법은 필요하고 그 사용이 정당화되는 경우에만 적용하세요. 컨텍스트를 효과적으로 관리하는 종합 가이드는 우리 블로그의 컨텍스트 엔지니어링 글을 참고하세요.
컨텍스트 인지 개선: Claude 4.x를 포함한 현대 AI 모델은 컨텍스트 인지 능력이 크게 향상되어, 긴 컨텍스트의 중간 부분 정보를 놓치는 이른바 “lost-in-the-middle” 문제를 역사적으로 완화했습니다.
그럼에도 작업 분할이 도움이 되는 이유: 이런 개선이 있더라도 큰 작업을 더 작고 명확한 덩어리로 나누는 것은 여전히 유용합니다. 이는 컨텍스트 한계 때문이 아니라, 매우 구체적인 요구사항과 범위 안에서 모델이 최선의 작업에 집중하도록 돕기 때문입니다. 경계가 명확한 집중 과제는, 한 프롬프트에서 여러 목표를 동시에 달성하려는 시도보다 일관되게 더 높은 품질의 결과를 냅니다.
전략: 긴 컨텍스트를 다룰 때는 정보를 명확히 구조화하고 가장 중요한 세부 사항을 시작이나 끝에 배치하세요. 복잡한 과제를 다룰 때는, 이를 집중된 하위 과제로 나누는 것이 각 구성 요소의 품질과 신뢰성을 높일지 검토하세요.
프롬프트 엔지니어링은 기술이며, 숙달하기까지 몇 번의 시도가 필요합니다. 제대로 하고 있는지 아는 유일한 방법은 테스트해 보는 것입니다. 첫 단계는 직접 해보는 것입니다. 여기서 다룬 기법을 적용한 질의와 그렇지 않은 질의의 차이를 바로 체감할 수 있습니다.
프롬프트 엔지니어링 실력을 정말로 다듬으려면, 프롬프트의 효과를 객관적으로 측정해야 합니다. 좋은 소식은, 그 내용이 바로 anthropic.skilljar.com의 프롬프트 엔지니어링 코스에 포함되어 있다는 점입니다.
빠른 평가 팁:
프롬프트 엔지니어링은 결국 ‘커뮤니케이션’입니다. AI가 당신의 의도를 가장 명확하게 이해할 수 있도록 말하는 방법입니다. 이 가이드 초반에 소개한 핵심 기법부터 시작하세요. 그것들이 자연스러운 습관이 될 때까지 일관되게 사용하세요. 고급 기법은 특정 문제를 해결할 때만 추가하세요.
기억하세요. 최고의 프롬프트는 가장 길거나 가장 복잡한 것이 아니라, 최소한의 필요한 구조로 목표를 안정적으로 달성하는 프롬프트입니다. 연습하면서 어떤 상황에 어떤 기법이 맞는지 직관이 생길 것입니다.
컨텍스트 엔지니어링으로의 전환이 프롬프트 엔지니어링의 중요성을 약화시키는 것은 아닙니다. 오히려 프롬프트 엔지니어링은 컨텍스트 엔지니어링 안에서 기본이 되는 구성 요소입니다. 잘 만든 프롬프트 하나하나가, 대화 기록, 첨부 파일, 시스템 지시와 함께 AI의 행동을 형성하는 더 큰 컨텍스트의 일부가 되어 더 좋은 결과를 만듭니다.