chapter 2. LLM 기반의 에이전트 기술 기반 체계
2.1 에이전트 네가지 핵심 요소
에이전트가 중심에서 여러 구성 요소들을 협력하는 하는 것으로 복잡한 작업과 의사 결정 과정을 처리한다.
계획(planing)
에이전트는 복잡한 작업을 효과적으로 수행하기 위한 계획 능력과 의사 결정 능력이 필요하다.
여기에는 작은 목표로 분할, 사고의 연쇄, 자기 성찰과 비판, 과거 행동에 대한 성찰이 포함된다.
기억(memory)
단기 기억과 장기 기억의 두 부분으로 구성된다.
단기 기억은 맥락 학습과 관련이 있는 프롬프트 엔지니어링의 일부이다.
장기기억은 정보의 장기 저장 및 검색과 관련이 있으며, 일반적으로 외부 벡터 스토리지와 빠른 검색을 활용한다.
도구(tool)
에이전트가 호출할 수 있는 다양한 도구들을 포함한다.
예를 들어 달력, 계산기, 코드 해석기, 검색 기능 등이 여기에 해당된다.
LLM 은 사전학습이 완료되면 기본적으로 내부 능력과 지식의 한계가 해당 시점으로 고정되며 확장하기 어려운 특성을 지니므로, 이러한 도구들이 중요하다.
실행(action)
에이전트는 계획과 기억을 바탕으로 구체적인 행동을 실행한다.
여기에는 외부 세계와의 상호작용이나 도구를 하출하여 작업을 완료하는 것이 포함될 수 있다.
에이전트 추론 흐름도
작업 수신 : 에이전트는 먼저 프롬프트를 통해 요청, 외부 추가 지식, 인물 설정을 읽어 작업을 수신한다.
기억 갱신 : 에이전트는 특정 작업에 따라 시스템의 기억을 갱신하여 처리 과정에서 필요한 모든 관련 정보를 최신 상태로 유지한다.
기억 검색 : 기억이 방대할 가능성이 있기 때문에 관련 정보를 검색하거나 필요한 경우 데이터를 잘라내어 효율적으로 처리할 수 있게 한다.
작업 계획 : LLM 은 이전 단계에서 제공된 구조화된 도구, 기억, 요청 프롬프트를 바탕으로 작업 이름을 포함한 계획을 생성한다. 이 계획은 후속 단계와 작업을 포함하고 있으며, 사용해야 할 도구와 매개변수를 설명한다.
도구 실행 : '작업 계획' 모듈에서 작업 완료 신호가 생성되면, 순환이 종료되고 에이전트에게 작업이 완료되었다고 알려 결론을 생성한다. 그렇지 않으면 시스템은 지정된 도구를 호출하고 실행한다. LLM 은 도구가 생성한 지정된 형식의 결과를 관찰한 후 이를 작업 기억과 통합한다.
결론 도출 : 시스템은 최종 답변을 요약하고 작업 처리 과정을 마친다.
2.2 에이전트의 계획 및 의사 결정 능력
LLM 이 에이전트에게 부여하는 계획과 의사 결정 능력은 매우 중요하다.
계획은 복잡한 작업을 더 작고 관리하기 쉬운 하위 작업으로 분해하는 과정이다. 이 과정은 우리가 작업을 더 잘 이해하고 완료하는데 도움을 준다.
연구자들이 제안한 계획 기술에는 작업 분해 / 외부 계획기와 결합 / 자기 성찰 등이 포함된다.
작업 분해에는 다음과 같은 기술이 포함되어 있다.
사고의 연쇄 : 이것은 모델이 '단계별로 생각하도록' 유도하는 프롬프트 기술로, 이를 통해 모델이 큰 작업을 작은 작업으로 분해하고 자신의 사고 과정을 명확하게 설명하게 할 수 있다.
사고의 나무 : 각 단계에서 다양한 추론 가능성을 탐색함으로써 트리 구조를 형성한다. 사고의 나무는 BFS, DFS 과 같은 다양한 검색 방법을 사용할 수 있으며, 프롬프트나 투표를 통해 각 단계를 평가할 수 있다.
이 외에도 간단한 프롬프트, 특정 작업에 대한 명령, 직접 수동을 분해하는 등의 방식으로 작업 분해를 수행할 수 있다.
외부 계획기와 결합을 대표하는 것은 'LLM+P' 방법이다.
본질적으로 계획 단계는 외부 도구에 위탁되며, 이러한 방법은 일부 로봇 설정에서 흔히 사용된다.
자기 성찰에는 다음 기술이 포함된다.
ReAct : 이 기반 체계에는 특정 작업의 행동과 언어 공간을 결합하여 모델이 환경과 상호작용하고 추론 궤적을 생성할 수 있도록 한다.
Reflexion : 이 기반 체계는 에이전트가 동적 기억과 자기 성찰 능력을 갖출 수 있도록 한다. 이를 통해 에이전트는 과거의 행동을 회고하는 추론 능력을 향상시킬 수 있다.
CoH(chain of hindsight) : 이 방법은 LLM 에게 일련의 피드백이 포함된 과거 출력을 보여주고 이를 바탕으로 자신의 출력을 개선하도록 권장한다.
이어서 ReAct 기반 체계 / 도구 호출이라는 에이전트의 핵심 기능 두 가지를 소개한다.
ReAct 기방 체계는 대표적인 에이전트 추론 기반 체계로, 에이전트의 동적 성격과 적응성에 중점을 둔다. 에이전트는 ReAct 기반 체계에서 작업에 대한 추론을 할 수 있을 뿐 아니라 상황 변화에 따라 스스로 행동하고 조정할 수 있다. ReAct 기반 체계는 에이전트 설계에서 순환적인 상호작용 형태의 과정을 보여준다. 에이전트는 먼저 현재 상태를 감지하고, 그 결과에 따라 결정을 내리고 행동을 취하며 다시 행동의 결과와 그에 따른 상태 변화를 바탕으로 조정을 진행한다. 그리고 그 과정은 반복된다. ReAct 기반 체계는 에이전트를 더 유연하게 바꾸고 더 강한 적응력을 부여해 복잡하고 변화무쌍한 환경에서도 효과적으로 작업할 수 있도록 한다.
도구는 에이전트에 제공된 기능 함수, 코드 조각, 기타 기술 도구를 의미한다. 에이전트는 ReAct 기반 체계를 바탕으로 외부 도구를 사용해 작업이나 하위 작업을 해결하려고 계속 시도하는데, 도구가 호출될 때마다 새로운 결과와 상태 변화가 발생한다. 에이전트는 개발 과정에서 이러한 도구들은 에이전트의 능력을 강화하고 성능과 신뢰성을 보장하는 필수적인 자원과 편의를 제공한다.
에이전트는 이 두 가지 결합을 통해 더 지능적이고 자율적으로 성장해가면서 적응력도 강해져 각 분야에 더 많은 가능성을 열어준다.
2.3 에이전트의 다양한 기억 기제
LLM 이 기억을 형성하는 기제는 다음과 같은 몇 가지로 요약할 수 있다.
첫 번째, 사전 학습을 통해 기억을 형성하는 것
LLM 은 세계 지식을 포함한 방대한 데이터 묶음으로 사전학습을 한다. LLM 은 이 과정에서 신경망 가중치를 조정하여 인간의 언어를 이해하고 생성하는 방법을 학습하는데, 이를 기억의 형성 과정으로 볼 수 있다.
LLM 은 심층 신경망과 경사 하강법 등의 기술을 사용해 입력에 기반한 예측 능력이나 텍스트 생성 능력을 지속적으로 향상시키며, 이를 통해 세계 지식과 장기 기억을 형성하게 된다.
두 번째, 상황(context) 과의 상호작용
LLM 은 작업을 수행할 때 장기 기억과 프롬프트를 통해 제공된 상황 정보를 결합하여 사용한다. 만약 상황 정보가 LLM 의 기억과 충돌하는 작업 관련 정보를 포함하고 있다면, 이상적으로는 LLM 은 더 정확하고 상황에 맞는 응답을 생성하기 위해 상황 정보를 우선적으로 고려해야 한다.
지식 인식형 파인튜닝과 같은 방법을 통해 LLM 이 상황 정보와 기억된 지식을 선택적으로 사용하는 방법의 제어 가능성과 견고성을 강화할 수 있다.
세 번째, 특정 작업에 맞게 파인튜닝을 통해 성능을 강화하는 방법
LLM 은 보다 구체적인 데이터 묶음에서 추가로 파인튜닝을 수행하여 특정 행동이나 특정 작업의 설능을 향상시킬 수 있다.
예를 들어, 만족 가능성 문제 데이터 묶음에 대해 파인튜닝 된 LLM 은 이러한 유형의 질문에 더욱 능숙하게 답변할 수 있다.
네 번째, 메모리 뱅크와 같은 외부 기억 시스템을 LLM 에 통합하여 성능을 강화하는 방법
LLM 은 이를 통해 과거의 상호작용을 기억하고 회상하며 사용자의 개성을 이해해 더욱 개인화된 상호작용을 제공할 수 있다.
요약
LLM 은 다양한 데이터 묶음에서 광범위한 사전학습을 통해 기억을 형성하며, 파인튜닝과 외부 기억 시스템과의 통합을 통해 특정 상황에서 이러한 기억을 더욱 세분화할 수 있다. 이러한 내부 지식과 적응형 학습의 결합은 LLM 을 광범위한 언어 작업을 처리할 수 있는 강력한 도구로 만들어준다.
2.4 에이전트의 핵심 기술 : 도구 호출
현실 세계의 인간은 다양한 도구를 사용하여 자신의 능력을 확장한다. 에이전트 역시 이와 마찬가지로 외부 도구를 호출함으로써 능력을 확장하고 효율성을 높일 수 있다. 도구 호출 능력은 에이전트의 핵심 능력으로 간주된다.
따라서 에이전트의 능력과 효율성은 다양한 도구를 얼마나 유연하게 호출하고 활용할 수 있는지에 달려있다.
이러한 도구는 애플리케이션, 데이터베이스, 머신러닝 모델, 심지어 다른 에이전트일 수도 있다.
장미꽃 구매라는 작업을 예로 들어보자. 다음과 같은 단계로 도구를 호출할 수 있다.
요구사항 파악 : 에이전트는 우선 작업의 요구사항을 이해하고 장미꽃의 평균 시장가격을 확인한다.
적합한 도구 선택 : 검색 도구를 통해 필요한 정보를 획득한다.
행동 및 입력 : 구체적인 검색 명령어를 명확히 하여 정확한 데이터를 확보한다.
피드백 처리 : 검색 결과를 수집한 후, 계산기 도구를 사용해 데이터를 처리하고, 주어진 예산 내에서 구매 가능한 꽃의 양을 계산한다.
이 과정은 에이전트의 정밀한 도구 호출 능력과 데이터 획득, 처리의 효율적인 협업을 보여준다. 이러한 방식을 통해서 에이전트는 단순히 작업을 수행하는 것뿐만 아니라 결정 과정을 최적화하여 지능과 실용성을 발휘한다.
에이전트 도구 호출의 도전 과제
에이전트는 다양한 유형의 도구를 이해하고 조작할 수 있어야 한다. 이는 복잡한 인터페이스를 해석하고 다양한 데이터 형식을 이해하며 도구를 효과적으로 사용하는 방법을 배우는 것을 포함한다.
에이전트는 적절한 시기에 적합한 도구를 선택할 수 있어야 한다. 이를 위해서는 에이전트가 각 도구의 기능, 강점, 한계를 깊이 이해하고 현재 작업과 환경 조건에 맞는 결정을 빠르게 내려야 한다.
여러 도구의 사용을 관리할 수 있어야 한다. 복잡한 작업에서는 에이전트가 여러 도구를 동시에 호출하고 이를 도구 간의 협력과 데이터 교환이 원활하게 이루어지도록 해야 한다.
2.5 에이전트의 추론 엔진: ReAct 기반 체계
에이전트의 추론 엔진은 계획 수립과 의사 결정 과정, 도구 호출을 통해 작업을 실행하는 핵심이다. 추론 엔진은 에이전트가 환경에서 정보를 추출하고 미래 작업을 계획하며, 과거 경험을 활용하고 도구를 호출하는 방법을 결정한다.
지금까지 사고의 연쇄, 사고의 나무, LLM+P 등 다양한 연구를 통해 지능형 에이전트의 추론 논리와 인지 기반 체계가 제안되었다. 그중에서도 ReAct 기반 체계는 두각을 나타내었으며 LangChain, LlamaIndex 와 같은 다양한 인공지능 애플리케이션 개발 도구에서 추론 엔진으로 채택되었다.
ReAct 기반 체계는 사용자의 입력을 이해하고 이에 대응한다는 기본 개념을 중심으로 설계되었다. 이 방법은 LLM 이 작업을 받은 후 사고 과정을 거친 뒤 행동을 결정하도록 유도한다.
ReAct 란 무엇인가?
ReAct 기반 체계의 핵심은 추론과 행동을 밀접하게 결합할 때, 단순한 결정 트리나 고정된 알고리즘에 의존하는 대신, 정보처리 / 의사 결정 / 행동 실행을 실시간으로 할 수 있는 종합적인 시스템을 사용한다는 점이다.
ReAct 기반 체계의 설계 철학은 동적이고 불확실한 환경에서 효과적인 의사결정을 하려면 지속적인 학습, 적응, 추론을 행동으로 빠르게 전환하는 능력이 반드시 필요하다는 것이다.
이 순환 과정은 크게 3단계로 나누어져 있다.
사고 : 다음 행동을 추론하는 과정으로, 현재 상황을 평가하고 가능한 행동 방안을 고려한다.
행동 : 행동 계획을 선택하는 과정으로, 사고의 결과에 따라 어떤 행동을 취할지 결정한다.
관찰 : 행동을 실행한 후 그 결과를 관찰하고 피드백을 수집하는 과정으로, 행동의 결과를 평가하며 그 결과는 다음 사고 방향에 영햘을 끼칠 수 있다.
이 기반 체계의 핵심은 순환을 통해 연속적인 학습과 적응 과정을 구현하는 것이다. 즉, 절차를 수립하고 결정하며 문제를 해결하는 것을 의미한다.
LLM 을 중심으로 하는 자율 에이전트의 작업 흐름은 다음과 같은 요소들로 구성된다.
작업 : 작업은 에이전트의 출발점이다. 사용자 질의, 목표, 해결해야 할 특정 문제 등이 작업에 해당된다.
LLM : 작업은 LLM 에 입력되며, LLM 은 학습된 모델을 이용하여 추론을 진행한다. 이 과정은 작업을 이해하고 해결책을 생성하거나 다른 추론 활동을 수행한다.
도구 : LLM 은 작업을 완료하는 데 도움이 되는 도구들을 사용할 수 있다. 이러한 도구에는 API 호출 / 데이터베이스 조회 / 추가적인 정보와 실행 능력을 제공하는 자원 등이 포함된다.
행동 : 에이전트는 LLM 추론 결과에 따라 행동을 취한다. 이러한 행동에는 환경과 직접 상호작용, 요청 발신, 물리적 장비 조작, 데이터 변경 등이 포함된다.
환경 : 행동은 환경에 영향을 미치고, 환경은 이러한 행동에 대해 어떤 형태로든 응답한다.
결과 : 에이전트는 행동의 결과를 다시 피드백으로 받는다. 이 결과는 에이전트의 미래 행동에 영향을 미칠 수 있다. 에이전트가 작업을 수행하는 과정은 목표 작업이 완전히 해결될때까지 계속해서 학습하고 적응하는 과정이다.
LangChain 은 LLM 추론 능력과 도구 기능의 결합을 통해 에이전트의 핵심 능력을 형성한다. LLM 은 에이전트 내부에서 어떤 작업을 수행하고 어떤 순서로 작업을 진행할지를 결정하는 추론 엔진으로서 사용된다.
LangChain 을 비롯한 LLM 애플리케이션 개발의 철학은 사람이 직접 작업의 순서를 코딩하는 대신, LLM 을 활용해 작업 순서를 선택하는 것이다. 이는 애플리케이션의 논리를 AI 가 스스로 결정하도록 하는 새로운 프로그래밍 패러다임의 가치를 보여준다.
ReAct 기반 체계의 구현 과정은 자율 에이전트가 LLM 추론 능력과 외부 도구를 활용하는 방법과, 환경과 상호작용하여 결과를 도출하는 방법을 강조한다. 이 기반 체계는 추론과 의사 결정에서 LLM 의 중심적인 역할을 부각시키고, 도구가 LLM 의 능력을 확장시키는 방법과 에이전트가 환경과의 동적인 상호작용을 통해 작업을 완료하는 방법을 설명한다.
ReAct 기반 체계에 의해 에이전트의 네 가지 주요 특성이 발휘되는 모습은 다음과 같다.
적응성 : ReAct 기반 체계는 특정 알고리즘이나 기술에 의존하지 않고, 다양한 머신러닝 방법, 추론 전략, 실행 기제와 결합할 수 있다.
상호작용성 : ReAct 기반 체계는 지속적인 학습과 동적 지식 관리를 지원하기 때문에, 이를 통해 에이전트가 환경과 상호작용하고 환경의 변화에 적응하여 행동을 최적화할 수 있다.
자율성 : ReAct 기반 체계는 에이전트에 고도의 자율성을 부여한다. 에이전트는 스스로 결정을 내리고 상황 변화에 따라 행동과 전략을 자율적으로 조정할 수 있다.
기능성 : 에이전트는 도구 호출을 통해 웹 검색, 프레젠테이션 생성, 전자 메일 송수신 등의 특정한 작업을 수행할 수 있다.
2.7 요약
이 장에서는 에이전트의 기술 구현의 네 가지 핵심 요소인 계획, 도구, 기억, 실행에 대해 알아보았습니다.
계획 : 에이전트는 복잡한 작업을 효과적으로 수행하기 위해 계획하고 의사 결정을 해야 한다. 여기에는 하위 목표 분할, 지속적인 사고, 자기 평가, 과거 행동에 대한 반성이 포함된다.
도구 : 에이전트는 일정 관리 기능이나 검색 기능과 같은 다양한 도구를 호출할 수 있어야 하며, 이러한 도구는 에이전트의 핵심 기능을 보완하여 더 광범위한 작업을 수행할 수 있게 한다.
기억 : 에이전트는 단기 기억과 장기 기억 능력을 갖추고 있어야 한다. 단기 기억은 문맥 학습에 도움을 주며, 장기 기억은 정보를 장기간 보유하고 빠르게 검색하는 것과 관련이 있다.
실행 : 에어전트는 계획과 기억을 바탕으로 구체적인 행동을 수행한다. 이는 외부 세계와의 상호작용이 될 수 있고, 도구를 통해 작업을 완료하는 과정일 수 있다.
이 중에서 핵심은 계획과 의사 결정 능력이다. 우수한 계획과 의사 결정 능력에 해답으로 ReAct 기반 체계를 중점적으로 설명했다.
ReAct 기반 체계는 LLM 이 복잡한 작업을 수행할 수 있도록 돕는 구조화된 사고와 의사 결정 과정이다. ReAct 기반 체계는 일련의 단계를 포함하여 LLM 이 더 체계적이고 효율적인 방식으로 질문에 대응할 수 있게 하며, 사용자 요구에 대해 좀 더 종합적이고 정확하게 응답할 수 있도록 한다.
에이전트는 ReAct 기반 체계를 통해 동적인 의사 결정 능력을 얻게 된다. 에이전트가 내부 지식만으로 해결할 수 없는 문제에 직면했을 때는 검색을 실시하거나 도구를 호출하여 자신의 지식을 확장한다. 또 이 외에도 다양한 도구의 유연성을 활용하여 여러 데이터를 조정하며 전환하고 최종적으로 결정을 내리기 위한 데이터를 얻는다. 에이전트는 각 단계를 수행한 후 결과를 관찰하고, 새로운 정보를 다음 의사 결정 과정에 반영하며, 이를 통해 뛰어난 학습 능력과 적응력을 보여준다.
도구 호출 역시 에이전트의 핵심 기술 중 하나이다. 이 기술은 에이전트의 성능과 적응력 향상에 매우 중요하다. 에이전트는 외부 도구를 효과적으로 호출하고 활용하므로써 자신의 능력을 확장하고 더 나은 결과를 도출할 수 있다. 이 능력을 실행하는데 많은 도전 과제가 따르지만 도구 패키징, 적응 학습, 문맥 인식 선택 등의 전략을 통해 에이전트를 더욱 지능적이고 효율적으로 만들 수 있다.
Last updated