프롬프트 엔지니어링 이론의 진화 과정을 설명하는 다이어그램. CoT, ReAct와 같은 고급 기법의 시스템 흐름을 시각화한 이미지
|

CoT부터 ReAct까지, 프롬프트 엔지니어링 핵심 이론 총정리

CoT부터 ReAct까지, 프롬프트 엔지니어링 핵심 이론 총정리

“Let’s think step by step.”

혹시 이 ‘마법의 주문’을 사용해 보셨나요? 많은 분이 이런 ‘팁(Tip)’을 알고 있지만, 왜 이 한마디가 AI의 성능을 극적으로 끌어올리는지 그 ‘이론(Theory)‘은 잘 모를 수 있습니다.

예전에는 이런 팁만 알아도 충분했을지 모릅니다. 하지만 프롬프트 엔지니어링은 ‘감’이 아니라, LLM의 숨겨진 능력을 탐구하는 체계적인 ‘과학‘입니다.

과거에 우리가 AI에게 그저 ‘대화’를 거는 수준이었다면, 이제는 AI를 ‘지시’하고, ‘프로그래밍’하며, 심지어 ‘AI 에이전트 시스템‘을 설계하는 단계에 이르렀습니다.

이 글에서는 프롬프트 엔지니어링의 핵심 이론이 어떻게 4단계에 걸쳐 진화했는지, 그 여정을 알기 쉽게 추적해 봅니다.

1단계: “예시를 보고 배워라” (컨텍스트 내 학습, ICL)

모든 것은 2020년 GPT-3 논문(“Language Models are Few-Shot Learners“)에서 시작되었습니다. 이 논문 이전의 ‘프롬프트’는 단순한 ‘입력’이었습니다. 하지만 이 논문 이후, ‘프롬프트’는 모델을 실시간으로 프로그래밍하는 ‘컨텍스트 내 학습(In-Context Learning, ICL)‘ 도구로 격상됩니다.

핵심은 이겁니다. AI가 별도 학습(fine-tuning) 없이도, 프롬프트 안에 주어진 예시만 보고 새로운 작업을 배운다는 것이죠.

  • Zero-shot (예시 없음): 지시만 합니다. 예: “이 문장을 프랑스어로 번역해:”
  • One-shot (예시 1개): 예시를 하나 줍니다. 예: “바다 → sea, 치즈 → ?”
  • Few-shot (예시 여러 개): 여러 예시를 줍니다. 예: “바다 → sea, 강 → river, 치즈 → ?”

마치 우리가 신입사원에게 일을 가르칠 때 “여기 샘플 파일들 있으니, 이거 보고 알아서 잘 해봐”라고 하는 것과 비슷합니다. 놀랍게도 모델의 덩치(매개변수)가 클수록 이 “알아서 잘하는” 능력(창발적 속성)이 급격히 좋아졌습니다.

2단계: “과정을 생각하게 하라” (CoT & SC)

1단계가 모델의 ‘지식’을 꺼내는 데 집중했다면, 2단계는 모델의 ‘논리적 추론 과정‘ 자체를 유도합니다.

2.1 Chain-of-Thought (CoT): 생각의 사슬

2022년 구글 리서치는 LLM이 복잡한 산수 문제에서 정답만 맞히려다 자주 틀린다는 것을 발견했습니다.

❌ 잘못된 사례 (표준 프롬프트):
Q: “로저는 테니스공 5개가 있습니다. 그는 2캔의 테니스공을 샀고, 각 캔에는 3개의 공이 있습니다. 그는 지금 몇 개의 공을 가지고 있나요?”
A: “8개” (땡!)

✅ 올바른 사례 (CoT 프롬프트):
Q: (동일한 질문)
A: “로저는 5개의 공으로 시작했습니다. 2캔의 테니스공을 샀고, 각 캔에는 3개의 공이 있으므로 2 * 3 = 6개의 공을 새로 얻었습니다. 따라서 총 5 + 6 = 11개의 공을 가지고 있습니다.” (정답!)

CoT는 모델이 정답으로 ‘점프’하지 않고, ‘중간 계산 과정‘을 스스로 생각하도록 유도합니다. 학생에게 “답만 적지 말고 풀이 과정을 써!”라고 말하는 것과 같습니다.

2.2 Zero-Shot CoT: 마법의 주문

그런데 꼭 이렇게 복잡한 예시를 매번 만들어야 할까요? 놀랍게도 프롬프트 끝에 “Let’s think step by step (단계별로 생각해보자)”라는 말 한마디만 붙여도, AI가 알아서 풀이 과정을 생성하며 정답률이 극적으로 향상되었습니다. 우리가 알던 그 ‘마법의 주문’의 정체가 바로 이것입니다.

2.3 Self-Consistency (SC): 다수결의 원칙

CoT도 완벽하진 않았습니다. 만약 그 첫 번째 풀이 과정이 틀리면 답도 틀리니까요.

그래서 ‘Self-Consistency (SC)‘ 기법이 나왔습니다. 이는 마치 “여러 명의 전문가에게 물어보고 가장 많이 나온 답을 고르자”는 아이디어와 같습니다.

  • 모델에게 같은 질문을 여러 번 해서 (온도를 높여) 다양한 풀이 과정을 생성하게 합니다.
  • 가장 많이 나온(일관된) 최종 답을 정답으로 선택합니다. (다수결 투표)

CoT가 추론을 하나의 선(linear)으로 만들었다면, SC는 여러 개의 선(parallel)을 만들어 안정성을 극대화한 셈입니다.

3단계: “스스로 탐색하고 행동하라” (ToT & ReAct)

이제 AI는 단순한 답변자를 넘어, 스스로 생각하고 외부 도구와 상호작용하는 ‘에이전트‘가 됩니다.

3.1 Tree of Thoughts (ToT): 생각의 나무 (탐색)

CoT나 SC는 한 방향으로만 갔습니다. 중간에 길이 막히거나 잘못된 길로 들어서도 되돌아오지 못했죠.

ToT는 이 문제를 해결합니다. 마치 복잡한 미로를 탐색하듯, LLM이 여러 ‘생각의 가지(Tree of Thoughts)‘를 뻗어 나갑니다.

  • 생성: 각 단계에서 여러 다음 ‘생각’을 생성합니다. (여러 갈래 길)
  • 평가: LLM이 스스로 “이 길이 유망한가?”를 평가합니다.
  • 탐색: 가치가 낮은 길은 버리고(가지치기), 가장 유망한 길을 탐색합니다. 길이 막히면 뒤로 돌아가(백트래킹) 다른 길을 시도합니다.

ToT의 혁신은 LLM을 ‘생성자‘이자 ‘평가자‘로 동시에 활용하고, 고전 AI의 ‘탐색 알고리즘‘과 결합했다는 점입니다.

3.2 ReAct: 추론하고 행동하라 (도구 사용)

지금까지의 모든 기법은 AI의 ‘뇌 속‘에서 일어나는 일이었습니다. 하지만 LLM은 훈련 데이터에 갇혀 있어 최신 정보를 모르거나 거짓말(환각)을 하기 쉽습니다.

ReAct는 이 문제를 ‘행동(Acting)‘으로 해결합니다. AI가 막히는 부분이 있으면 ‘추론(Reasoning)‘을 통해 필요한 ‘행동‘을 결정합니다. “모르겠으면 검색해봐!” 혹은 “계산기 써!”라고 가르치는 것과 같습니다.

ReAct는 (생각, 행동, 관찰)의 사이클을 돕니다.

  • Thought (생각): “현재 질문에 답하려면 A 정보가 필요해.”
  • Action (행동): “외부 위키피디아 API로 A를 검색해야겠다.”
  • Observation (관찰): “검색 결과 ‘A는 B이다’라는 정보를 얻었다.”
  • Thought (생각): “좋아, 이제 A가 B라는 것을 알았으니 다음 단계로…”

ReAct는 AI가 ‘닫힌 세계’에서 ‘열린 세계’로 나와 외부 도구(API)와 연동하는, 현대 AI 에이전트의 핵심 이론이 되었습니다.

4단계: “최적의 프롬프트를 찾아라” (APE & OPRO)

가장 진보된 단계는 프롬프트 엔지니어링 과정 자체를 자동화하는 것입니다. “프롬프트 짜는 것도 귀찮으니, AI 네가 알아서 제일 좋은 프롬프트를 만들어 봐”라는 단계입니다.

  • APE (자동 프롬프트 엔지니어): LLM이 수많은 ‘지시어 후보‘를 생성하고, 이 중 가장 성능이 좋은 프롬프트를 골라냅니다.
  • OPRO (프롬프트를 통한 최적화): 여기서 한발 더 나아가, LLM 자체를 ‘최적화기‘로 씁니다. LLM에게 (1) 이전에 시도한 프롬프트와 (2) 그 성능 점수를 알려줍니다. LLM은 이 ‘오답노트‘를 보고 더 나은 프롬프트를 생성해냅니다.

놀랍게도 이렇게 AI가 자동으로 최적화한 프롬프트가 인간이 정교하게 설계한 프롬프트보다 더 높은 성능을 보이기도 했습니다.

결론: 팁을 넘어 이론으로

프롬프트 엔지니어링의 진화 과정을 돌아보면, 우리가 LLM의 잠재력을 어떻게 끌어내려 했는지 명확히 보입니다.

  • 1단계 (기초): 예시(ICL)를 통해 AI를 ‘프로그래밍’하는 법을 발견했습니다.
  • 2단계 (중급): ‘지식’을 넘어 ‘추론 과정'(CoT, SC)을 유도하는 법을 배웠습니다.
  • 3단계 (고급): AI가 스스로 탐색(ToT)하고 외부 도구(ReAct)를 쓰는 ‘에이전트’로 설계하기 시작했습니다.
  • 4단계 (메타): 이제는 이 ‘설계 과정 자체를 자동화(OPRO)’하고 있습니다.

“Let’s think step by step” 같은 단순한 팁을 넘어 이 이론적 배경을 이해한다는 것은, LLM의 한계를 명확히 인지하고 그 잠재력을 체계적으로 활용할 수 있는 진짜 ‘열쇠’를 쥐게 된다는 의미입니다.

프롬프트 엔지니어링, 이제는 과학입니다

AI의 진정한 능력을 깨우는 이론적 배경과 실전 전략을 우리 블로그에서 만나보세요. 팁에서 과학으로, 감에서 체계로 나아가는 당신의 여정을 함께합니다.

Similar Posts