업계 뉴스레터
전문가의 인사이트를 바탕으로 한 최신 기술 뉴스
Think 뉴스레터를 통해 AI, 자동화, 데이터 등 가장 중요하고 흥미로운 업계 동향에 대한 최신 소식을 받아보세요. IBM 개인정보 보호정책을 참조하세요.
구독한 뉴스레터는 영어로 제공됩니다. 모든 뉴스레터에는 구독 취소 링크가 있습니다. 여기에서 구독을 관리하거나 취소할 수 있습니다. 자세한 정보는 IBM 개인정보 보호정책을 참조하세요.
ReAct 에이전트는 "추론과 행동"(ReAct) 프레임워크를 사용하여 생각의 연결고리(Chain of Thought, CoT) 추론과 외부 툴 사용을 결합하는 AI 에이전트입니다. ReAct 프레임워크는 대규모 언어 모델(LLM)이 에이전틱 워크플로에서 복잡한 작업과 의사 결정을 처리하는 능력을 향상시킵니다.
2023년 Yao와 다른 연구자들에 의해 발표된 논문 "ReACT: Synergizing Reasoning and Acting in Language Models"에서 처음 소개된 ReAct는 LLM의 추론 및 행동 수행 능력을 통합하는 머신 러닝(ML) 패러다임으로 가장 일반적으로 이해될 수 있습니다.
더 구체적으로, ReAct는 AI 에이전트가 환경과 구조적이지만 적응 가능한 방식으로 상호 작용할 수 있도록 하는 개념적 프레임워크로, LLM을 에이전트의 "두뇌"로 사용하여 간단한 검색 증강 생성(RAG)에서 복잡한 다중 에이전트 워크플로에 이르기까지 모든 것을 조정합니다.
전통적인 인공지능(AI) 시스템과 달리, ReAct 에이전트는 의사 결정과 작업 수행을 분리하지 않습니다. 따라서 ReAct 패러다임의 개발은 단순한 대화형 챗봇을 넘어 복잡한 문제 해결로 나아가는 생성형 AI(Gen AI)의 진화에서 중요한 단계였습니다.
ReAct 에이전트와 파생된 접근 방식은 예기치 않은 상황에 적응하고 계획, 실행을 자율적으로 수행할 수 있는 AI 애플리케이션의 발전을 이끌고 있습니다.
업계 뉴스레터
Think 뉴스레터를 통해 AI, 자동화, 데이터 등 가장 중요하고 흥미로운 업계 동향에 대한 최신 소식을 받아보세요. IBM 개인정보 보호정책을 참조하세요.
구독한 뉴스레터는 영어로 제공됩니다. 모든 뉴스레터에는 구독 취소 링크가 있습니다. 여기에서 구독을 관리하거나 취소할 수 있습니다. 자세한 정보는 IBM 개인정보 보호정책을 참조하세요.
ReAct 프레임워크는 인간이 자연어를 직관적으로 사용하는 방식에서 영감을 받았습니다. 이는 종종 우리의 내면 독백을 통해 복잡한 작업을 단계별로 계획하고 실행하는 방식입니다.
ReAct 에이전트는 규칙 기반이나 미리 정의된 워크플로를 구현하는 대신, LLM의 추론 능력을 활용하여 새로운 정보나 이전 단계의 결과에 따라 접근 방식을 동적으로 조정합니다.
짧은 여행을 준비한다고 상상해 보세요. 먼저 핵심적으로 고려 사항을 파악합니다. (“그곳의 날씨는 어떨까?”), 그런 다음 외부 소스를 적극적으로 참고합니다. (“지역 날씨 예보를 확인해야겠다”).
그 새로운 정보를 사용하여 (“날씨가 추울 거야”), 다음 고려 사항(“내게 따뜻한 옷이 무엇이 있을까?”)과 행동(“옷장을 확인해야겠다”)을 결정합니다. 그 행동을 취한 후, 예상치 못한 장애물(“내 따뜻한 옷은 모두 보관되어 있어”)에 직면할 수 있으며, 그에 따라 다음 단계를 조정합니다(“어떤 옷을 겹쳐 입을 수 있을까?”).
비슷한 방식으로, ReAct 프레임워크는 프롬프트 엔지니어링을 사용하여 AI 에이전트의 활동을 사고, 행동 및 관찰이 교차하는 공식적인 패턴으로 구조화합니다.
언어화된 CoT 추론 단계(사고)는 모델이 더 큰 작업을 더 관리하기 쉬운 하위 작업으로 분해하는 데 도움을 줍니다.
미리 정의된 동작은 모델이 툴을 사용하고, 애플리케이션 프로그래밍 인터페이스(API) 호출을 하며 외부 소스(예: 검색 엔진)나 지식 기반(예: 내부 문서 저장소)에서 정보를 추가로 수집할 수 있게 해줍니다.
동작을 취한 후, 모델은 진행 상황을 재평가하고 그 관찰을 사용하여 최종 답변을 제공하거나 다음 생각에 정보를 제공합니다. 관찰은 이상적으로 모델의 표준 컨텍스트 창에서 이전 정보나 외부 메모리 구성 요소에서 나온 정보를 고려할 수 있습니다.
ReAct 에이전트의 성능은 복잡한 작업을 “말로” 생각하며 해결하는 중앙 LLM의 능력에 크게 의존하므로, ReAct 에이전트는 고급 추론 및 지침 수행 능력을 가진 매우 능력 있는 모델로부터 큰 혜택을 받습니다.
비용과 지연 시간을 최소화하기 위해, 다중 에이전트 ReAct 프레임워크는 주로 더 크고 성능이 높은 모델을 중심 에이전트로 사용하여, 이 에이전트의 추론 과정이나 행동이 더 작은, 더 효율적인 모델로 구축된 에이전트들에게 하위 작업을 위임하는 방식으로 구성될 수 있습니다.
이 프레임워크는 본질적으로 모델이 반복적으로 이 교차된 생각-행동-관찰 프로세스를 반복하여 문제를 해결하는 피드백 루프를 만듭니다.
이 루프가 완료될 때마다, 즉 에이전트가 행동을 취하고 그 행동의 결과를 바탕으로 관찰을 한 후, 에이전트는 루프를 반복할지 종료할지 결정을 내려야 합니다.
ReAct 에이전트를 설계할 때, 사고 루프를 언제 어떻게 종료할 것인가는 중요한 고려 사항입니다. 루프 반복 횟수에 최댓값을 설정하는 것은 대기 시간, 비용, 토큰 사용을 제한하고 끝없는 루프의 가능성을 피하는 간단한 방법입니다.
반대로, 루프는 모델이 특정 신뢰도 기준을 초과하는 잠재적 최종 답을 식별했을 때와 같은 특정 조건이 충족되면 종료되도록 설정할 수 있습니다.
이러한 종류의 추론 및 행동 루프를 구현하기 위해, ReAct 에이전트는 일반적으로 ReAct 프롬프트의 일부 변형을 사용합니다. 이는 LLM에 제공된 시스템 프롬프트나 사용자 쿼리 자체의 맥락에서 사용될 수 있습니다.
ReAct 프롬프트는 LLM이 사고, 행동, 관찰 루프의 ReAct 패러다임을 따르도록 유도하는 특정 프롬프트 기법입니다. 전통적인 ReAct 프롬프트 방법을 명시적으로 사용하는 것이 ReAct 에이전트를 구축하는 데 반드시 필요한 것은 아니지만, 대부분의 ReAct 기반 에이전트는 이를 구현하거나 적어도 그것에서 직접적인 영감을 받습니다.
원래의 ReAct 논문에서 처음 설명된 ReAct 프롬프트의 주요 기능은 LLM에게 ReAct 루프를 따르도록 지시하고, 사용자 쿼리를 처리할 때 어떤 툴을 사용할 수 있는지, 즉 어떤 행동을 취할 수 있는지를 설정하는 것입니다.
명시적인 지시나 few-shot 예시를 포함하여, ReAct 프롬프트는 다음을 수행해야 합니다.
모델이 사고 과정을 통해 작업을 수행하도록 유도하기: 모델에게 단계별로 사고하며 행동과 생각을 교차시키면서 작업을 해결하도록 유도합니다.
작업 정의: 모델에 사용할 수 있는 특정 작업을 설정합니다. 작업에는 특정 유형의 다음 생각 또는 하위 프롬프트 생성이 포함될 수 있지만 일반적으로 외부 툴을 사용하거나 API를 만드는 것이 포함됩니다.
모델에게 관찰을 하도록 지시: 모델에게 각 행동 단계 후에 자신의 맥락을 재평가하도록 유도하고, 그 업데이트된 맥락을 다음 추론 단계에 반영하도록 합니다.
루프: 필요한 경우 이전 단계를 반복하도록 모델에 지시합니다. 최대 루프 수와 같이 루프를 종료하기 위한 특정 조건을 제공하거나 에이전트가 올바른 최종 아웃풋에 도달했다고 느낄 때마다 추론 프로세스를 종료하도록 지시할 수 있습니다.
최종 답변 출력: 종료 조건이 충족되면, 사용자의 초기 질문에 대한 최종 출력을 제공합니다. 많은 LLM 사용 사례와 마찬가지로, 최종 출력을 결정하기 전에 연쇄적 사고 추론을 사용하는 추론 모델로서, ReAct 에이전트는 종종 “스크래치패드” 내에서 추론 과정을 수행하도록 프롬프트됩니다.
ReAct 프롬프트의 대표적인 데모는 미리 빌드된
Answer the following questions as best you can. You have access to the following tools:
Wikipedia: A wrapper around Wikipedia. Useful for when you need to answer general questions about people, places, companies, facts, historical events, or other subjects. Input should be a search query.
duckduckgo_search: A wrapper around DuckDuckGo Search. Useful for when you need to answer questions about current events. Input should be a search query.
Calculator: Useful for when you need to answer questions about math.
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [Wikipedia, duckduckgo_search, Calculator]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin!
Question: {input}
Thought:{agent_scratchpad}
ReAct 프레임워크의 도입은 LLM 기반 에이전틱 워크플로의 발전에 중요한 단계였습니다. (RAG)을 통한 LLM의 실시간, 실제 외부 정보 기반화부터 Reflexion과 같은 후속 혁신에 기여한 것까지, 이는 현대의 추론 모델로 이어졌습니다. ReAct는 텍스트 생성 이상의 작업에 LLM을 활용하는 데 중요한 촉매 역할을 했습니다.
ReAct 에이전트의 유용성은 주로 ReAct 프레임워크의 몇 가지 고유한 특성에서 비롯됩니다.
다재다능성: ReAct 에이전트는 다양한 외부 툴 및 API와 함께 작동하도록 구성할 수 있습니다. 관련 툴을 사용하여 세부적인 조정을 통해 ReAct 프롬프트를 개선할 수 있지만, 도구 호출을 실행하기 위해 사전에 모델을 구성할 필요는 없습니다.
적응성: 다양한 툴이나 API를 호출할 때 적절한 선택을 동적으로 상황에 맞게 결정하는 특성과 함께 이러한 다재다능성 덕분에, ReAct 에이전트는 추론 과정을 활용해 새로운 과제에 적응할 수 있습니다. 특히 긴 컨텍스트 윈도우 내에서 작동하거나 외부 메모리로 보강된 경우, 과거의 실수와 성공으로부터 학습하여 예상치 못한 장애물이나 상황에 대응할 수 있습니다. 이는 ReAct 에이전트를 유연하고 강인하게 만듭니다.
설명 가능성: ReAct 에이전트의 언어화된 추론 과정은 이해하기 쉬워 디버깅을 용이하게 하고, 에이전트를 비교적 사용자 친화적으로 구축하고 최적화하는 데 도움이 됩니다.
정확성: 원래의 ReAct 논문에서 주장하듯, 연쇄적 사고(CoT) 추론만으로도 LLM에 많은 이점을 제공하지만, 동시에 할루시네이션 발생 위험이 증가합니다. ReAct는 CoT 추론과 외부 정보 소스와의 연결을 결합함으로써 할루시네이션을 크게 줄여 ReAct 에이전트를 더 정확하고 신뢰할 수 있게 만듭니다.
에이전틱 AI의 또 다른 주요 패러다임은 함수 호출로, 원래 2023년 6월 OpenAI에 의해 도입되어 해당 GPT 모델의 에이전틱 능력을 보완하는 역할을 합니다.
함수 호출 패러다임은 특정 상황에서 도구 호출이 필요하다는 것을 인식하고, 해당 함수를 호출하는 데 필요한 인자를 포함하는 구조화된 JSON 객체를 출력하도록 모델을 미세 조정하는 것을 의미합니다.
많은 독점적 및 오픈 소스 LLM 계열, IBM® Granite, Meta의 Llama 시리즈, Anthropic의 Claude, 그리고 Google Gemini가 이제 함수 호출을 지원합니다.
ReAct 또는 함수 호출이 “더 낫다”고 할 수 있는지 여부는 일반적으로 특정 사용 사례의 성격에 따라 달라집니다. 상대적으로 직관적이거나 (적어도 예측 가능한) 작업이 포함된 시나리오에서는 함수 호출이 더 빠르게 실행될 수 있고, 토큰을 절약하며, ReAct 에이전트보다 구현이 더 간단할 수 있습니다.
이러한 경우, ReAct 에이전트의 반복적인 CoT 추론 루프에서 소모되는 토큰 수가 비효율적으로 보일 수 있습니다.
내재된 단점은 모델이 어떤 툴을 언제 사용할지 선택하는 방식과 시점을 사용자 맞춤화할 수 있는 능력이 상대적으로 부족하다는 점입니다. 마찬가지로, 에이전트가 복잡한 추론이 필요한 작업이나 동적이거나 예측 불가능한 시나리오를 처리할 때, 함수 호출의 경직성은 에이전트의 적응력을 제한할 수 있습니다. 이러한 상황에서는 특정 툴 호출에 이르는 단계별 추론을 볼 수 있는 능력이 종종 유용합니다.
ReAct 에이전트는 Python으로 처음부터 코딩하거나 BeeAI와 같은 오픈 소스 프레임워크의 도움을 받아 개발하는 등 여러 방식으로 설계하고 구현할 수 있습니다. ReAct 패러다임의 인기도와 지속적인 영향력 덕분에 GitHub 및 기타 개발자 커뮤니티에서 ReAct 에이전트에 대한 방대한 문헌과 튜토리얼이 제공되고 있습니다.
맞춤형 ReAct 에이전트를 개발하는 대신, BeeAI, LlamaIndex, LangChain의 LangGraph를 포함한 많은 에이전틱 AI 프레임워크는 미리 구성된 ReAct 에이전트 모듈을 특정 사용 사례에 제공하고 있습니다.
IBM watsonx.ai 스튜디오를 사용하여 개발자가 AI 에이전트를 구축, 배포 및 모니터링할 수 있도록 지원합니다.
기업이 AI 에이전트 및 어시스턴트를 구축, 사용자 지정, 관리할 수 있도록 지원하며, 업계에서 가장 포괄적인 기능 세트 중 하나를 사용하여 획기적인 생산성을 창출하세요.
개발자 효율성을 높이는 Granite의 소형 개방형 모델을 사용하여 90% 이상의 비용 절감을 달성하세요. 이러한 엔터프라이즈급 모델은 사이버 보안부터 RAG까지 광범위한 엔터프라이즈 작업과 안전 벤치마크에 대해 탁월한 성능을 제공합니다.