본문 바로가기

공부방

프롬프트 엔지니어링 6편 | Tree of Thoughts(ToT), reason&act(ReAct)

딱 한 줄 바꿨을 뿐인데, 답변의 퀄리티가 이렇게 차이난다고? 맞습니다. 똑같은 돈을 내고 AI 모델을 사용하더라도, 어떻게 질문을 하느냐에 따라 얻을 수 있는 결과는 천차만별입니다. 어떻게 하면 AI의 성능을 최대로 끌어내어 정확하고 의미있는 답변을 출력하게 할 수 있을까요? 구글에서 발간한 화제의 백서, “Lee Boonstra의 프롬프트 엔지니어링 백서”를 보면 알 수 있습니다. 원문은 모두 영어로 되어 있는데요. 이번 백서의 내용을 꼼꼼히 공부하고, 직접 실험해보면서 중요한 개념들을 해설하는 시리즈를 기획했습니다. 총 8편에 걸쳐 진행될 예정이며, 구글 백서 원문은 이곳(링크)에서 확인할 수 있습니다. 

[구글 프롬프트 엔지니어링 백서 파헤치기 시리즈]

1편 - LLM의 작동 방식과 config 조정하기
2편 - 일반 프롬프트, 제로샷, 원샷, 퓨샷
3편 - 시스템, 컨텍스트, 역할 프롬프트
4편 - 스텝백 프롬프트
5편 - CoT, 자기 일관성
6편 - ToT, ReAct(현재글)
7편 - 자동 프롬프트 엔지니어링, 코드, 멀티모달
8편(완) - 이렇게 쓰세요! 최종 정리


지난 편에서 CoT와 self-consistency 프롬프팅에 대해 알아보았는데요. 이번 편에서는 CoT 프롬프팅 개념을 일반화하여 여러 추론 경로를 동시에 탐색할 수 있도록 한 ToT에 대해 알아보고, 에이전트로 가는 첫 걸음인 ReAct까지 함께 다뤄보겠습니다. 

 

쑥쑥 자라라, 생각의 나무! 

ToT는 Tree of Thoughts의 줄임말로 말 그대로 생각의 나무입니다. CoT에서 더 발전된 형태라고 할 수 있는데요. CoT는 단일하고 선형적인 사고의 연쇄 과정을 따르지만, ToT는 여러 가능한 추론 경로를 동시에 탐색합니다. 체스 게임을 할 때 머릿 속에서 여러 수를 시뮬레이션하는 것처럼 말이죠. 

실제 ToT 기법은 인간이 생각하는 방식에서 아이디어를 얻어 개발된 기법입니다. 사람은 복잡한 추론을 해야할 때 시행착오를 반복하며 해결합니다. 마치 나무가 줄기를 뻗듯이 하나의 생각에서 여러 생각이 뻗어나갑니다. 여러 생각 중 하나를 선택했는데 그 결과가 잘못됐다면 이전 생각으로 돌아가 다른 가능성을 탐색합니다. 이렇게 필요할 때마다 ‘백트래킹(되돌아가기)’을 하며 문제를 유연하게 풀어나갑니다. ToT는 문제 해결을 위해 사고 과정을 기억하고, 이전 단계로 백트래킹할 수 있도록 설계된 기법입니다. 

출처: 구글 프롬프트 엔지니어링 백서. 왼쪽 그림이 CoT, 오른쪽이 ToT.

어떻게 작동하나요?

  1. 생각의 나무 구성: 모델은 특정 문제에 대해 여러 가능한 중간 사고 과정(노드)을 생성합니다. 각 노드는 문제 해결을 향한 일관된 언어 시퀀스입니다.
  2. 분기와 탐색: 이러한 중간 단계에서 모델은 다양한 방향으로 분기하며, 각 경로마다 다른 추론 과정을 탐색합니다.
  3. 평가와 선택: 모델은 각 경로의 가능성과 유용성을 평가하고, 가장 유망한 경로를 더 깊이 탐색합니다.
  4. 백트래킹: 필요한 경우 이전 노드로 돌아가 다른 경로를 시도할 수 있습니다.

 

ToT는 복잡하고 다단계 추론이 필요한 문제에 효과적인 테크닉입니다. 여러 가능성을 동시에 탐색해야 하는 스도쿠 게임처럼 말이죠. ('대규모 언어 모델 안내 생각의 나무(Large Language Model Guided Tree-of-Thought)' 논문에서 ToT 기법의 효과를 스도쿠로 검증했습니다.) 

또한 ToT는 단일 경로에 의존하지 않고 여러 가능성을 고려하기 때문에 더 창의적인 해결책을 찾을 수도 있습니다. 문제를 다양한 각도에서 접근하여 균현 잡힌 해결책을 제시한다는 장점도 있습니다. 백트레킹이 가능하므로 하나의 경로가 막히면 다시 돌아가 다른 경로를 시도할 수 있어 오류를 복구하는 능력이 향상됩니다. 

ToT 프롬프팅 기법을 적용한 프롬프트 예시를 몇 가지 살펴보겠습니다. ToT 기법을 이용해 프롬프트를 작성하기 위해서는 추론 단계를 지정하고. 각 단계에서 고려해야할 사항과 중간 평가를 하도록 해야 합니다. (프롬프트를 작성하는 것 자체가 고난이도인 셈)

논리 퍼즐을 하나 풀어보겠습니다. 

일반 프롬프트를 사용할 때:
A는 항상 거짓말을 하고, B는 항상 진실을 말하고, C는 무작위로 거짓말을 하거나 진실을 말합니다. A가 '나는 거짓말쟁이다'라고 말했고, B가 'A는 진실을 말하고 있다'고 말했으며, C가 'B는 거짓말쟁이다'라고 말했습니다. C는 진실을 말하고 있나요, 거짓말을 하고 있나요?
ToT 프롬프트를 사용할 때:
A는 항상 거짓말을 하고, B는 항상 진실을 말하고, C는 무작위로 거짓말을 하거나 진실을 말합니다. A가 '나는 거짓말쟁이다'라고 말했고, B가 'A는 진실을 말하고 있다'고 말했으며, C가 'B는 거짓말쟁이다'라고 말했습니다. C는 진실을 말하고 있나요, 거짓말을 하고 있나요?

이 논리 퍼즐을 풀기 위해 다음과 같은 다양한 사고 경로를 탐색해 보세요:

1. A의 발언 분석: A가 항상 거짓말을 한다면, '나는 거짓말쟁이다'라는 발언의 논리적 결과는 무엇인가?
   - 이 명제가 모순을 만드는지 확인
   - 가능한 모든 해석 탐색

2. B의 발언 분석: B가 항상 진실을 말한다면, 'A는 진실을 말하고 있다'는 발언은 무엇을 의미하는가?
   - A의 발언과 B의 발언 사이의 관계 탐색
   - 논리적 일관성 검토

3. C의 발언 분석: 'B는 거짓말쟁이다'라는 C의 발언이 참인 경우와 거짓인 경우 모두 고려
   - 각 시나리오에서의 논리적 결과 추적
   - 다른 발언들과의 일관성 검증

결론에 도달하기 전에 발생할 수 있는 논리적 역설이나 모순을 주의깊게 살펴보고, 필요하다면 문제의 가정을 재검토하세요.

결과는 어떻게 나왔을까요? 

 

수학 문제가 아닌 복잡한 텍스트를 분석, 해석하는 문제에서도 ToT는 다양한 관점으로 해석할 수 있도록 합니다. 

이번에는 햄릿의 독백을 분석하는 문제로 예시를 살펴보겠습니다. 

일반 프롬프트:
햄릿의 '죽느냐 사느냐, 그것이 문제로다' 독백을 분석하고 이 텍스트가 작품 전체의 주제와 어떻게 연결되는지 설명하세요.
ToT 프롬프트:
햄릿의 '죽느냐 사느냐, 그것이 문제로다' 독백을 분석하고 이 텍스트가 작품 전체의 주제와 어떻게 연결되는지 설명하세요.

이 문학 분석을 위해 다음과 같은 사고 경로들을 탐색해보세요:

1. 언어 및 수사적 분석:
   - 햄릿이 사용하는 핵심 은유와 이미지
   - 이중적 의미를 가진 단어들
   - 운율 패턴과 그 효과
   - 수사적 질문의 역할

2. 철학적 관점:
   - 존재에 대한 질문
   - 자살과 도덕적/종교적 함의
   - 행동 대 무행동의 딜레마
   - 지식과 불확실성의 테마

3. 작품 전체와의 연결:
   - 햄릿의 성격 발전과의 관계
   - 복수 주제와의 연결
   - 극의 다른 부분들과의 병렬 구조
   - 셰익스피어의 다른 비극들과의 비교

4. 역사적/문화적 맥락:
   - 르네상스 시대의 철학적 사고
   - 당시 영국의 종교적 관점
   - 셰익스피어 시대의 자살 인식
   - 원작과 셰익스피어의 해석 차이

각 경로를 탐색한 후, 가장 설득력 있는 통찰들을 통합하여 이 독백이 작품의 더 넓은 맥락에서 갖는 의미를 종합적으로 분석해주세요.

결과는 여러분이 직접 테스트해보면서 비교해보세요. 은근히 읽는 재미가 있습니다.

 

ReAct(reason & act, 추론 & 행동)

ReAct는 범상치 않은 이름만큼이나 범상치 않은 능력을 가진 기법입니다. ReAct는 자연어 추론을 하는 LLM의 능력에 “외부 도구”를 사용할 수 있도록 결합해주는 테크닉을 말합니다. 사람도 두뇌가 퉁 안에 가만히 담겨 있다면 그 안에서 추론은 할 수 있을(?)지 몰라도, 외부 도구들(손이나 발, 눈, 코, 입 등 우리 신체)을 통해 훨씬 더 많은 일을 할 수 있듯이 말이죠. LLM도 마치 인간처럼 생각하고 행동할 수 있도록 만들어주는 것이 ReAct입니다. 

ReAct는 생각하고 행동하는 루프를 돌며 작동합니다. 

  1. 추론(Reason): LLM이 문제를 분석하고 해결 계획을 세웁니다.
  2. 행동(Act): 계획에 따라 행동을 수행합니다(예: 검색, 계산 등).
  3. 관찰(Observe): 행동의 결과를 관찰합니다.
  4. 반복: 관찰한 결과를 바탕으로 다시 추론하고 새로운 행동을 취합니다.

이 과정은 문제가 해결될 때까지 계속됩니다.

그런데 LLM이 어떻게 외부 도구를 사용하고, ‘행동’을 할 수 있다는 걸까요? 여러가지 방식이 있겠지만, 가장 간단한 예시가 외부 API와 연결하는 것입니다. 구글 백서에서는 SerpAPI라는 검색 엔진 결과를 가져올 수 있게 하는 API를 이용해 예시를 들었습니다. 

출처: 구글 프롬프트 엔지니어링 백서

프롬프트로 메탈리카 밴드위 총 자녀 수를 물었는데요. 이 질문에 대해 ReAct가 어떻게 작동하고 있는지 하나씩 살펴보겠습니다. 

1단계: 초기 추론
생각: 메탈리카 밴드 멤버들의 총 자녀 수를 알아내려면, 먼저 메탈리카의 구성원이 누구인지 알아야겠다.
행동: 검색[메탈리카 현재 밴드 멤버]

2단계: 첫 번째 검색 결과 관찰
관찰: 메탈리카의 현재 멤버는 제임스 헤트필드(보컬/기타), 라스 울리히(드럼), 커크 해밋(기타), 로버트 트루히요(베이스)입니다.

3단계: 새로운 추론과 행동
생각: 이제 각 멤버의 자녀 수를 알아내야겠다. 먼저 제임스 헤트필드부터 시작하자.
행동: 검색[제임스 헤트필드 자녀 수]

4단계: 두 번째 검색 결과 관찰
관찰: 제임스 헤트필드는 3명의 자녀가 있습니다.

5단계: 계속해서 각 멤버별 정보 수집
생각: 다음으로 라스 울리히의 자녀 수를 알아보자.
행동: 검색[라스 울리히 자녀 수]
관찰: 라스 울리히는 2명의 자녀가 있습니다.

생각: 다음은 커크 해밋이다.
행동: 검색[커크 해밋 자녀 수]
관찰: 커크 해밋은 자녀가 없습니다.

생각: 마지막으로 로버트 트루히요를 확인하자.
행동: 검색[로버트 트루히요 자녀 수]
관찰: 로버트 트루히요는 1명의 자녀가 있습니다.

6단계: 최종 답변 도출
생각: 이제 모든 멤버의 자녀 수를 알았으니 합산해보자. 제임스(3명) + 라스(2명) + 커크(0명) + 로버트(1명) = 총 6명이다.

최종 답변: 메탈리카 밴드 멤버들의 총 자녀 수는 6명입니다.

 

저는 메탈리카라는 그룹을 모르니, BTS의 나이의 총합에 대해 물어보았습니다. 2022년 기준으로 답을 해줘서 결과는 정확하지 않지만, 과정은 동일하게 추론을 먼저 하고 외부 API를 활용해 검색을 하여 결과를 가져오고, 결과값을 모두 더하고 있습니다. 

ReAct는 현재 AI 개발 생태계에서 크게 주목받고 있습니다. 실제 AI 제품들에도 ReAct 패러다임이 속속 들어가고 있는 추세인데요. 요즘에는 챗GPT 웹 화면에 ‘검색’ 버튼이 대표적인 예입니다. 이 외에도 ChatGPT의 plugin 시스템, Claude의 도구 활용 기능, Google의 Gemini 등 많은 주요 AI 제품들이 내부적으로 ReAct를 활용하고 있습니다. 

특히 MCP(Multi-agent Conversational Paradigm)나 RAG(Retrieval-Augmented Generation)와 함께 사용되는 경우가 많은데요. 대규모 문서 데이터베이스를 저장해두고 문서를 검색하여 LLM 응답을 강화하는 방식의 RAG는 “행동”의 역할을 할 수 있습니다. 즉, 추론과 행동에서 행동 단계에 RAG를 사용하는 것이죠. 

예를 들면, 금융 자문 AI 시스템을 만든다고 가정했을 때 RAG로 금융 데이터들을 검색하고, ReAct로 투자 전략을 추론한 뒤에 필요에 따라 다른 전문 에이전트(MCP)를 활용하는 방식도 가능합니다. 

 

더 읽으면 좋은 글

2025.04.16 - [AI 안테나] - RAG 개념 원리 | LLM에게 진짜 일 시키기 위해 필요한 기술

 

RAG 개념 원리 | LLM에게 진짜 일 시키기 위해 필요한 기술

#RAG챗GPT에게 일을 시켜본 적 있으신가요? 생각보다 어려울 거예요. 아무리 AI가 지식이 많고 뛰어나다 하더라도, 여러분의 회사나 업무에 관한 전문적인 지식까지 모두 가지고 있지는 않기 때문

working-with-science.tistory.com

 

2025.04.10 - [AI랑 상관 있는 이야기들] - 비슷한 것 같으면서도 다른 MCP vs RAG vs AI Agent, 무슨 차이일까?

 

비슷한 것 같으면서도 다른 MCP vs RAG vs AI Agent, 무슨 차이일까?

지난 글에 이어서 씁니다. 이번 글 역시 업스테이지 프라이빗 세미나 2회차 내용을 바탕으로 작성했습니다. 이 세미나는 업스테이지 테크 리드 박준현 님이 나와 “AI Agent/ RAG 기술 동향”을 주

working-with-science.tistory.com

2025.04.08 - [AI 안테나] - 요즘 가장 핫한 MCP, LLM에 손발을 붙여주다

 

요즘 가장 핫한 MCP, LLM에 손발을 붙여주다

LLM에 손발을 붙여준 MCP 가장 직관적이고 쉽게 비유를 해볼께요. 만약 LLM이 뇌라고 한다면 MCP는 눈, 코, 입, 귀, 손을 붙여줘요. 예전에는 눈을 붙이고, 코를 붙일 때 각각 다른 연결 방식을 썼는

working-with-science.tistory.com

 


재밌게 읽으셨나요?
이 글이 흥미로웠다면 제가 직접 쓰고 만드는
AI 안테나 뉴스레터도도 재밌을 거예요!
매주 수요일마다 주요 AI 소식과 인사이트를
메일함에 넣어드립니다.
AI 안테나에서 또 만나요.

https://eddienewsletter.stibee.com/

 

AI안테나

인공지능과 함께 만드는 AI 뉴스

eddienewsletter.stibee.com