My AI Smarteasy와 글 읽기 – Tree of Thoughts 소스코드 분석 – AI 시대 앱 개발 – 로직 중심에서 의미 중심으로

Tree of Thoughts 소스코드 분석 – AI 시대 앱 개발 – 로직 중심에서 의미 중심으로

 

네, 알겠습니다! 일타 강사 저스틴, 출격합니다! 오늘 강의는 Catch Up AI 님의 유튜브 스크립트를 기반으로 진행됩니다 [i].

AI 시대 앱 개발, 로직 중심에서 의미 중심으로! (1편)

여러분, 안녕하세요! 일타 강사 저스틴입니다. 오늘은 AI 어플리케이션 개발, 그중에서도 Tree of Thoughts(ToT)라는 아주 흥미로운 논문을 LangGraph 소스 코드로 파헤쳐 보는 시간을 갖겠습니다 [i]. 자, 오늘 우리가 주목해야 할 부분은 바로 **”의미”**입니다.

AI, 의미를 먹고 산다! ⭐⭐⭐

기존 앱 개발은 데이터 구조, 타입, 조건문, 반복문 등 ‘구조’를 중심으로 이루어졌죠 [i]. 마치 레고 블록을 조립하듯이, 정해진 규칙에 따라 딱딱 맞춰 쌓아 올리는 느낌이었어요. 하지만 AI는 어떻죠? ‘의미’를 이해하고 해석하며, 그 의미에 따라 반응합니다 [i]. 마치 살아있는 생명체처럼, 맥락을 파악하고 유연하게 대처하는 거죠.

유튜버 Catch Up AI 님께서 아주 멋진 비유를 해주셨는데요 [i]. 기존 앱은 ‘구조(Structure)’를 따르지만, AI는 ‘의미(Meaning)’를 따른다는 겁니다. 완전히 다른 언어를 사용하는 셈이죠. 마치 한국어와 영어를 번역하는 통역사처럼, AI 어플리케이션 개발자는 ‘의미’를 구조화하고 앱 언어로 다시 표현하는 역할을 해야 합니다. 자, 이 부분은 별표 세 개! ⭐⭐⭐

Tree of Thoughts, AI의 사고 과정을 엿보다!

오늘 강의에서는 프린스턴, Google DeepMind에서 발표한 Tree of Thoughts 논문을 LangGraph 구조 안에서 구현한 예제를 살펴볼 겁니다 [i]. 이 논문의 핵심은 바로 세 가지 단계, 즉 Expand(확장), Score(평가), Prune(가지치기)입니다 [i].

  1. Expand(확장): 유저의 인풋에 대해 다양한 가능성, 즉 ‘thought’들을 확장해 나가는 단계입니다 [i]. 마치 여러 갈래의 길을 탐색하듯이, 다양한 아이디어를 펼쳐놓는 거죠.
  2. Score(평가): 확장된 thought들을 평가하여 점수를 매기는 단계입니다 [i]. 각각의 아이디어가 얼마나 현실적인지, 얼마나 문제 해결에 도움이 되는지 판단하는 거죠.
  3. Prune(가지치기): 평가 결과, 상위 K개를 제외한 나머지 thought들을 제거하는 단계입니다 [i]. 마치 정원사가 불필요한 가지를 쳐내듯이, 가능성이 낮은 아이디어를 과감하게 버리는 거죠.

Catch Up AI 님께서는 이 세 가지 핵심 개념을 소스 코드에서 어떻게 구현했는지 아주 자세하게 설명해주셨습니다 [i]. 특히, AI에게 “왜 그렇게 생각했는지” 그 과정을 설명하도록 지시하는 부분 [i]. 이것이 바로 ToT에서 중요하게 보는 셀프 평가(Self-Evaluation)와 백트래킹(Backtracking)을 가능하게 하는 핵심 요소입니다.

AI 응답, 구조화가 생명! 🧱

AI는 자유로운 형식으로, 때로는 예상치 못한 방식으로 답변을 내놓습니다 [i]. 하지만 우리가 원하는 것은 단순히 텍스트로 된 답변이 아니죠. 컴퓨터가 이해하고 활용할 수 있는 ‘구조화된 데이터’입니다. 이를 위해 Catch Up AI 님께서는 AI에게 Reverse Polish Notation(RPN, 역 폴란드 표기법)으로 수식을 표현하도록 요청하는 방법을 소개해주셨습니다 [i].

RPN은 연산자를 피연산자 뒤에 위치시키는 표기법으로, 괄호 없이도 연산 순서를 명확하게 할 수 있다는 장점이 있습니다 [i]. 마치 계산기처럼, 앞에서부터 차례대로 계산하면 되는 거죠. AI가 RPN으로 수식을 표현하면, 우리는 ‘컴퓨트 메서드’를 사용하여 AI의 답변을 정확하게 계산하고 활용할 수 있습니다.

AI 앱 개발, 통역사가 되자! 🤝

자, 여기서 중요한 포인트! AI 앱 개발자는 AI와 기존 어플리케이션 언어 사이의 ‘통역사’ 역할을 해야 한다는 겁니다 [i]. AI가 생성한 자유로운 응답을 컴퓨터가 이해할 수 있는 구조로 바꾸고, 그 의미를 정확하게 해석해야 합니다.

Catch Up AI 님께서는 이를 위해 ‘시스템 프롬프트’와 ‘유저 프롬프트’를 활용하는 방법을 설명해주셨습니다 [i]. 시스템 프롬프트는 AI의 역할을 설정하고, 유저 프롬프트는 실제 문제를 전달하는 역할을 합니다. 또한, 프롬프트 내에 플레이스 홀더(Placeholders)를 사용하여 동적으로 값을 채워 넣을 수 있습니다.

첫 번째 영상, 마무리! 👋

오늘 강의에서는 Tree of Thoughts 논문에서 제시한 추론 방법론을 실제 코드로 구현하고, AI 어플리케이션이 기존 어플리케이션 개발과 어떤 차이가 있는지 살펴봤습니다 [i]. AI는 의미를 다루고, 기존 개발 언어는 데이터 구조 등을 다루기 때문에 개발자는 그 사이에서 통역사의 역할을 해야 한다는 점, 잊지 마세요!

그리고 그 통역의 핵심은 AI로부터 구조화된 아웃풋(Structured Output)을 이끌어내서 기존 앱의 툴(함수)에서 사용할 수 있도록 AI 응답을 구조화하는 방법에 있다는 것을 확인했습니다 [i].

다음 강의 예고! 📢

다음 강의에서는 LangGraph에서 가장 핵심적인 부분인 그래프(Graph)를 구성하는 방법을 알아볼 겁니다 [i]. 첫 번째 영상에서 구현한 로직들을 어떻게 조화롭게 구성하고 실행하는지 함께 공부할 거고요. 실행 후에는 LangSmith에 남아있는 로그들을 분석하면서 ToT를 구현한 여러 클래스와 함수들이 실제로 LangGraph의 Flow를 따라서 어떻게 진행되는지 자세히 살펴볼 겁니다.

자, 그럼 다음 강의도 놓치지 마시고, 좋아요 👍와 구독 🔔 잊지 마세요! 지금까지 일타 강사 저스틴이었습니다!

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*