Skip to main content

Falcon OS 2편: ReAct로 구현하는 LLM 의사결정

이 글에서는 ReAct 프레임워크를 통해 LLM 의사결정 개념을 살펴봅니다. 이 문서는 AI 번역본입니다. 오역이 있을 경우 댓글로 알려주세요.
Created on September 12|Last edited on September 12
이 글은 대규모 언어 모델(LLM)로 구동되는 오픈소스 운영체제인 Falcon OS에 관한 연재의 두 번째 게시물입니다. 첫 번째 글에서에서는 Falcon 40B 모델과 이 프로젝트에 대한 제 비전을 소개했습니다. 이제 핵심 과제 중 하나로 넘어가 보겠습니다. Falcon LLM이 어떻게 스스로 판단하고 지능적으로 행동하도록 만들 수 있을까요?

소개

Falcon OS 같은 AI 기반 운영체제가 다음과 같은 사용자 요청을 받는 상황을 상상해 보세요. “이 실적 보고서를 요약하고, 불일치 사항이 있으면 찾아 표시한 뒤, 핵심 요점을 내 회계사에게 이메일로 보내 주세요.” 꽤 복잡한 작업이지 않나요? 복잡한 문서를 읽고 이해하는 것부터 잠재적 문제를 표시하고, 전문적인 이메일을 작성하는 데 이르기까지 여러 능력이 필요합니다. 이러한 과제는 어떤 LLM 운영체제(LLM OS)라도 마주하고 해결할 수 있어야 합니다.
하지만 LLM에게 이런 종류의 결정을 내리도록 어떻게 프롬프트할 수 있을까요? 단순히 요약을 쓰거나 창의적인 텍스트를 만들어 내는 수준을 훨씬 넘어섭니다. 모델은 추론하고, 행동하기로 결정해야 합니다. 올바른 소프트웨어 도구를 어떻게 선택할까요? 그 도구들과는 어떤 형식으로 소통해야 할까요? 이것이야말로 진정한 LLM 기반 운영체제를 위해 우리가 해결해야 할 과제입니다.
이 글에서는 LLM이 이러한 방식으로 의사결정을 하도록 유도하는 방법을 살펴보겠습니다. 우리는 다음을 다룰 것입니다 ReAct 프레임워크 그리고 최첨단 AI 모델들이 이 특정 작업을 얼마나 잘 수행하는지 확인해 보겠습니다 의사결정.



ReAct: LLM이 추론하고 의사결정을 하도록 프롬프트하기

우리가 LLM으로부터 창의적인 텍스트나 요약을 받는 것을 좋아하더라도, 진정한 힘은 문제를 해결하는 능력에 있습니다. 이를 효과적으로 수행하려면 텍스트를 넘어서야 합니다. Falcon OS가 올바른 도구를 선택하고 실제로 활용하는 의사결정을 하지 못한다면, 그 유용성은 제한될 것입니다.
그렇다면 질문은 이렇게 바뀝니다. LLM에게 그런 선택을 하도록 어떻게 가르칠까요? 그 해답이 바로 ReAct (추론 & 행동프레임워크가 등장합니다."
이제 더 일반적인 Chain-of-Thought(CoT) 접근법과 비교해 봅시다. CoT는 LLM이 문제를 더 작은 단계로 나누어 단계별로 추론하도록 장려합니다. CoT는 유용하지만, LLM의 내부 지식 기반 안에서만 작동하기 때문에 정확도와 실제 세계와의 동적 상호작용 능력에 한계가 있을 수 있습니다.
대표적인 Chain-of-Thought 예시
CoT 추론은 모델이 자체 내부 표현을 사용해 생각을 생성하고 외부 세계에 근거하지 않는 정적인 블랙박스이기 때문에, 반응적으로 추론하거나 지식을 갱신하는 능력이 제한됩니다. 그 결과 추론 과정 전반에서 환각과 오류 전파 같은 문제가 발생할 수 있습니다.
2022년 10월에 소개된 ReAct 프레임워크는 체인 오브 생각 방식에 “행동”과 “관찰” 단계를 추가해 확장합니다. 본질적으로 ReAct는 LLM이 외부 도구와 정보와 상호작용할 수 있게 하여 문제 해결 능력을 넓혀 주며, 문제가 자체적인 언어 생성만으로 해결되지 않을 수 있고 외부 도구의 선택과 사용이 필요할 수 있음을 LLM이 인식하도록 돕습니다.
ReAct의 주요 목표는 LLM의 언어 생성 능력과 실제 세계에서의 행동 및 문제 해결 필요 사이의 간극을 메우는 것입니다. 텍스트 생성에만 그치지 않고 여러 단계와 도구가 얽힌 복잡한 작업을 조율하는 존재로 LLM을 전환하는 데 목적이 있습니다. ReAct 프레임워크를 활용하는 LLM은 과정을 다음과 같이 분해합니다:
  • 문제를 이해하기LLM은 사용자가 제시한 작업이나 질문을 신중하게 분석합니다. 어떤 유형의 문제인지 판단하기 위해 키워드와 패턴을 찾습니다.
  • 도구 모음을 검토하기LLM은 접근할 수 있는 도구(또는 에이전트)를 검토합니다. 여기에는 계산기와 Python 인터프리터부터 데이터베이스 조회 시스템, 심지어 웹 검색 기능까지 모두 포함될 수 있습니다. 각 도구는 고유한 강점을 갖습니다.
  • 가장 적합한 도구 선택하기여기서부터가 흥미로운 지점입니다. LLM은 ���떤 도구가 문제 해결에 가장 도움이 될지 결정해야 합니다. 수학 문제라면 계산기를 써야 할까요, 사실 확인이라면 데이터베이스를 조회해야 할까요?
  • 입력을 구성하기도구를 결정했으면, LLM은 사용자의 원래 질문이나 작업을 선택된 도구가 요구하는 특정 입력 형식으로 변환해야 합니다. 이는 도구마다 작동 방식이 다르기 때문에 이를 이해해야 하므로 복잡해질 수 있습니다.
  • 실행하고 해석하기LLM은 도구 핸들러에 지시하여 준비한 입력으로 선택한 도구를 실행합니다. 여기에는 API 호출, 계산 실행, 검색 수행 등이 포함될 수 있습니다. 도구 핸들러는 응답을 반환하며, LLM은 그 결과를 이해하기 위해 이를 파싱하고 해석해야 합니다.
  • 자연어 응답 생성하기마지막으로, 도구 출력에서 얻은 인사이트를 바탕으로 LLM은 사용자의 원래 질문이나 과제를 해결하는 자연어 응답을 작성합니다.

인터넷 검색, 데이터베이스, 문서 저장소 같은 도구에 접근할 수 있는 LLM이 수행하는 ReAct 흐름.

ReAct 예시

ReAct 프레임워크는 이론상으로는 좋아 보이지만, 실제로 효과가 있을까요? 최첨단 LLM이 등장하는 구체적인 예시를 살펴보겠습니다(이번 예시에서는 사용합니다). Gemini Ultra)은(는) 해당 과제를 성공적으로 해결하고 실제 환경에서의 진정한 의사결정 능력을 입증합니다.
LLM에게 두 도시 사이의 거리를 물어보겠습니다. 모델이 내부 지식에만 의존해 답하지 않도록, 외부 도구를 사용하도록 유도하려 합니다. 선택지로 두 가지 도구를 제공합니다: 인터넷 검색과 Wolfram Alpha API. 이 질문의 경우에는 이러한 유형의 문제에 훨씬 더 적합한 도구이므로, 모델이 이상적으로 Wolfram Alpha API를 선택해 사용하길 바랍니다.

프롬프트 엔지니어링

먼저 프롬프트 엔지니어링으로 무대를 제대로 갖춰야 합니다. 프롬프트를 일종의 관제 센터라고 생각해 보세요. 프롬프트는 LLM에게 명시적인 과제(“사용자의 질의를 해결하라”)와 사용 가능한 도구 목록(“계산기, Wolfram Alpha, Python Interpreter 등”)을 제공합니다. 이렇게 하면 의사결정을 위한 틀이 마련됩니다:
LLM이 ReAct 프레임워크를 활용하도록 유도하는 프롬프트 작성 지침
이 프롬프트는 LLM이 내부 지식에 의존하지 않고 우리가 제공한 도구를 사용하도록 유도하는 것을 목표로 합니다.

ReAct로 사용자 질의에 답하는 방법

우리가 사용할 질의는 다음과 같습니다 "영국 커크월은 영국 플리머스에서 얼마나 떨어져 있나요?" 이 질의는 LLM이 내부 지식만으로 답하려 할 수 있지만, 영국의 비교적 덜 알려진 두 도시이기 때문에 환각을 일으킬 가능성이 큽니다. 따라서 위에서 제시한 지침에 따라 도구를 사용하도록 모델을 유도해야 합니다.
위 지침과 함께 질의를 제출하면 다음과 같은 일이 일어납니다:
  • 이해LLM은 이것이 단순한 대화나 요약 생성이 아니라 거리와 관련된 질문임을 인지합니다. 이는 실제 세계 지식이 필요한, 구체적이고 사실 기반의 답변을 요구합니다.
  • 도구 키트 검토LLM은 사용 가능한 도구들을 검토합니다. 단순 계산기를 써볼 수도 있지만, 경로와 지형 같은 요소를 반영하지 못합니다. 일반적인 웹 검색은 범위가 너무 넓을 수 있습니다. 그러다 Wolfram Alpha를 발견합니다. 이는 구체적이고 사실 기반 질의에 대한 정답을 계산하도록 설계된 지식 엔진입니다.
  • 도구 선택바로 여기서 마법이 일어납니다! LLM은 정밀한 계산과 실제 세계 데이터 접근이라는 Wolfram Alpha의 강점이 정확한 답을 제공할 가능성이 가장 높은 도구임을 판단합니다.

  • 입력 구성하기이제 Wolfram Alpha를 사용하기로 결정했으므로 도구에 넣을 입력, 즉 WA에서 사용할 수 있는 검색어를 생성합니다:

  • 실행하고 해석하기: LLM은 도구 핸들러에게 준비한 입력으로 선택한 도구를 실행하도록 지시합니다. 여기에는 API 호출을 수행하거나 계산을 실행하거나 검색을 수행하는 작업이 포함될 수 있습니다. 도구 핸들러는 응답을 반환하며, LLM은 그 결과를 이해하기 위해 해당 응답을 파싱하고 해석해야 합니다.
Wolfram Alpha 사용하기
  • 자연어 응답 생성하기마지막으로, 도구 출력에서 얻은 인사이트를 바탕으로 LLM은 사용자의 원래 질문이나 과제를 해결하는 자연어 응답을 작성합니다.
최종 응답
이 예시는 정답을 얻는 것에 그치지 않고, 과정 자체를 보여 줍니다. LLM은 문제를 분석하고 다양한 도구를 검토한 뒤, 과제에 가장 적합한 도구를 전략적으로 선택하는 능력을 보여 주었습니다. 또한 입력을 재구성하여 자연어와 선택한 도구의 문법을 모두 이해하고 있음을 입증했습니다. 이는 인상적인 의사결정과 문제 해결 능력입니다.




결론 및 다음 단계

ReAct 프레임워크는 지능형 시스템을 구축하는 데 놀라운 가능성을 보여 줍니다. 다만 이 블로그 글에서는 현재 가장 강력한 LLM 중 하나인 Gemini Ultra를 활용했습니다. 다음 글에서는 Falcon-40B 모델도 ReAct 프레임워크를 동일하게 활용할 수 있는지, 그리고 의사결정 능력에서도 동일한 수준을 보이는지 살펴보겠습니다. 만약 그렇지 않다면, LLM OS의 중앙 처리 장치 역할을 수행할 수 있도록 모델을 어떻게 조정하고 개선할 수 있을지 함께 검토하겠습니다.

이 글은 AI로 번역된 기사입니다. 오역이 있을 수 있으니 댓글로 알려 주세요. 원문 보고서는 다음 링크에서 확인할 수 있습니다: 원문 보고서 보기