ReACT Agent와 Function Calling은 둘 다 LLM(Large Language Model)이 외부 도구나 시스템과 상호작용해 더 복잡한 작업을 수행하도록 돕는 메커니즘입니다. RAG 시에도 적용 가능합니다. 두 개념을 비교하면 다음과 같습니다.
LLM이 추론(Reasoning)과 행동(ACTing)을 결합해 복잡한 작업을 멀티스텝으로 해결하는 에이전트입니다. 문제를 분석하고, 필요한 도구나 API를 사용하여 반복적으로 추론과 행동을 수행합니다. 여러 단계에 걸쳐 외부 도구와 상호작용해 문제를 해결하는 점이 특징입니다.
ReACT Agent는 자체적으로 상황에 맞게 행동을 조정하고 중간에 예기치 않은 상황이 생기면 에이전트는 새로운 계획을 세우거나 다른 도구를 사용해 문제를 해결할 수 있습니다. 에이전트는 반복적인 추론과 행동을 수행하며, 각 단계를 자동으로 조정해 나갑니다.
ReACT Agent를 적용할 때는 파인튜닝을 권장합니다. 파인튜닝을 하지 않을 시 Chain-of-Thought(CoT)보다 성능이 낮다는 결과가 있습니다.
LLM이 특정 요청에 대해 함수를 호출하여 필요한 작업을 처리하는 방식입니다. LLM이 요청을 분석하고, 이에 적합한 함수를 호출해 결과를 반환하는 단순한 구조입니다. LLM은 자체적인 논리적 추론 없이 함수 간의 데이터를 전달합니다.
생각 → 행동 → 행동 입력 → 검색 결과
의 형태로 반복적인 순환 과정을 통해 문제를 해결합니다.
Question: "10월에 가기 좋은 국내 여행지와 가족끼리 가기 좋은 숙소, 맛집, 명소를 찾아줘. 그리고 10월 말 그곳의 날씨도 알려줘."
Thought: 10월에 가기 좋은 국내 여행지를 먼저 검색해야 합니다. 이후 가족끼리 가기 좋은 숙소를 찾아보겠습니다.
Action: [Naver_search]
Action Input: "10월에 가기 좋은 대한민국 여행지"
Result: "10월에 가기 좋은 대한민국 여행지에는 제주도, 경주, 부산이 있습니다."
Thought: "제주도에서 가족끼리 좋은 숙소를 찾아봐야겠습니다. 이후 제주도의 맛집을 찾아보겠습니다."
...
사용자의 요청을 분석 → 함수 호출 → 결과 반환
의 형태로 처리합니다.
Question: "10월에 가기 좋은 국내 여행지와 가족끼리 가기 좋은 숙소, 맛집, 명소를 찾아줘. 그리고 10월 말 그곳의 날씨도 알려줘."
Action 1: get_travel_destinations() → ["제주도", "경주", "부산"] 반환
Action 2: get_accommodation("제주도")
Action 3: get_restaurants("제주도")
Action 4: get_weather("제주도", "10월 말")
Answer: "제주도는 10월에 가기 좋은 여행지입니다. 가족끼리 가기 좋은 숙소로는 '제주 리조트'와 '신라호텔'이 있습니다. 추천 맛집으로는 '흑돼지 구이'와 '갈치구이'가 있습니다. 10월 말 제주도의 날씨는 맑고 기온은 약 15도입니다."
참고자료
REAC T: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS
Advanced RAG Technique : Langchain ReAct and Cohere
ReAct agents vs function calling agents