[Daily morning study] Chain of Thought(CoT) 프롬프팅과 ReAct 패턴

#daily morning study

Image


Chain of Thought(CoT) 프롬프팅이란?

LLM에 단순히 “정답을 내놓아라”고 하는 게 아니라, 풀이 과정을 단계별로 출력하도록 유도하는 프롬프팅 기법이다.

일반 프롬프팅과의 비교:

[일반 프롬프팅]
Q: 철수는 사탕 5개를 갖고 있었다. 영희에게 2개를 주고, 민수에게 3개를 받았다. 지금 몇 개?
A: 6개

[Chain of Thought 프롬프팅]
Q: 철수는 사탕 5개를 갖고 있었다. 영희에게 2개를 주고, 민수에게 3개를 받았다. 지금 몇 개?
A: 처음에 5개를 갖고 있었다.
   영희에게 2개를 주면 5 - 2 = 3개가 된다.
   민수에게 3개를 받으면 3 + 3 = 6개가 된다.
   따라서 6개.

중간 추론 단계를 명시하면 복잡한 문제에서 정확도가 크게 올라간다.


Few-shot CoT vs Zero-shot CoT

Few-shot CoT

프롬프트에 “추론 과정이 포함된 예시”를 몇 가지 제공하는 방식이다.

예시 1)
Q: 12 + 8은?
A: 12에 8을 더하면 20이다. 정답: 20

예시 2)
Q: 100에서 37을 빼면?
A: 100에서 37을 빼면 63이다. 정답: 63

실제 질문)
Q: 45에 28을 더하면?
A: (모델이 위 패턴을 따라 추론 과정을 출력)

모델이 예시에서 추론 패턴을 학습해 새로운 문제에 적용한다.

Zero-shot CoT

예시 없이 “Let’s think step by step” 같은 단순한 문구 하나로 CoT를 유도하는 방식이다.

Q: 12명이 탄 버스에서 5명이 내리고 3명이 탔다. 지금 몇 명?
A: Let's think step by step.
   처음 12명에서 5명이 내리면 12 - 5 = 7명.
   여기에 3명이 타면 7 + 3 = 10명.
   정답: 10명

GPT-3.5 이후 대형 모델에서 잘 동작하며, 예시를 만드는 수고 없이도 추론 능력을 이끌어낼 수 있다.


CoT가 효과적인 이유

모델이 중간 단계를 토큰으로 출력하면서 작업 메모리(working memory)처럼 사용할 수 있다. 사람이 종이에 풀이 과정을 적으며 계산하는 것과 같은 원리다.

특성일반 프롬프팅CoT 프롬프팅
추론 단계내부에서 한 번에단계별로 출력
오류 추적어렵다중간 단계에서 확인 가능
복잡한 문제정확도 낮음정확도 향상
토큰 소모적음많음

CoT는 특히 수학, 논리 추론, 다단계 계획 문제에서 효과가 두드러진다. 단순한 지식 검색 문제에는 오히려 불필요한 토큰 낭비가 될 수 있다.


ReAct 패턴이란?

Reasoning + Acting을 합친 개념이다. 2022년 Google 논문에서 제안됐다.

CoT가 “생각만 하는” 것이라면, ReAct는 생각(Thought) → 행동(Action) → 관찰(Observation) 사이클을 반복하며 외부 도구나 환경과 상호작용한다.

[ReAct 사이클]
Thought: 현재 상황을 분석하고 다음 행동을 계획
  ↓
Action: 검색, API 호출, 코드 실행 등 실제 행동
  ↓
Observation: 행동 결과를 관찰
  ↓
Thought: 결과를 바탕으로 다시 분석 (반복)

ReAct 동작 예시

“2024년 한국 GDP를 찾아서 2023년과 비교해줘”라는 질문이 들어왔을 때:

Thought: 2024년과 2023년 한국 GDP 수치가 필요하다. 검색이 필요하다.
Action: search("2024 한국 GDP")
Observation: 2024년 한국 GDP는 약 1조 7,000억 달러로 추정됨

Thought: 2023년 수치도 검색해야 한다.
Action: search("2023 한국 GDP")
Observation: 2023년 한국 GDP는 약 1조 6,700억 달러

Thought: 두 수치를 갖고 있으니 비교 분석이 가능하다.
Answer: 2024년 한국 GDP는 약 1조 7,000억 달러로, 2023년 1조 6,700억 달러 대비 약 1.8% 증가했습니다.

모델이 스스로 정보가 부족하다고 판단하고, 도구를 호출하고, 결과를 통합해 최종 답변을 만든다.


CoT와 ReAct 비교

항목Chain of ThoughtReAct
외부 도구 사용없음있음 (검색, API 등)
지식 출처모델 내부 파라미터내부 + 외부 정보
실시간 정보불가가능
복잡도낮음높음
적합한 문제수학, 논리 추론정보 검색, 멀티스텝 태스크

Self-Consistency 기법

CoT의 확장 버전이다. 동일한 질문에 대해 여러 번 다른 추론 경로로 답을 생성하고, 가장 많이 나온 답을 최종 답으로 채택한다.

질문: 3 × 7 + 5 = ?

추론 경로 1: 3 × 7 = 21, 21 + 5 = 26 → 26
추론 경로 2: 7 × 3 = 21, 21 + 5 = 26 → 26
추론 경로 3: 5 + 3 × 7 = 5 + 21 = 26 → 26

다수결: 26

단순 CoT보다 정확도가 높아지지만 API 비용이 N배로 증가한다.


Tree of Thoughts (ToT)

CoT → ReAct → ToT로 이어지는 발전 흐름이다.

CoT가 선형적인 추론 경로라면, ToT는 트리 구조로 여러 추론 분기를 동시에 탐색하고 유망한 경로를 골라 깊이 파고드는 방식이다.

                  [문제]
                 /      \
         [접근법 A]    [접근법 B]
          /    \           \
      [A-1]  [A-2]       [B-1]

BFS나 DFS 방식으로 추론 트리를 탐색하며, 각 노드에서 “이 경로가 유망한가?”를 자체 평가(self-evaluation)한다. 복잡한 창의적 문제나 전략 계획 문제에서 강점을 보인다.


실무 활용 포인트

CoT를 쓰면 좋은 경우

  • 수학 문제, 논리 퍼즐
  • 단계별 코드 디버깅
  • 긴 텍스트 요약 후 결론 도출

ReAct를 쓰면 좋은 경우

  • 최신 정보가 필요한 질문 (검색 도구 연결)
  • 여러 API를 순차 호출해야 하는 자동화 태스크
  • AI Agent 구현

주의점

  • CoT는 토큰 소모가 크므로 단순 질문에는 과할 수 있다.
  • ReAct는 도구 호출 실패 시 루프에 빠질 수 있으므로 최대 반복 횟수 제한이 필요하다.
  • 모델 크기가 작으면 CoT 효과가 제한적이다. 7B 이하 소형 모델보다 대형 모델에서 효과가 크다.