왜 Claude가 생각하도록 해야 할까요?

갑자기 깨워서 복잡한 질문들에 즉시 대답하라고 요구받는 상황을 상상해 보세요. 먼저 답변을 생각할 시간이 주어진다면 아마도 더 잘할 수 있을 것입니다, 맞죠? Claude에게도 같은 원리가 적용됩니다!

Claude가 응답하기 전에 문제를 추론할 수 있도록 하면, 특히 다면적이거나 도전적인 질의에 대해 더 정확하고 지능적인 결과를 얻을 수 있습니다. Claude에게 단계별로 생각하도록 명시적으로 지시함으로써, 문제 해결에 대한 보다 체계적이고 철저한 접근 방식을 장려할 수 있습니다.

또한 Claude의 사고 과정을 검토하는 것은 프롬프트 지침이 불명확하거나 쉽게 오해될 수 있는 영역을 파악하고 문제를 해결하는 데 매우 유용할 수 있습니다.

출력 없이는 사고가 일어날 수 없다는 점에 유의하는 것이 중요합니다! Claude는 실제로 “생각”하기 위해 반드시 사고 과정을 출력해야 합니다.


단계별 사고를 위한 프롬프트 작성 방법

단계별 사고를 장려하는 가장 간단한 방법은 프롬프트에 “단계별로 생각하세요”라는 문구를 포함하는 것입니다. 예를 들면:

역할내용
사용자Jaws와 Casino Royale의 감독이 같은 나라 출신인가요? 단계별로 생각해 보세요.

그러면 Claude는 최종 답변을 제공하기 전에 사고 과정을 세분화할 것입니다:

역할내용
Assistant (Claude의 응답)“Jaws”와 “Casino Royale” 영화의 감독이 같은 나라 출신인지 확인하기 위해, 단계별로 나누어 보겠습니다:

1단계: “Jaws” 영화의 감독을 확인합니다.
“Jaws”의 감독은 Steven Spielberg입니다.

2단계: Steven Spielberg의 출신 국가를 확인합니다.
Steven Spielberg는 미국 오하이오주 신시내티에서 태어났습니다.

3단계: “Casino Royale” 영화의 감독을 확인합니다.
2006년 영화 “Casino Royale”의 감독은 Martin Campbell입니다.

4단계: Martin Campbell의 출신 국가를 확인합니다.
Martin Campbell은 뉴질랜드 헤이스팅스에서 태어났습니다.

5단계: 두 감독의 출신 국가를 비교합니다.
Steven Spielberg는 미국 출신이고, Martin Campbell은 뉴질랜드 출신입니다.

따라서 “Jaws”와 “Casino Royale”의 감독은 같은 나라 출신이 아닙니다.

보다 복잡한 질의의 경우, Claude가 취해야 할 단계를 지정하여 Claude의 사고를 안내할 수 있습니다. 다음은 그 예시입니다:

역할내용
사용자다음 단서를 사용하여 아래의 객관식 질문에 답하되, 다음 절차를 따르세요:
1. 단서를 하나씩 살펴보면서 각각이 잠재적으로 관련이 있는지 고려하세요.
2. 관련 단서를 조합하여 질문에 대한 답을 추론하세요.
3. 답변을 객관식 옵션 (a), (b) 또는 (c) 중 하나에 매핑하세요.

단서:
1. Miss Scarlett은 라운지에 있는 유일한 사람이었습니다.
2. 파이프를 가진 사람은 부엌에 있었습니다.
3. Colonel Mustard는 관측소에 있는 유일한 사람이었습니다.
4. Professor Plum은 도서관이나 당구장에 있지 않았습니다.
5. 촛대를 가진 사람은 관측소에 있었습니다.

질문: Colonel Mustard가 관측소에서 촛대를 들고 있었나요?
(a) 예; Colonel Mustard는 관측소에서 촛대를 들고 있었습니다.
(b) 아니오; Colonel Mustard는 관측소에서 촛대를 들고 있지 않았습니다.
(c) 알 수 없음; Colonel Mustard가 관측소에서 촛대를 들고 있었는지 판단할 정보가 충분하지 않습니다.

명확한 사고 과정을 제시함으로써, Claude가 가장 관련성 있는 정보에 추론을 집중하고 주어진 작업을 잘 수행하는 데 필요한 모든 요소를 철저히 생각하도록 도울 수 있습니다.


Claude의 사고 과정 캡처하기

Claude의 단계별 추론을 최종 응답과 구분하기 쉽게 하려면 <thinking><answer>와 같은 XML 태그 사용을 고려해 보세요. Claude에게 사고 과정을 <thinking> 태그 안에, 최종 답변을 <answer> 태그 안에 배치하도록 지시할 수 있습니다.

다음은 이 방법을 사용한 프롬프트 예시입니다:

역할내용
사용자[프롬프트의 나머지 부분] 질문에 답하기 전에 <thinking></thinking> 태그 안에서 단계별로 생각해 보세요. 그런 다음 <answer></answer> 태그 안에 최종 답변을 제공하세요.

Assistant 역할에서 <thinking> 태그를 미리 채워 Claude가 어디서부터 시작해야 할지 안내할 수도 있습니다:

역할내용
Assistant (미리 채우기)<thinking>

그러면 Claude는 태그 내에서 사고 과정을 완성하고 최종 답변을 제공할 것입니다:

역할내용
Assistant (Claude의 응답)[단계별로 문제 추론하기]
</thinking>

<answer>[최종 답변]</answer>

태그를 사용하면 원하는 경우 후처리 중에 <answer></answer> 태그 내의 최종 답변만 쉽게 추출할 수 있습니다.


몇 가지 고려 사항

단계별 사고를 장려하면 Claude의 응답을 크게 향상시킬 수 있지만, 다음 사항을 염두에 두세요:

  • Claude가 사고 과정을 출력할 수 있도록 허용하지 않으면 사고가 일어날 수 없습니다. Claude가 비공개로 생각하고 최종 답변만 반환하는 방법은 없습니다.
  • 단계별 추론을 위한 프롬프트는 Claude의 출력 길이를 증가시켜 지연에 영향을 미칠 수 있습니다. 이 기술을 사용할지 여부를 결정할 때 이러한 상충 관계를 고려하세요.

추가 자료

  • 프롬프트 엔지니어링 기법: 프롬프트를 최적화하고 Claude의 성능을 향상시키기 위한 다른 전략을 탐색하세요.
  • Anthropic 요리책: Claude를 사용하는 고효율적이고 고급 기술, 통합 및 구현을 보여주는 복사 가능한 코드 스니펫이 포함된 Jupyter 노트북 모음을 찾아보세요.
  • 프롬프트 라이브러리: 다양한 작업과 사용 사례를 위해 엄선된 프롬프트 선택에서 영감을 얻으세요.