brunch

AI에게 '생각하는 법' 가르치기: 사고 연쇄 프롬프팅

by 위키북스
Google_AI_Studio_2025-09-13T00_23_18.641Z.png?type=w966


AI 챗봇에게 복잡한 논리 문제를 던졌다가, 그럴듯하지만 완전히 틀린 답변을 받아본 경험이 있으신가요? 대규모 언어 모델(LLM)은 놀라운 언어 능력을 가졌지만, 기본적으로는 다음에 올 단어를 예측하는 '텍스트 예측 기계'에 가깝습니다. 스스로 '추론'하거나 '생각'하도록 훈련되지는 않았죠.


하지만 만약 우리가 AI에게 생각하는 '방법'을 가르쳐줄 수 있다면 어떨까요? "단계별로 생각해 봅시다(Let's think step by step)"라는 마법 같은 한 문장으로 AI의 추론 능력을 극적으로 끌어올릴 수 있습니다. 이것이 바로 사고 연쇄(Chain-of-Thought, CoT) 프롬프팅의 핵심입니다.


『AI 에이전트 인 액션』 10장에서는 이 CoT 기법을 중심으로, LLM이 복잡한 문제를 해결하도록 유도하는 다양한 프롬프팅 전략을 소개합니다. 이 글에서는 책의 내용을 바탕으로, CoT 프롬프팅의 원리와 구체적인 활용법을 초보자도 쉽게 이해할 수 있도록 알려드리겠습니다.





도전 과제: LLM을 혼란에 빠뜨리는 '시간 여행 문제'

CoT의 위력을 알아보기 전에, 먼저 일반적인 프롬프트로는 해결하기 어려운 문제를 만나보겠습니다. 책에서는 다음과 같은 복잡한 시간 여행 문제를 예시로 사용합니다.


Screen_Shot_2025-09-12_at_5.57.01_AM.png?type=w966


이 문제를 LLM에게 그대로 질문하면, 각 단계를 논리적으로 따지지 않고 성급하게 결론을 내리려다 오답을 내놓을 가능성이 매우 높습니다.





방법 1: 예시를 통해 생각하는 법을 가르치기 (퓨샷 CoT)

사고 연쇄 프롬프팅의 첫 번째 방법은 LLM에게 해답이 아닌, 해답을 찾아가는 '과정'을 예시로 보여주는 것입니다. 즉, 비슷한 유형의 다른 문제와 그 문제를 단계별로 풀이하는 과정을 프롬프트에 함께 제공하는 것입니다. 『AI 에이전트 인 액션』에서는 다음과 같은 구조의 프롬프트 템플릿을 제시합니다. 이 코드는 LLM에게 어떻게 추론해야 하는지에 대한 완벽한 '모범 답안'을 보여줍니다.



[코드 예시: 퓨샷 CoT 프롬프트 (cot.jinja2)]

Django

system:
"한 시간 여행 영화에서 사라(Sarah)는 ... (중략) ... 사라는 사건 당일까지 과거에서 며칠을 보내게 되는가?"
사고 연쇄:
초기 가정: 사라는 자신이 사건 2일 전에 도착했다고 생각한다. 준비에 쓴 시간: 하루
오류 인식: 사라는 실제로 2년 전에 도착했음을 깨닫는다.
연도에서 일수로 환산: 2년 = 2 × 365 = 730일.
결론: 사라는 사건이 일어나는 날까지 과거에서 총 729일을 보내게 된다.

(또 다른 시간 여행 문제 예시와 풀이 과정...)

단계별로 생각하되, 정답만 간단히 한 문장으로 출력하세요.

user:
{{statement}}


이 프롬프트의 핵심은 다음과 같습니다.


역할 부여: 먼저 시스템 메시지를 통해 시간 여행 문제 전문가라는 역할을 부여합니다.

모범 사례 제시: 우리가 풀고 싶은 문제와는 다른, 두 개의 시간 여행 문제와 그에 대한 '사고 연쇄' 풀이 과정을 명시적으로 보여줍니다. LLM은 이 예시를 보고 "아, 이런 문제는 이런 식으로 단계별로 생각해서 풀어야 하는구나!"라고 학습하게 됩니다.

최종 지시: 마지막으로 "단계별로 생각하라"고 다시 한번 상기시킨 뒤, 사용자의 실제 문제({{statement}})를 제시합니다.


이렇게 하면 LLM은 예시에서 배운 '생각의 틀'을 새로운 문제에 적용하여 훨씬 더 정확하고 논리적인 답변을 생성하게 됩니다.





방법 2: 마법의 문장으로 추론 능력 깨우기 (제로샷 CoT)

매번 복잡한 예시를 만들어주는 것은 번거로울 수 있습니다. 다행히 더 간단하면서도 강력한 방법이 있습니다. 바로 "단계별로 생각해 봅시다(Let's think step by step)" 라는 문장을 추가하는 것입니다. 이 기법을 제로샷(Zero-Shot) CoT라고 부릅니다. 별도의 예시(shot) 없이도, LLM이 스스로 추론 과정을 거치도록 유도하는 것이죠.



[코드 예시: 제로샷 CoT 프롬프트]

Django
system:
당신은 시간 여행 문제 해결의 전문가입니다.
시간 여행 문제 하나가 주어졌고, 이를 해결해야 합니다.

단계별로 생각해 봅시다.

최종 해답은 한 문장으로 정리해 주세요.
user:
{{statement}}


이 프롬프트는 이전보다 훨씬 단순하지만, "단계별로 생각해 봅시다"라는 한 문장이 결정적인 차이를 만듭니다. 이 지시를 받은 LLM은 최종 답변을 내놓기 전에, 문제의 각 요소를 분석하고 계산하는 자신의 추론 과정을 먼저 텍스트로 출력합니다. 이 과정을 통해 스스로 논리적 오류를 점검하고 더 정확한 결론에 도달할 확률이 비약적으로 상승합니다.



왜 CoT 프롬프팅이 효과적일까?


사고 연쇄 프롬프팅이 효과적인 이유는 LLM에게 '생각할 시간과 공간'을 주기 때문입니다.

복잡성 분해: 복잡한 문제를 한 번에 해결하려는 부담을 줄이고, 더 작고 관리하기 쉬운 단계로 나누도록 유도합니다.

중간 과정 생성: LLM이 최종 답변에 도달하기까지의 추론 과정을 직접 생성하게 함으로써, 성급한 결론으로 인한 실수를 줄입니다. 마치 우리가 수학 문제를 풀 때 연습장에 풀이 과정을 적어보는 것과 같은 효과입니다.

자기 교정 기회: 각 단계를 거치면서 초기의 잘못된 가정을 수정하거나 논리적 비약을 바로잡을 기회를 갖게 됩니다.





결론: 단순한 지시를 넘어, 생각의 파트너로

사고 연쇄(CoT) 프롬프팅은 단순히 더 나은 답변을 얻는 기술을 넘어, LLM을 단순한 텍스트 생성기에서 논리적인 '문제 해결 파트너'로 만드는 핵심 전략입니다. 복잡한 문제 해결을 위해 상세한 예시를 제공하는 퓨샷 CoT와, "단계별로 생각해보자"는 간단한 지시로 추론을 유도하는 제로샷 CoT 모두 여러분의 AI 에이전트를 한 단계 더 똑똑하게 만들어 줄 강력한 도구입니다.


이제 여러분의 AI 에이전트에게 단순한 명령 대신, 생각하는 '방법'을 알려주는 것은 어떨까요? 『AI 에이전트 인 액션』에서 소개된 이러한 기법들을 적용하여, 더 신뢰할 수 있고 지능적인 AI 애플리케이션을 만들어 보시길 바랍니다.




https://wikibook.co.kr/ai-agents/


《AI 에이전트 인 액션》에서는 프로덕션에 바로 배포할 수 있는 수준의 어시스턴트와 다중 에이전트 시스템, 자율적 에이전트를 구축하는 방법을 배울 수 있다. RAG 기반 지식 및 기억 능력과 추론, 계획 수립 등 에이전트의 필수 구성요소들을 익히고, 스스로 소프트웨어 도구를 사용하고 작업을 자율적으로 계획하며 피드백을 통해 스스로를 개선하는 다중 에이전트 애플리케이션을 만든다. 또한 다양한 실습 예제를 통해서 오픈AI 어시스턴츠 API, GPT 넥서스, 랭체인, MS 프롬프트 흐름, 오토젠, 크루AI 같은 최신 도구들을 사용해 본다.

keyword
작가의 이전글모든 AI가 'USB-C'로 통신하는 시대가 온다