AI 끄나풀

[프롬프트 가이드] Claude 개발자들이 공개한 프롬프트 비밀 - GPT 현명하게 쓰기

꾸씅 2025. 5. 16. 23:49

프롬프트를 잘 쓰면, GPT가 주는 답도 다르다는 사실,

이제는 많은 사람들이 알고 있습니다.

 

"프롬프트 엔지니어링(Prompt Engineering)"이라는 말도 생겼습니다.

오늘은 Claude 개발 회사인 앤트로픽(Anthropic)에서 공개한 프롬프트 엔지니어링 가이드를 한 번 살펴보려고 합니다.

함께 톺아볼까요?

 

때로는, 생각하는 목적이 프롬프트 엔지니어링 보다는 파인튜닝이 필요할 때도 있습니다.

아래 두 가지를 비교하는 글을 업로드 해두었으니, 궁금하신 분은 확인해보세요!

 

 

프롬프트 개선하기

개선 예시 - 원본

다음 Wikipedia 기사 제목 목록에서 이 문장이 어느 기사에서 나왔는지 식별하세요.
기사 제목만 응답하고 다른 내용은 포함하지 마세요.

기사 제목:
{{titles}}

분류할 문장:
{{sentence}}

 

개선 예시 - 개선 후

당신은 문장을 Wikipedia 기사 제목과 매칭하는 데 특화된 지능형 텍스트 분류 시스템입니다. 주어진 문장이 제공된 기사 제목 목록 중 어느 Wikipedia 기사에 속하는지 식별하는 것이 당신의 임무입니다.

먼저 다음 Wikipedia 기사 제목 목록을 검토하세요:
<article_titles>
{{titles}}
</article_titles>

이제 분류가 필요한 이 문장을 고려하세요:
<sentence_to_classify>
{{sentence}}
</sentence_to_classify>

당신의 목표는 제공된 목록에서 주어진 문장과 가장 잘 일치하는 기사 제목을 결정하는 것입니다. 다음 단계를 따르세요:

1. 문장에서 핵심 개념 나열
2. 각 핵심 개념을 기사 제목과 비교
3. 가장 관련성 높은 상위 3개 제목을 순위 매기고 관련성이 있는 이유 설명
4. 문장의 내용을 가장 잘 포괄하거나 연관되는 가장 적절한 기사 제목 선택

분석을 <analysis> 태그로 감싸세요. 다음 내용을 포함하세요:
- 문장에서 추출한 핵심 개념 목록
- 각 핵심 개념과 기사 제목 비교
- 설명이 포함된 상위 3개 관련 제목 순위
- 최종 선택과 그 이유

분석 후, 최종 답변을 제공하세요: 목록에서 가장 적절한 Wikipedia 기사 제목 하나만 선택.

선택한 기사 제목만 출력하고, 추가 텍스트나 설명은 포함하지 마세요.

 

어떤 점이 바뀌었을까요?

  1. 명확한 단계별 추론 지침 추가
  2. 콘텐츠 구성을 위한 XML 태그 사용
  3. 명시적인 출력 형식 요구사항 제공
  4. 분석 과정을 통해 Claude 안내

AI가 아닌 옆 자리 "사람"도 쉽게 이해할 수 있는 프롬프트를 작성하는 것이 핵심입니다.

하나하나 비교해봅시다.

1. 명확하고 직접적인 지침 추가

역할 모호한 프롬프트 상세한 프롬프트
사용자 이 AcmeCloud 장애 보고서를 분석하고 주요 사항을 요약해주세요.

{{REPORT}}
이 AcmeCloud 장애 보고서를 분석하세요. 서문은 건너뛰세요. 응답을 간단히 하고 필수 정보만 작성하세요. 다음 사항만 나열하세요:
1) 원인
2) 지속 시간
3) 영향받은 서비스
4) 영향받은 사용자 수
5) 예상 수익 손실

보고서: {{REPORT}}

 

단순히 '분석'이라는 지시 대신,

어떤 보고서를 어떻게 작성할 지 자세한 지침이 필요합니다.

예시에서는 원인, 지속 시간, 영향 받은 서비스, 영향 받은 사용자 수, 예상 수익 손실 등의 자세한 지침이 추가 되었습니다.

 

다른 예시도 한 번 볼게요.

역할 불명확한 프롬프트 명확한 프롬프트
사용자 이 고객 피드백 메시지에서 모든 개인 식별 정보를 제거해주세요: {{FEEDBACK_DATA}} 분기별 검토를 위해 고객 피드백을 익명화하는 것이 당신의 작업입니다.

지시사항:
1. 모든 고객 이름을 “CUSTOMER_[ID]“로 대체하세요(예: “Jane Doe” → “CUSTOMER_001”).
2. 이메일 주소를 “EMAIL_[ID]@example.com”으로 대체하세요.
3. 전화번호를 “PHONE_[ID]“로 수정하세요.
4. 특정 제품(예: “AcmeCloud”)이 언급된 경우 그대로 두세요.
5. PII가 발견되지 않으면 메시지를 그대로 복사하세요.
6. 처리된 메시지만 출력하고 ”---“로 구분하세요.

처리할 데이터: {{FEEDBACK_DATA}}

 

어떤 데이터를 처리할지 '처리할 데이터: {{FEEDBACK_DATA}}'로 따로 구분하였습니다.

또한 지시사항을 통해 어떻게 개인 식별 정보를 처리할 지 직접적으로 명령하였습니다.

 

모든 것을 AI에게 맡기는 것 보다는, 정확한 명령을 하여, 보다 정확한 일처리를 기대할 수 있습니다.

LLM은 그때그때 상황에 따라 답변이 새로 생성되기 때문에, 기대와는 다른 답변을 할 수 있는데 이렇게 명확한 지침을 두게 되면 항상 기대하는 결과 값을 얻을 수 있게 됩니다.

 

2. 예시 사용하기

예시는 멀티샷 프롬프팅(Multishot Prompting)이라고도 합니다.

LLM에게 여러 개의 예시(여기서는 shot이라 명합니다.)를 제공하여, 모델이 사용자가 원하는 의도를 더 잘 파악하고 답변할 수 있게 하는 프롬프트 엔지니어링 기법을 의미합니다.

 

특히 멀티샷 프롬프팅은 shot 이 multi니까 -> 보통 2개 이상의 입력-출력 예시를 제공하는 것을 의미합니다.

예시에는 다음과 같은 내용이 함께 고려되어야 합니다.

  • 관련성: 예시가 실제 사용 사례를 반영하는지?
  • 다양성: 예시가 엣지 케이스와 잠재적인 과제를 다루고 있는지?
  • 명확성: 예시가 <example> 구조로 감싸져 있는지?

 

예시로 한 번 살펴볼까요?

역할 예시 없음 예시 포함
사용자 이 고객 피드백을 분석하고 문제를 분류하세요. 다음 카테고리를 사용하세요: UI/UX, 성능, 기능 요청, 통합, 가격 책정 및 기타. 또한 감정(긍정/중립/부정)과 우선순위(높음/중간/낮음)를 평가하세요.

피드백은 다음과 같습니다: {{FEEDBACK}}
우리 CS팀이 구조화되지 않은 피드백으로 인해 어려움을 겪고 있습니다. 당신의 임무는 제품 및 엔지니어링 팀을 위해 피드백을 분석하고 문제를 분류하는 것입니다. 다음 카테고리를 사용하세요: UI/UX, 성능, 기능 요청, 통합, 가격 책정 및 기타. 또한 감정(긍정/중립/부정)과 우선순위(높음/중간/낮음)를 평가하세요. 다음은 예시입니다:

<example>
입력: 새로운 대시보드는 엉망입니다! 로드하는 데 너무 오래 걸리고 내보내기 버튼을 찾을 수 없어요. 이것을 빨리 수정해주세요!
카테고리: UI/UX, 성능
감정: 부정
우선순위: 높음</example>

이제 이 피드백을 분석하세요: {{FEEDBACK}}

 

  1. 실제 사용 사례를 추가했습니다. 결과 값이 입력, 카테고리, 감정, 우선순위 등 어떻게 보여지면 좋을 지 한 번 더 예시로 제공하고 있습니다.
  2. 잠재적인 과제를 포함하고 있습니다. 있을 수 있는 입력 값을 입력해두었습니다.
  3. example 태그로 감싸져있습니다.

3. CoT(Chain of Thought)를 이용하여 성능 향상 시키기

LLM을 스스로 생각하게 해야합니다.

Claude 3.7 를 사용하시다보면, Think 모델을 활성화 할 수 있는데요,

한 번에 질문에 대한 답변을 주는 것이 아니라 마치 사람처럼 생각과 생각을 연결하여 답변합니다.

이를 생각의 연쇄 -> 즉, CoT (Chain of Thought)라고 부릅니다.

 

AI에게 CoT를 요구하면,

모델이 문제를 더 깊이 있게 이해하고, 논리적이고 일관된 답변을 생성합니다.

해석 가능성이 오르고, 오류 발견 및 수정이 용이합니다.

 

단점으로는 출력 길이가 길어짐에 따라 시간과 비용이 증가할 수 있습니다.

모든 경우에 CoT가 필요한 것은 아니기 때문에 특별한 경우에만 사용하는 것이 좋습니다.

 

아래는 Claude에서 사용할 수 있는 예시입니다. (물론 GPT에서도 사용하실 수 있는 방법이에요)

역할 예시 1 예시 2
User 올해의 Care for Kids 프로그램에 대한 기부를 요청하는 개인화된 이메일을 기부자들에게 작성하세요.

프로그램 정보:
<program>{{PROGRAM_DETAILS}}
</program>

기부자 정보:
<donor>{{DONOR_DETAILS}}
</donor>

이메일을 작성하기 전에 단계별로 생각하세요.
올해의 Care for Kids 프로그램에 대한 기부를 요청하는 개인화된 이메일을 기부자들에게 작성하세요.

프로그램 정보:
<program>{{PROGRAM_DETAILS}}
</program>

기부자 정보:
<donor>{{DONOR_DETAILS}}
</donor>

이메일을 작성하기 전에 생각하세요. 먼저, 이 기부자의 기부 이력과 과거에 지원한 캠페인을 고려하여 어떤 메시지가 효과적일지 생각하세요. 그다음, 그들의 이력을 고려할 때 Care for Kids 프로그램의 어떤 측면이 그들에게 호소력이 있을지 생각하세요. 마지막으로, 분석을 바탕으로 개인화된 기부자 이메일을 작성하세요.

 

예시 1은 그냥 모델한테 "생각하세요" 라고 제안하는 방법입니다. 참 쉽죠?

예를 들면, 이런 제안을 할 수 있어요.

Let's think step by step. 차근차근 생각해 봅시다.
Let's solve this problem in steps. 이 문제를 단계별로 해결해 봅시다.
Let's break down the problem. 문제를 쪼개서 생각해 봅시다.
Let's clarify our assumptions. 가정을 단계별로 명확히 해 봅시다.

 

예시 2에서 보면, 생각의 풀이 순서를 제안할 수 있습니다.

두 개의 차이는 무엇일까요?

 

더 복잡한 연산을 해야할 때는 모델이 실수를 할 수 있기 때문에,

원하는 풀이가 복잡하고 실수가 치명적인 문제일 경우에는, 직접 논리적 흐름을 명시하는 것이 안전합니다.

프롬프트 구성 구체적 단계, 예시, 논리적 흐름 명시 "단계별로 생각해" 등 지시만
모델의 추론 방식 예시의 패턴을 참고해 유사한 사고 과정 생성 모델이 자체적으로 사고 흐름 생성
결과 품질 일관성 및 정확도 높음, 실수 감소 품질이 모델 성능에 따라 달라짐
활용 적합성 복잡한 문제, 형식화된 답변 필요시 적합 간단한 문제, 모델이 충분히 학습된 경우

 

4. XML 태그 사용하기

위에서 보여드렸던 예시처럼 examples 외에도 다양한 태그들이 있습니다.

LLM을 사용할 때 사용할 수 있는 XML 태그의 예시들은 다음과 같습니다.

 

  • instruction
  • input
  • output
  • thinking
  • answer
  • example

적재적소에 사용한다면, AI가 보다 명확하게 구조화된 설명을 이해할 수 있습니다.

 

5. 역할 부여하기

역할 부여는 제가 프롬프트 엔지니어링을 잘 모를 때에도 유명한 방법이었습니다.

프롬프트 안에 너는 OOO야. 와 같은 느낌으로 AI에게 역할을 부여하는 내용입니다.

 

사용 예시는 다음과 같습니다.

  • 귀하는 Fortune 500 기술 기업의 법률 고문입니다.
  • 귀하는 고성장 B2B SaaS 기업의 CFO입니다.

 

6. 응답 미리 채우기

응답을 미리 채워서 AI가 보다 응답을 잘할 수 있도록 미리 답변을 채우는 방법입니다.

 

예시 1: 역할 프롬프팅 응답 채워두기

셜록 홈즈 말투를 명시하여 원하는 대답을 얻는 방법입니다.

User (50 conversation turns in with “Sherlock Holmes” Claude) What do you deduce about the owner of this shoe?
<image>muddy_shoe.jpg</image>
Assistant (prefill) [Sherlock Holmes]
Assistant (Claude’s response) 셜록 홈즈의 말투로 작성된 답변

 

예시 2: 미리 채우기를 사용한 구조화 된 데이터 추출

json 답변을 확정적으로 받을 수 있습니다.

User Extract the name, size, price, and color from this product description as a JSON object:

<description>
The SmartHome Mini is a compact smart home assistant available in black or white for only $49.99. At just 5 inches wide, it lets you control lights, thermostats, and other connected devices via voice or app—no matter where you place it in your home. This affordable little hub brings convenient hands-free control to your smart devices.
</description>
Assistant (prefill) {
Assistant json 타입으로 반환된 답변

 

7. 프롬프트 체이닝

CoT와 비슷한 개념이지만, 각각의 작업마다 심층적인 사고가 필요할 때는 프롬프트와 프롬프트를 잇는 작업이 필요합니다.

복잡한 작업을 작게 나누어, 관리하게 쉽게 만들 수 있습니다.

정확성과 명확성이 올라가는 기대효과를 누릴 수 있습니다.

 

8. 긴 컨텍스트를 사용하는 프롬프트

컨텍스트 윈도우(Context Window)는 LLM이 입력으로 받아들이고, 이해하거나 기억할 수 있는 텍스트의 최대 길이를 의미합니다. 컨텍스트 윈도우가 클 수록 더 길고, 정보가 많고, 복잡한 대화를 나눌 수 있습니다.

긴 컨텍스트 윈도우를 다룰 때는, 위에서도 언급한 내용을 포함해 다음과 같이 사용하는 것이 필요합니다.

  • 긴 형식의 데이터는 상단에 배치
  • XML 태그로 메타데이터 구조화
  • 인용구로 응답의 근거 제시

 

요약

요약해보면, 옆 자리 동료도 보고 알 수 있을 만큼

구조화되고, 명확하고, 자세할 수록 원하는 답을 얻기 쉬울 것 같습니다.

더 현명하게 AI를 사용해서 성장 이루시길 바랍니다!