[2308.11432] A Survey on Large Language Model based Autonomous Agents
A Survey on Large Language Model based Autonomous Agents
Autonomous agents have long been a prominent research focus in both academic and industry communities. Previous research in this field often focuses on training agents with limited knowledge within isolated environments, which diverges significantly from h
arxiv.org
1. Introduction
■ LLM이 발전하면서 인간과 유사한 의사 결정 능력을 얻기 위해 LLM을 central controllers로 사용하여 자율 에이전트를 구축하는 연구 분야가 성장하고 있다.

■ LLM-based agents의 장점은
- (1) 포괄적인 internal world knowledge를 보유하고 있어 특정 도메인 데이터로 별도 학습하지 않아도 합리적인 행동을 수행할 수 있다.
- (2) 자연어 인터페이스를 통해 사람과 상호작용할 수 있으므로 유연성과 설명 가능성이 높다.
■ 이러한 방향에 따라 수많은 연구들이 등장했으며, 특히 LLM에 "memory"와 "planning" 같은 인간의 능력을 부여하여 인간처럼 행동하고 다양한 tasks을 수행할 수 있는 에이전트를 만들고 있다.
■ 이 서베이에서는 LLM-based autonomous agents의 구성, 응용, 평가 세 가지 핵심 측면을 정리한다.
■ 그리고 에이전트 구성과 관련하여 (1) LLM을 더 잘 활용하기 위한 에이전트 아키텍처를 설계하는 방법 (2) 다양한 tasks를 수행하기 위해 에이전트의 역량을 향상시키는 방법에 초점을 둔다.
2. LLM-based Autonomous Agent Construction
■ LLM-based autonomous agent의 목표는 LLM의 인간과 유사한 능력을 활용하여 다양한 tasks을 효과적으로 수행하는 것이다.
■ 이 목표를 달성하기 위해 두 가지 중요한 측면이 있다.
- (1) LLM을 더 잘 활용하기 위해 "어떤 아키텍처를 설계해야 하는가"
- (2) 설계된 아키텍처가 주어졌을 때 "에이전트가 특정 작업을 완수하기 위한 역량을 어떻게 획득하게 할 것인가"
2.1 Agent Architecture Design
■ LLM은 question-answering (QA) 형태에서 광범위한 tasks을 잘 수행할 수 있는 잠재력을 보여주었다. 그러나 자율 에이전트는 단순한 QA와는 거리가 멀다.
■ 왜냐하면 에이전트는 단순히 답변만 생성하는 것이 아니라, 특정 역할을 수행해야 하고 마치 인간처럼 환경을 스스로 인식하고, 환경으로부터 배우고 스스로 진화해야 하기 때문이다.
■ 이 차이가 LLM과 LLM-based agent의 차이이다. 이 간극을 메우기 위해서는, LLM이 자신의 능력을 극대화할 수 있도록 돕는 합리적인 에이전트 아키텍처를 설계하는 것이다.
■ 이러한 방향으로 이전 연구들은 수많은 모듈들을 개발해 왔다. 이 섹션에서는 이러한 모듈들을 요약하는 통합 프레임워크를 제안한다. (Fig 2)

■ 저자들이 제시한 통합 프레임워크는 네 개의 모듈로 구성된다: profiling module, memory module, planning module, action module
- (1) 프로파일링 모듈의 목적은 에이전트의 역할을 정의하는 것이다.
- (2) 메모리와 플래닝 모듈은 에이전트를 동적인 환경 속에 배치하여, 과거의 행동을 회상하고 미래의 행동을 계획할 수 있게 한다.
- (3) 액션 모듈은 에이전트의 결정을 구체적인 output으로 변환하는 역할을 담당한다.
- 이러한 모듈들의 관계를 보면, 프로파일링 모듈은 메모리 및 플래닝 모듈에 영향을 미치며, 이 세 가지 모듈은 종합적으로 모여 액션 모듈에 영향을 준다. 즉, 액션은 프로파일링 + 메모리 + 플래닝의 결과로 나온다는 것이 저자들의 관점이다.
2.1.1 Profiling Module
■ 자율 에이전트는 일반적으로 coders, teachers, 도메인 전문가와 같은 특정 역할을 맡아 tasks을 수행한다.
■ 프로파일링 모듈은 이러한 에이전트의 역할의 프로필을 지정하는 것을 목표로 하며, 이는 보통 프롬프트 내에 작성되어 LLM의 행동 방식에 직접적인 영향을 미친다.
■ 저자들은 에이전트 프로필에 들어가는 정보를 크게 세 부류로 본다: 나이, 성별, 직업과 같은 기본 정보, 에이전트의 성격을 반영하는 심리 정보, 그리고 에이전트 간의 관계를 나타내는 사회적 정보
■ 어떤 프로필 정보를 넣을지는 주로 애플리케이션 시나리오에 따라 달라진다.
- 예를 들어 고객 응대 에이전트라면 직업적 역할과 말투가 중요할 수 있고, 사람의 인지 과정을 연구하는 것을 목표로 하는 에이전트라면 심리 정보가 중추적인 역할을 하게 된다.
■ 위의 예시와 같이 시나리오에 따라 프로필에 어떤 종류의 정보가 필요한지 정했다면, 그 다음으로 중요한 문제는 "그 구체적인 프로필을 어떻게 만들 것인가"이다. 기존 연구들은 주로 다음과 같은 세 가지 프로필 생성 전략을 사용한다.
Handcrafting Method
■ 에이전트 프로필을 사람이 직접 수동으로 지정하는 방식이다. 프롬프트에 명시하여 전달해서 에이전트를 프로파일링한다.
■ 이러한 수작업 방식은 에이전트 프로필을 구체화하기 위해 많은 연구들에서 활용되었다.
- 예를 들어, Generative Agent는 에이전트를 이름, 목표, 다른 에이전트와의 관계와 같은 정보로 기술한다.
- 다양한 역할과 그에 상응하는 책임들을 미리 정의하고, 시스템 내 협업을 목표로 각 에이전트에게 뚜렷하게 구별되는 프로필을 수동으로 할당한 연구들도 있다.
■ 전반적으로 수작업 방식은 에이전트에게 상상할 수 있는 어떠한 프로필 정보도 부여할 수 있기 때문에 매우 유연하다. 그러나 다수의 대규모 에이전트를 다뤄야 할 때는 매우 많은 수작업이 요구된다.
■ 정리하면, 정밀하게 제어할 수 있다는 것이 장점이지만 확장성이 약하다는 단점이 있다.
LLM-generation Method
■ 에이전트 프로필을 LLM이 자동으로 생성하는 방식이다.
■ 이 방식은 먼저 에이전트 프로필이 어떤 구성과 속성을 가져야 하는지 "프로필 생성 규칙"을 지시하는 것으로 시작한다.
■ 그런 다음, 몇 개의 'seed 에이전트 프로필'을 작성해서 LLM에게 few-shot examples로 제공한다.
■ 마지막으로 LLM은 "생성 규칙"과 "examples"을 기반으로, 자신의 생성 능력을 활용하여 수많은 에이전트 프로필을 생성한다.
■ 즉, 위의 수작업 방식과 다르게, 규칙과 예시를 설계하고 대량의 프로필 생성은 LLM에게 맡기는 방식이기 때문에 확장성이 좋다.
- 예를 들어 RecAgent에서는 나이, 성별, 개인적 특성, 영화 취향과 같은 속성을 사람이 직접 작성하여 에이전트들에 대한 시드 프로필을 먼저 만든 다음, ChatGPT를 활용하여 이 시드 정보를 바탕으로 대량의 에이전트 프로필을 자동 생성한다.
■ 그러나 이 방식은 수작업 방식의 장점이었던, 사람의 정밀한 제어가 어렵다는 점이다. 이로 인해 의도한 특성과 어긋나는 일관성 없는 설정이나 편차가 발생할 수 있다.
■ 정리하면, 이 방식은 확장성이 뛰어나고 대량 생성이 쉽지만, 제어와 일관성에서는 handcrafting보다 약할 수 있다.
Dataset Alignment Method
■ real-world의 데이터셋으로부터 에이전트 프로필을 추출하는 방식이다.
■ 일반적으로 데이터셋에 있는 실제 인간에 대한 정보(통계, 설문 결과 등)를 먼저 자연어 프롬프트로 가공한 다음, 이를 활용하여 에이전트를 프로파일링한다.
■ 예를 들어, American National Election Studies (ANES) 참여자들의 인구통계학적 배경(인종/민족, 성별, 연령, 거주 주 등)을 그대로 가져와 GPT-3에 역할을 부여한 다음, GPT-3가 투표나 정치적 견해에 있어 실제 인간과 유사한 결과를 내는지 조사한 연구가 있다.
■ 이 방식은 실제 인구집단의 속성을 과장이나 편견 없이 정확하게 반영하므로, 실제 현실 세계의 시나리오를 반영한 에이전트의 행동을 만들 수 있다. 즉, 이 방식의 가장 큰 장점은 현실성이다.
■ 이전 연구의 대부분은 위의 프로필 생성 전략들을 각각 독립적으로 활용했지만, 저자들은 이 방법들을 결합하면 추가적인 이점을 얻을 수 있다고 주장한다.
■ 예를 들어 사회 발전을 예측하는 시뮬레이션을 하려면, 현재 사회를 정확히 반영하기 위해 일부 에이전트는 real-world dataset으로 프로파일링하고, 동시에 현실에는 아직 없지만 미래에 등장할 수 있는 직업이나 역할들(예: 화성 이주민)을 handcrafting으로 추가할 수 있으며, 이 예시 외에도 연구 목적에 따라 다른 전략들을 유연하게 조합할 수 있다고 설명한다.
■ 이러한 프로필 모듈은 전체 에이전트 설계의 가장 밑바닥이 되는 기초 역할을 하며, 이후 진행될 에이전트의 memorization, planning, 그리고 action procedures에 지대한 영향을 미치게 된다.
2.1.2 Memory Module
■ 메모리 모듈은 에이전트 아키텍처 설계에서 매우 중요한 역할을 한다. 환경으로부터 인식한 정보를 저장하고, 기록된 기억을 활용하여 미래의 행동을 원활하게 한다.
■ 다시 말해, 메모리 모듈은 에이전트가 경험을 축적하고, 스스로 진화하며, 보다 일관되고 합리적인 방식으로 행동하도록 만든다.
■ 이 섹션에서는 메모리 모듈의 structures, formats, operations에 대해 설명한다.
Memory Structures
■ LLM-based autonomous agents 중 일부는 인간의 기억 과정에 영감을 받아서 받아 설계되었다.
■ 인간 기억은 지각적인 입력을 등록하는 감각 기억(sensory memory)에서 시작하여, 정보를 일시적으로 유지하는 단기 기억(short-term memory)을 거쳐, 장기간에 걸쳐 정보를 유지하는 하는 장기 기억(long-term memory)으로 이어지는 프로세스를 따른다.
■ 논문에서는 메모리 구조를 크게 두 가지로 나눈다: unified memory와 hybrid memory
• Unified Memory
■ unified memory는 인간의 단기 기억만 흉내 내는 구조이다. 일반적으로 in-context learning을 통해 구현되고 memory 정보가 프롬프트에 작성된다.
■ 즉, 별도의 저장소를 두지 않고, agent가 당장 알아야 할 기억을 현재 프롬프트에 넣어서 행동하게 만드는 방식이다.
- 예를 들어, 대화형 에이전트인 RLP는 화자와 청자의 internal state를 유지하고, 각 대화 턴마다 internal state를 LLM prompt에 넣어서 사용해서 short-term memory을 수행한다.
- SayPlan은 planning 에이전트인데, scene graph와 environment feedback가 short-term memory 역할을 한다.
- CALYPSO는 scene description, monster information, previous summary로 short-term memory를 구성한다.
- DEPS는 마인크래프트 에이전트인데, 먼저 task plan을 만들고, 그 plan을 다시 LLM prompt로 써서 행동을 생성한다. 여기서는 plan 자체가 short-term memory로 사용된다.
■ 논문에 따르면 unified memory의 장점은
- (1) 설계와 구현이 쉽다: 별도의 저장소 없이 prompt engineering만으로도 memory 기능을 어느 정도 만들 수 있다.
- (2) 최근 정보를 반영하기 쉽다: agent가 방금 본 것, 방금 실패한 것, 현재 환경 상태 같은 것에 바로 반응하기 좋다.
- (3) 현재 맥락에 민감한 행동을 인지하는 에이전트의 능력을 향상시킬 수 있다.
■ 그러나 LLM의 제한된 context window는 포괄적인 기억을 통째로 프롬프트에 넣는 것을 제한한다. 그 결과 에이전트의 performance가 떨어질 수 있다.
■ 이러한 한계는 더 큰 context window를 갖고 확장된 context를 처리할 수 있는 LLM을 필요로 한다.
■ 결과적으로, 이 문제를 완화하기 위해 많은 연구들이 하이브리드 메모리 시스템으로 방향을 전환하고 있다.
• Hybrid Memory
■ hybrid memory는 short-term memory와 long-term memory를 둘 다 명시적으로 두는 구조이다.
■ short-term memory는 최근의 인식을 일시적으로 저장하는 반면, long-term memory는 시간이 지남에 따라 중요한 정보는 통합하여 보존한다.
- 예를 들어, hybrid memory 구조를 사용하는 Generative Agent의 경우 short-term memory에는 에이전트의 현재 상황에 대한 context information이 포함되어 있고, long-term memory에는 현재 일어나고 있는 이벤트와 연관지어 불러올 수 있는 에이전트의 과거 행동과 생각들이 저장된다.
- AgentSims에서는 프롬프트에 제공되는 정보를 short-term memory에 담는다. 그리고 long-term memory로는 vector database를 사용한다.
- 구체적으로, 에이전트의 기억들을 임베딩으로 인코딩하어 vector database에 저장하고, 에이전트가 이전 기억을 회상해야 할 경우 임베딩 유사도를 사용하여 관련 정보를 검색한다.
- SCM은 복잡한 문맥의 대화에서 추론을 하기 위해, short-term memory와 결합할 가장 관련성 높은 long-term knowledge만을 선택적으로 활성화한다.
- SimplyRetrieve는 user의 쿼리를 short-term memory로, private knowledge base를 long-term memory로 사용한다. 이 설계는 사용자의 개인정보를 보호할 수 있므며 모델의 정확도를 높인다.
■ 이러한 hybrid memory의 장점은 short-term memory와 long-term memory를 통합해서 사용할 수 있다는 점이다. 그래서 에이전트의 'long-range reasoning' 능력과 'accumulation of valuable experiences' 능력을 강력하게 향상시킬 수 있다.
■ 얼핏 생각하면 long-term memory만 있는 구조도 가능해 보일 수 있다. 그러나 저자들은 그런 유형이 기록된 경우가 없다고 말한다.
■ 그리고 그 이유를 추측하기를, 에이전트는 대체로 "연속적이고 동적인 환경 속에 있고, 연속된 행동들 사이의 상관이 높기 때문"이라고 설명한다.
■ 그래서 최근 상태를 반영하는 short-term memory를 무시하기 어렵다는 것이다. 즉, 에이전트는 과거의 큰 경험만 기억한다고 되는 것이 아니라, 방금 무슨 일이 일어났는지도 알아야 한다.
Memory Formats
■ 여기서는 memory를 저장하는 format에 대해 설명한다. 같은 memory라도 자연어, 임베딩 벡터, 데이터베이스나 리스트 구조로 저장할 수 있다. 다양한 memory formats은 저마다 고유한 강점을 지니고 있다.
• Natural Languages
■ 이 방식은 에이전트의 행동 및 관찰과 같은 memory 정보가 raw natural language로 저장한다.
■ 장점은 두 가지이다
- (1) memory 정보를 사람이 읽고 이해하기 쉽다.
- (2) 의미론적 정보가 풍부하다. 즉, 어떤 일이 발생했는지를 비교적 풍부하게 남길 수 있어서, 이후 에이전트가 행동할 때 더 종합적인 힌트를 줄 수 있다.
■ Reflexion에서는 경험적 피드백을 자연어로 sliding window에 저장했고, Voyager는 마인크래프트 게임 내의 skills을 표현하기 위해 자연어 설명으로 memory에 저장했다.
• Embeddings
■ 여기서는 memory 정보를 embedding vectors로 인코딩하여 저장한다. 이 방식의 장점은 검색 및 읽기 효율성이다.
• Databases
■ memory는 데이터베이스에 저장된다. 에이전트는 SQL문을 활용하여 memory 정보를 정밀하게 추가, 삭제 및 수정할 수 있다.
• Structured Lists
■ memory 정보를 리스트나 트리 같은 구조로 정리해 두는 방식이다. 장점은 정보를 간결하고 효율적으로 정리할 수 있다는 점이다.
■ 위의 네 가지는 대표적인 memory formats이다. programming code 같은 다른 형식도 활용될 수 있다.
■ 중요한 점은, 이런 format들이 서로 배타적이지 않다는 것이다. 즉 에이전트는 하나의 format만 쓰지 않고 여러 format들을 섞어 쓸 수 있다.
Memory Operations
■ 아래는 외부 환경과 상호작용하는 데 사용되는 memory operations에 대한 내용이다.
• Memory Reading
■ memory reading의 목적은 저장된 memory들 중에서 에이전트의 행동 향상에 도움이 되는 의미 있는 정보를 꺼내 오는 것이다. 예를 들어 유사한 목표를 달성하기 위해, 이전에 성공했던 행동을 다시 사용하는 경우가 있다.
■ memory 읽기의 핵심은 과거 행동들로부터 가치 있는 정보를 "어떻게" 추출해 낼 것인가에 있다.
■ 일반적으로 정보 추출을 위해 널리 사용되는 세 가지 기준이 있는데, 바로 recency, relevance, importance이다.
■ 더 최근이고, 더 관련성이 높으며, 더 중요한 memory일수록 추출될 가능성이 높다.
■ 식 (1)은 memory 정보 추출을 위한 방정식이다.

■ \( q \)는 쿼리이다. 에이전트가 처리해야 할 task이거나, 에이전트가 놓인 상황이다. \( M \)은 저장된 모든 memory의 집합이다.
■ \( s^{rec} ( \cdot ) \), \( s^{rel} ( \cdot ) \), \( s^{imp} ( \cdot ) \)는 memory \( m \)의 recency, relevance, importance를 측정하는 scoring functions이며, 점수가 높을수록 각각 더 최근의 기억, 더 관련 있는 기억, 더 중요한 기억임을 의미한다.
■ 식에서 볼 수 있듯이, \( s^{imp} \)는 memory 자체의 특성만을 반영하여 query \( q \)와는 무관하다.
■ 이러한 scoring functions은 다양한 방법으로 구현될 수 있다. 예를 들어 \( s^{rel} (q, m) \)은 query와 memory embeddings 간의 vector similarity를 사용하여 계산할 수 있다.
■ \( \alpha, \beta, \gamma \)는 세 점수를 얼마나 중시할지 정하는 가중치이다. 이 가중치들에 서로 다른 값을 할당함으로써 다양한 memory reading 전략들을 사용할 수 있다.
- 예를 들어 \( \alpha = \gamma = 0 \)으로 설정하면, 오직 \( s^{rel} \)만 고려하게 된다.
- \( \alpha = \beta = \gamma = 1.0 \)을 할당한다면, 이는 recency, relevance, importance 세 가지 지표를 모두 동등하게 반영한다.
• Memory Writing
■ memory writing의 목적은 에이전트가 환경에서 지각한 정보를 memory에 저장하는 것이다.
■ memory에 가치 있는 정보를 저장해 두어야 미래에 그것을 다시 꺼내 활용할 수 있고, 그 결과 에이전트가 더 효율적이고 합리적으로 행동할 수 있다.
■ memory writing 과정에는 두 가지 중요한 문제가 있다.
- (1) memory duplicated: 기존 memories과 유사한 정보가 새롭게 들어왔을 때, 이를 어떻게 저장할 것인가
- (2) memory overflow: 저장 공간이 가득 찼을 때 무엇을 지우고 무엇을 남길 것인가
(1) Memory Duplicated
■ 유사한 정보를 통합하기 위해, 새 기록과 이전 기록을 결합하는 다양한 방법들이 개발되었다.
- 예를 들어 GITM에서는 sub-goal과 관련된 성공적인 action sequences을 리스트에 쌓아 두다가(즉, 리스트 형태로 저장하다가), 리스트의 크기가 \( N = 5 \)에 도달하면, LLM을 사용하여 그 안의 모든 sequences을 압축하여 하나의 통합된 plan solution으로 응축시킨다.
- Augmented LLM은 중복된 내용들을 저장하는 대신, 단순히 중복된 횟수를 누적하는 방식으로 중복 정보를 집계하여 불필요한 것은 버려서 저장 공간의 낭비를 방지했다.
(2) Memory Overflow
■ memory가 가득 찼을 때, 새로운 정보를 저장하기 위해 기존 정보를 어떻게 삭제할지 결정해야 한다. 이 문제에 대해 여러 삭제 전략이 존재한다.
- 예를 들어 ChatDB에서는 사용자 명령에 따라 memory를 명시적으로 삭제한다.
- RET-LLM은 fixed-size buffer를 사용하고, FIFO 방식으로 가장 오래된 항목을 덮어쓴다.
• Memory Reflection
■ memory reflection은 인간이 자신의 인지적, 감정적, 행동적 과정을 관찰하고 평가하는 능력을 모방한 것이다.
■ 이를 에이전트에 적용할 때의 목표는, 에이전트가 더 추상적이고 복잡하며 고차원적인 정보를 독립적으로 요약하고 추론할 수 있게 만드는 것이다.
- 예를 들어 Generative Agent에서는 최근 memories을 기반으로 세 가지 핵심 질문을 먼저 생성한다.
- 그런 다음, 이 질문들을 사용해 memory를 쿼리하여 관련 정보를 얻는다.
- 획득한 정보를 바탕으로 에이전트는 자신의 고차원적 아이디어를 반영하는 다섯 개의 insight를 생성한다.
- 예를 들어, "클라우스 뮐러는 연구 논문을 쓰고 있다", "클라우스 뮐러는 연구를 진행하기 위해 사서와 대화하고 있다", "클라우스 뮐러는 아이샤 칸과 그의 연구에 대해 논의하고 있다"라는 1차원적인 low-level의 memories은 "클라우스 뮐러는 그의 연구에 전념하고 있다"라는 high-level insight로 요약될 수 있다.
■ 그리고 reflection 과정은 hierarchical하게 일어날 수 있다. 즉, 기존의 insights을 바탕으로 그 위에 새로운 insights을 생성할 수 있다는 것이다.
■ 다시 말해, low-level memories에서 high-level insights을 만들고, 다시 그 high-level insights로부터 더 상위의 insight를 만들 수 있다.
- 예를 들어 GITM에서는 sub-goals을 성공적으로 완수한 actions이 리스트에 저장된다.
- 이 리스트에 5개 이상의 항목이 쌓이면, 에이전트는 이를 공통적이면서 추상적인 패턴으로 요약한 다음, 원래의 항목들을 모두 그 요약본으로 교체해버린다.
- ExpeL에서는 두 가지 접근 방식이 도입되었다. 하나는 에이전트가 동일한 task 내에서 성공한 trajectories과 실패한 trajectories을 비교하는 방식이다. 다른 하나는 여러 성공적인 trajectories의 모음으로부터 학습하여 경험을 쌓는 것이다.
■ 전통적인 LLM과 에이전트 사이의 가장 큰 차이점은, 에이전트가 동적인 환경에서 학습하고 task를 완수할 수 있는 능력을 반드시 갖추어야 한다는 것이다.
■ memory module이 에이전트의 "과거" 행동을 관리하는 역할을 담당한다고 본다면, 에이전트가 "미래" 행동을 계획하도록 지원할 수 있는 또 다른 중요한 모듈을 갖추는 것이 필수적이 된다. 이 모듈을 planning module이라고 부른다. (섹션 2.1.3)
2.1.3 Planning Module
■ 복잡한 task에 직면했을 때, 인간은 이를 더 단순한 subtasks로 분해하고 각각을 개별적으로 해결하는 경향이 있다.
■ planning module은 이러한 인간의 능력을 에이전트에게 부여하는 것을 목표로 하며, 이를 통해 에이전트가 더 합리적이고, 강력하고, 신뢰할 수 있게 행동할 것으로 기대할 수 있다.
■ 기존 연구들은 크게 피드백 없이 계획하는 방식과 피드백을 받으며 계획을 수정하는 방식으로 나뉜다.
Planning without Feedback
■ 이 방법에서 에이전트는 액션을 취한 후 미래의 행동에 영향을 줄 수 있는 피드백을 외부로부터 받지 않는다. 아래는 몇 가지 대표적인 strategies이다.
• Single-path Reasoning
■ 이 전략에서 final task를 여러 개의 intermediate steps로 나눈다. 이 steps은 계단식 방식으로 연결되며, 각 step은 오직 '하나의' subsequent step으로만 이어진다.
■ 이 single-path의 대표 예가 CoT(Chain of Thought)이다. CoT는 복잡한 문제를 푸는 reasoning steps을 프롬프트에 예시로 넣어, LLM이 step-by-step 방식으로 계획하고 답하게 만든다.
■ 즉, 모델이 예시를 통해 intermediate steps를 따라하도록 만드는 것이다.
■ Zero-shot-CoT는 프롬프트에 예시 reasoning steps을 주지 않지만, "think step by step"과 같은 트리거 문장으로 LLM을 프롬프팅하여 reasoning processes을 스스로 생성하게 한다.
■ Re-Prompting은 plan을 생성하기 전에 각 step이 필수 전제 조건을 충족하는지 확인하는 과정이 있다.
■ 만약 어떤 step이 전제 조건을 충족하지 못하면, 오류 메시지를 통해 LLM이 다시 plan을 생성하도록 유도한다.
■ ReWOO에서는 plans을 외부의 관찰 결과와 분리하는 패러다임을 도입했다. 먼저 plans을 생성하고 observations을 독립적으로 얻은 다음, 이들을 결합하여 최종 결과를 도출한다.
■ HuggingGPT는 먼저 task를 여러 sub-goals로 분해한 다음, 각각을 해결한다.
■ 모든 reasoning steps을 한 번의 생성으로 출력하는 CoT나 Zero-shot-CoT와 달리, ReWOO와 HuggingGPT는 LLM을 여러 번 호출하여 결과를 산출한다.
■ SWIFTSAGE는 dual-process theory에서 영감을 받아, 복잡한 interactive tasks에서의 planning을 위해 학습된 패턴을 기반으로 quick responses을 제공하는 SWIFT 모듈과, LLM을 사용해 핵심적인 질문을 던지고 action sequence를 만드는 더 깊은 planning을 수행하는 SAGE 모듈을 결합한다.

• Multi-path Reasoning
■ 이 방식은 final plans을 생성하기 위한 reasoning steps이 tree와 같은 구조로 정리된다. 각 intermediate step은 여러 개의 subsequent steps을 가질 수 있다.
■ 사람도 매 추론 단계마다 여러 가지 선택지를 가질 수 있기 때문에, 이 접근법은 인간의 사고방식과 매우 유사하다.
■ 예를 들어, self-consistent CoT (CoT-SC)는 하나의 문제에 대해 여러 개의 reasoning path가 나올 수 있다고 보고, CoT를 사용하여 다양한 reasoning paths과 그에 상응하는 answers을 생성한다. 그런 다음, 가장 빈도수가 높게 나온 answer를 final output으로 선택한다.
■ Tree of Thoughts (ToT)는 tree-like reasoning structure를 사용하여 plans을 생성하도록 설계되었다. 이 접근법에서 트리의 각 노드는 'thought'을 나타내며, 이는 intermediate reasoning step에 해당된다.
■ 이러한 intermediate steps 중 무엇을 선택할지는 LLM의 평가를 기반으로 결정된다. final plan은 BFS 또는 DFS를 통해 생성된다. 모든 steps을 한번에 생성하는 CoT-SC와 비교할 때, ToT는 각 reasoning step마다 LLM에 생성을 요청해야 한다.
■ RecMind는 planning process 과정에서 버려진 과거의 정보까지 활용해 새로운 reasoning steps을 만드는 self-inspiring 메커니즘을 제안했다.
■ Graph of Thoughts (GoT)는 ToT의 트리 구조 추론을 그래프 구조로 확장한다.
■ Algorithm of Thoughts (AoT)는 프롬프트에 algorithmic examples을 통합하여 LLM의 추론 과정을 향상시키는 새로운 방법을 제시했다. 이 방법은 LLM 호출을 1~2회 정도로 줄인다는 점이 특징이다.
• External Planner
■ LLM이 zero-shot planning 능력을 보이기는 하지만, domain-specific problems에 대한 plans을 효과적으로 생성하는 것은 여전히 어려운 문제이다.
■ 이 문제를 해결하기 위해 이미 잘 개발된 외부의 planners을 사용하는 연구들이 등장하기 시작했다. 효율적인 탐색 알고리즘을 사용하여 정확하거나 최적화된 계획을 빠르게 찾아낼 수 있다.
■ 예를 들어 LLM+P는, 먼저 task descriptions을 Planning Domain Definition Languages (PDDL)로 변환한 다음, 외부의 플래너를 통해 이 PDDL을 처리한다. 마지막으로, 생성된 결과는 LLM에 의해 다시 자연어로 변환된다.
■ 이와 유사하게, LLM-DP는 LLM을 활용하여 관찰 결과, 현재 세계의 상태, 그리고 달성할 목표를 PDDL로 변환한다. 그 후 이 변환된 데이터를 외부 플래너에 넘겨 final action sequence를 결정한다.
■ CO-LLM은 LLM이 high-level plans을 생성하는 데는 능숙하지만, low-level control에는 약하다고 보고, 이를 보완하기 위해 휴리스틱하게 설계된 external low-level planner를 사용한다.
Planning with Feedback
■ real-world의 많은 scenarios에서 에이전트는 복잡한 tasks을 해결하기 위해 장기적인 계획을 세워야 한다.
■ 이러한 tasks에 직면했을 때, 위의 planning without feedback은 다음과 같은 이유로 덜 효과적일 수 있다.
- (1) 다양하고 복잡한 전제 조건들을 모두 고려해야 하므로 처음부터 결함 없는 완벽한 계획을 단번에 생성하는 것은 매우 어렵다.
- (2) 예측하지 못한 상태 변환가 생겨 원래 계획이 아예 실행 불가능해질 수 있다.
■ 인간은 외부의 피드백을 기반으로 계획을 반복적으로 세우고 수정한다. 이러한 인간의 능력을 모방하기 위해, 에이전트가 액션을 취한 후 피드백을 받을 수 있는 다양한 planning modules이 등장했다.
■ 이때 피드백은 환경, 인간, 그리고 모델 자체로부터 얻을 수 있다.
• Environmental Feedback
■ 이 피드백은 objective world나 virtual environment로부터 얻어진다. 예를 들어 게임의 작업 완료 신호이거나 에이전트가 특정 액션을 취한 후 얻게 되는 관찰 결과일 수 있다.
■ 가장 대표적인 예가 ReAct이다. ReAct는 프롬프트를 'thought-act-observation'의 삼중 구조로 만든다.
- thought은 에이전트의 행동을 유도하기 위한, high-level reasoning과 planning
- act는 에이전트가 실제로 취한 행동. observation은 외부 피드백을 통해 획득한, 그 행동의 결과이다.
■ 그다음 이어지는 thought은 이전의 observations의 영향을 받으며, 그 결과 plan은 환경에 보다 적응적으로 조정된다.
■ Voyager는 environmental feedback을 더 세분화해서 사용한다. Voyager는 (1) 프로그램 실행의 중간 진행 상황 (2) 실행 오류 (3) 그리고 self-verification 결과를 포함한 세 가지 유형의 환경 피드백을 통합하여 plans을 세운다.
■ 이렇게 실행 과정에서 발생하는 신호들은 에이전트가 다음 액션을 위해 더 나은 계획을 세우는 데 도움을 줄 수 있다.
■ Voyager와 유사하게, Ghost 역시 reasoning 및 action 과정에 피드백을 넣는다. 이 피드백에는 환경의 상태뿐만 아니라, 실행된 각 액션의 성공 및 실패 정보가 포함된다.
■ SayPlan은 scene graph simulator에서 나오는 피드백으로 자신의 전략을 검증하고 수정한다. 이 simulator는 에이전트의 액션들에 뒤따르는 결과와 상태 변화를 파악하고, 실행 가능한 계획이 나올 때까지 전략을 반복 보정한다.
■ DEPS는 여기서 더 나아가, 단순 작업 완료 여부만 알려주는 것은 planning errors을 고치기에 부족한 경우가 많다고 보고, 에이전트에게 작업 실패에 대한 구체적인 이유까지 사용하여 계획을 보다 효과적으로 수정하게 한다.
■ LLM-Planner는 실행 중 object mismatch나 도달 불가능한 plan에 직면했을 때 LLM이 생성한 계획을 동적으로 업데이트하는 grounded re-planning 알고리즘을 도입한다.
■ Inner Monologue는 에이전트가 액션들을 취한 후 (1) task가 성공적으로 완료되었는지 여부 (2) passive scene descriptions (3) active scene descriptions이라는 세 가지 유형의 피드백을 사용한다.
■ environmental feedback에 대해 정리하면
- (1) 액션 결과를 next plan에 반영해야 한다.
- (2) 피드백은 단순 성공/실패 시그널을 넘어 상태 변화, 실행 에러, 실패 이유, scene descriptions 처럼 다양할수록 유용하다.
- (3) 이런 피드백 덕분에 에이전트의 planning은 일회성 추론이 아니라, 반복적 재조정 과정이 된다.
• Human Feedback
■ 환경으로부터 피드백을 얻는 것 외에도, 인간과 직접 상호작용하는 것 역시 에이전트의 planning 능력을 향상시키는 매우 직관적인 전략이다.
■ 이는 에이전트가 인간의 가치 및 선호도와 정렬되도록 유도할 수 있으며, hallucination 문제를 완화하는 데도 도움을 준다.
■ Inner Monologue에서 에이전트는 3D 환경에서 high-level natural language instructions을 수행하는 것을 목표로 한다.
■ 이 에이전트에게는 장면에 대한 설명과 관련해 인간에게 피드백을 요청할 수 있는 기능이 부여되어 있으며, 인간의 피드백을 프롬프트에 통합하여 보다 합리적인 planning과 reasoning을 가능하게 한다.
■ Inner Monologue에서 환경적 피드백과 인간의 피드백을 모두 수집해서 사용하는 것처럼, 에이전트의 planning 능력을 향상시키기 위해 다양한 유형의 피드백을 결합해서 사용할 수 있다.
• Model Feedback
■ 외부 신호은 environmental 및 human feedback과는 별개로, 에이전트 스스로 생성하는 내부 피드백을 활용한 연구들도 있다. 이러한 유형의 피드백은 대게 pre-trained models을 기반으로 생성된다.
■ 가장 기본적인 예가 self-refine이다. 이 메커니즘은 output, feedback, refinement라는 세 가지 요소로 이루어진다.
■ 에이전트가 output을 생성하면, LLM으로 해당 output에 대한 피드백을 제공하고 이를 개선하는 방법에 대한 guidance를 제공한다.
■ 피드백과 개선 과정을 통해 output이 향상된다. 이때, output-feedback-refinement 과정은 루프를 돌아 특정 조건에 도달할 때까지 반복된다.
■ SelfCheck은 에이전트가 다양한 단계에서 생성된 자신의 추론 단계들을 스스로 검사하고 평가한다. 그런 다음 결과들을 비교하여 모든 오류를 수정한다.
■ InterAct는 메인 LM이 잘못되거나 비효율적인 액션들을 피할 수 있도록, 서로 다른 언어 모델(ChatGPT 및 InstructGPT 등)을 checker 및 sorter와 같은 보조 역할로 사용한다.
■ Reflexion은 디테일한 verbal feedback을 통해 에이전트의 planning 능력을 향상시킨다.
■ 이 모델에서 에이전트는 먼저 memory를 바탕으로 액션을 생성하고, 그런 다음 evaluator가 에이전트의 trajectory를 입력으로 받아 피드백을 생성한다.
■ 피드백이 단순한 스칼라 값으로 주어졌던 과거의 강화학습 기반 연구들과 달리, 이 모델은 LLM을 활용하여 더 디테일한 verbal feedback을 사용한다는 점이 큰 특징이다.
■ 정리하면, 피드백이 없는 planning은 구현은 구현이 비교적 간단하다. 그러나 이는 적은 수의 추론 단계만을 요구하는 단순한 task에 적합하다.
■ 피드백을 포함하는 planning 전략은 피드백을 수집하고 처리하기 때문에 설계가 더 까다롭다. 대신 이 방식은 비교할 수 없을 만큼 훨씬 더 강력하며, long-range reasoning이 수반되는 복잡한 tasks을 해결할 수 있는 능력을 에이전트에게 부여한다.
2.1.4 Action Module
■ action module은 에이전트의 결정을 구체적인 결과로 변환하는 역할을 담당한다.
■ 이 모듈은 가장 아키텍처의 가장 하위 위치에 자리 잡고 있으며 환경과 직접 상호 작용한다. 또한, profile, memory, and planning 모듈의 영향을 종합적으로 받는다.
■ 이 섹션에서는 네 가지 관점에서 action module을 소개한다.
- (1) Action goal: 액션의 의도된 결과는 무엇인가
- (2) Action production: 액션은 어떻게 생성되는가
- (3) Action space: 에이전트가 취할 수 있는 액션의 종류는 무엇인가
- (4) Action impact: 액션이 초래하는 결과는 무엇인가
■ 저자들은 이 네 가지를 시간 흐름으로 나눈다: (1)과 (2)는 "before-action", (3)은 "in-action", (4)는 "after-action"
Action Goal
■ 에이전트는 다양한 objectives을 가지고 actions을 수행할 수 있다. 몇 가지 대표적인 예시는 다음과 같다: Task Completion, Communication, Environment Exploration
(1) Task Completion
■ Task Completion은 가장 전형적인 objective이다. 말 그대로 에이전트의 액션이 어떤 과제를 완료하기 위해 수행되는 경우이다. 예를 들어 마인크래프트에서 철 곡괭이를 제작하거나, 코드 작성에서 특정 함수를 완성하는 것이 있다.
■ 이 경우 액션들은 대게 명확하게 정의된 objectives을 가지고 있으며, 각각의 액션은 final task를 완료하는 데 기여한다.
(2) Communication
■ 다른 에이전트나 인간과의 정보 공유나 협업을 위해 사용된다.
■ 예를 들어, ChatDev의 에이전트들은 소프트웨어 개발 작업을 위해 에이전트들이 서로 의사소통한다.
■ Inner Monologue에서는 에이전트는 인간과 적극적으로 소통하고, human feedback에 따라 자신의 액션 전략을 조정한다.
(3) Environment Exploration
■ 에이전트는 익숙하지 않은 환경을 탐색하여 자신의 지각 범위를 넓히고, exploring과 exploiting 사이의 균형을 맞추는 것을 목표로 한다.
■ Voyager의 에이전트는 task completion 과정에서 아직 알지 못하는 skills을 탐색하고, 시행착오를 통한 환경 피드백을 기반으로 skill execution code를 계속 다듬는다.
Action Production
■ 모델의 input과 output이 1:1로 연결되는 일반적인 LLM과 달리, 에이전트는 다양한 strategies과 sources을 통해 actions을 취할 수 있다.
■ 일반적으로 사용되는 두 가지 action production strategies은 다음과 같다: (1) Action via Memory Recollection (2) Action via Plan Following
(1) Action via Memory Recollection
■ 이 전략에서 액션은 현재 task에 맞는 정보를 에이전트의 memory에서 추출함으로써 생성된다. 현재 task와 extracted memories이 결합되어 에이전트의 actions을 유도하는 프롬프트로 사용된다.
■ 예를 들어, Generative Agents에서 에이전트는 memory stream을 유지하고, 각각의 액션을 취하기 전에 memory stream으로부터 가장 최근의(recent), 관련성(relevant)이 높고 중요(important)한 정보를 검색하여 액션을 수행한다.
■ GITM에서는 low-level의 sub-goal을 달성하기 위해 에이전트가 memory를 쿼리하여 해당 task와 관련된 성공적인 경험이 있는지 확인한다. 만약 이전에 유사한 task를 성공적으로 완료한 적이 있다면, 에이전트는 이전에 성공했던 행동을 그대로 호출하여 현재 task를 처리한다.
■ ChatDev 및 MetaGPT와 같은 협업 에이전트 시스템에서는 여러 다른 에이전트들이 서로 의사소통할 수 있다. 이 과정에서 진행된 대화 기록은 에이전트의 memories에 저장된다. 에이전트가 내뱉는 각각의 발언은 바로 이 memory의 영향을 받아 생성된다.
■ 정리하면, Action via Memory Recollection은 과거의 경험을 기반으로 action을 생성한다. 그래서 비슷한 상황(경험했던 상황)에서 빠르고 일관된 행동을 만들기 쉽다는 장점이 있다. 특히 이전에 성공한 경험이 있을 때 강하다.
(2) Action via Plan Following
■ 이 전략에서 에이전트는 자신이 미리 생성해 둔 plans을 엄격하게 따라 actions을 취한다.
■ 예를 들어, DEPS에서는 주어진 task에 대해 에이전트가 가장 먼저 action plans을 세운다. plan failure를 알리는 신호가 없다면, 에이전트는 이 초기 plans을 엄격히 따른다.
■ GITM에서 에이전트는 task를 여러 sub-goals로 분해하여 high-level plans을 세운 다음, 이것들을 바탕으로 final task를 완료하기 위해 각 sub-goal을 순차적으로 해결해 나가는 actions을 취한다.
Action Space
■ action space는 에이전트가 수행할 수 있는 "가능한 actions의 집합"이다. 저자들은 이를 크게 두 부류로 나눈다: (1) external tools and (2) LLM의 internal knowledge
• External Tools
■ LLM은 포괄적이고 전문적인 knowledge가 필요한 도메인에서는 제대로 작동하지 않을 수 있다. 게다가 LLM은 스스로 해결하기 매우 힘든 hallucination 문제에 직면할 수도 있다.
■ 이러한 문제들을 완화하기 위해, 에이전트에게는 액션을 실행할 때 external tools을 호출할 수 있는 능력이 부여된다. 몇 가지 대표적인 tools은 다음과 같다.
(1) APIs
■ 외부 API를 활용하여 action space를 보완하고 확장할 수 있게 되었다.
■ HuggingGPT는 Hugging Face의 모델 생태계를 연결해 task를 처리한다.
■ WebGPT는 사용자 요청에 응답할 때, 외부 웹 페이지에서 관련 콘텐츠를 추출하기 위해 자동으로 검색 쿼리를 생성한다.
■ Gorilla는 API 호출을 위한 input arguments을 생성할 수 있도록 파인튜닝된 LLM을 도입하여, 외부 API를 사용할 때 발생하는 hallucination 문제를 효과적으로 완화한다.
■ Toolformer는 API demonstration을 학습 데이터로 사용한 self-supervised learning을 통해, 외부 tools을 언제, 어떻게 호출할지 학습한다.
■ API-Bank는 tool-augmented된 LLM을 체계적으로 평가하기 위한 다양한 API tools을 포함한 벤치마크와 데이터셋을 제공한다.
■ ToolLLaMA는 데이터 수집, 학습, 평가를 포괄하는 tool-use framework을 제안하며, 그 결과 파인튜닝된 모델이 광범위한 API에서 뛰어난 성능을 달성했다.
■ RestGPT는 RESTful API와 LLM을 연결하여, 프로그램이 현실 세계의 애플리케이션과 더 잘 호환되도록 만들었다.
■ 이러한 지능형 에이전트들은 외부 API를 전략적으로 도구화함으로써, action space를 확장하고 다양한 계산 능력을 통합하여 전통적인 LM의 근본적인 한계를 보완한다.
(2) Databases & Knowledge Bases
■ 외부의 database나 knowledge base를 통합하면, 에이전트는 특정 도메인에 대한 정보를 얻을 수 있어 보다 현실적인 actions을 생성할 수 있다.
■ ChatDB는 SQL 문을 사용하여 데이터베이스를 쿼리함으로써 에이전트가 논리적인 방식으로 행동할 수 있도록 한다.
■ MRKL과 OpenAGI는 knowledge bases 및 planners와 같은 다양한 expert systems을 통합하여 domain-specific information에 접근한다
(3) External Models
■ 가능한 actions의 범위를 확장하기 위해 외부의 모델을 활용한 연구들이 있다. API와 비교했을 때, 외부 모델은 일반적으로 훨씬 더 복잡한 task를 처리한다. 각각의 외부 모델은 여러 개의 API에 대응될 수 있다.
■ ViperGPT는 먼저 언어 모델 기반으로 구현된 Codex를 사용하여 text descriptions으로부터 파이썬 코드를 생성한다. 그리고 해당 코드를 직접 실행하여 주어진 task를 수행한다.
■ ChemCrow는 신약 개발, 유기 합성 등 화학과 관련된 tasks을 처리하도록 설계된 LLM 기반의 화학 에이전트이다. 이 에이전트는 전문가가 설계한 17개의 전용 모델을 활용한다.
■ MM-REACT는 비디오 요약을 위한 VideoBERT, 이미지 생성을 위한 X-decoder, 오디오 처리를 위한 SpeechBERT와 같은 다양한 외부 모델을 통합하여 multimodal 시나리오에서의 역량을 향상시킨다.
• Internal Knowledge
■ 외부 tools을 활용하는 것 외에도, 많은 에이전트들은 actions을 이끌기 위해 오직 LLM의 internal knowledge에만 전적으로 의존하기도 한다.
■ 여기서는 에이전트가 보다 합리적이고 효과적으로 행동하도록 뒷받침하는 LLM의 몇 가지 핵심 능력을 소개한다.
(1) Planning Capability
■ 기존 연구들은 LLM이 복잡한 문제를 더 단순한 문제로 분해하는 planner로 사용될 수 있음을 보여주었다. LLM의 이러한 능력은 프롬프트에 examples을 포함시키지 않더라도 이끌어낼 수 있다.
■ DEPS는 이러한 LLM의 planning 능력을 기반으로, sub-goal 분해를 통해 복잡한 task를 해결할 수 있는 마인크래프트 에이전트를 개발했다.
■ GITM 및 Voyager와 같은 에이전트들 역시 다양한 task를 수행하기 위해 LLM의 planning 능력에 크게 의존한다.
(2) Conversation Capability
■ LLM은 일반적으로 매우 high-quality의 conversations을 생성할 수 있다. 이 능력 덕분에 에이전트는 더 사람처럼 행동할 수 있다. 많은 에이전트들은 LLM의 강력한 대화 능력을 기반으로 action을 취한다.
■ ChatDev에서는 서로 다른 에이전트들이 소프트웨어 개발 과정에 대해 토론하고 자신들의 actions을 성찰한다.
■ RLP에서 에이전트는 자신의 발언에 대한 청자의 잠재적인 피드백을 예측하여 청자와 소통할 수 있다.
(3) Common Sense Understanding Capability
■ LLM의 중요한 능력 중 하나는 인간의 common sense를 잘 이해할 수 있다는 것이다. 이 능력을 기반으로 많은 에이전트들은 인간의 일상생활을 시뮬레이션하고 human-like 같은 결정을 내릴 수 있다.
■ Generative Agent는 자신의 현재 상태와 주변 환경을 이해하고 기본적인 관찰을 바탕으로 high-level의 ideas을 요약할 수 있다.
■ LLM의 common sense understanding 능력이 없다면 이러한 행동들을 신뢰할 수 있는 수준으로 시뮬레이션할 수 없다.
Action Impact
■ action impact는 에이전트가 취한 actions의 consequences을 의미한다.
■ 다양한 impacts이 있지만, 여기서는 몇 가지 핵심적인 것들만 설명한다: (1) Changing Environments (2) Altering Internal States (3) Triggering New Actions
(1) Changing Environments
■ action이 외부 환경의 상태를 직접적으로 바꿀 수 있다.
■ 예를 들어 에이전트가 이동하면 → 위치가 바뀌고, 아이템을 수집하면 → 그 자원은 환경에서 사라지고, 건물을 지으면 → 환경에 새로운 구조물이 생긴다.
(2) Altering Internal States
■ 에이전트가 취한 actions은 memories을 업데이트하거나, 새로운 plans을 수립하거나, 새로운 knowledge를 습득하는 등 에이전트 '자기 자신'을 변화시키기도 한다.
(3) Triggering New Actions
■ task completion processes에서 하나의 action은 종종 그 뒤를 잇는 subsequent actions으로 이어지기도 한다.
■ 예를 들어, Voyager에서 에이전트가 필요한 자원을 모두 모으고 나면, 그것은 즉시 건물을 건설하는 새로운 action을 trigger하게 된다.
2.2 Agent Capability Acquisition
■ 2.1의 아키텍처는 에이전트의 "하드웨어"에 해당한다.
■ 효과적인 task 수행을 위해서는 하드웨어만으로는 충분하지 않다. task별 필수 역량, skills, 경험이 부족할 수 있기 때문이다. 이러한 요소들은 에이전트의 "소프트웨어" 리소스로 볼 수 있다.
■ 에이전트에게 이러한 리소스를 갖추게 하기 위해 다양한 전략이 고안되었다. 서베이에서는 이러한 전략들을 "LLM에 대한 파인튜닝이 필요한지 여부"에 따라 두 가지 클래스로 분류한다
Capability Acquisition with Fine-tuning
■ 에이전트의 task completion 역량을 향상시키는 직접적인 방법은 "task-specific datasets"으로 모델을 파인튜닝하는 것이다.
■ 이러한 데이터셋은 human annotations, LLM이 생성한 콘텐츠, 또는 real-world의 applications으로부터 구축될 수 있다.
• Fine-tuning with Human Annotated Datasets
■ 에이전트를 파인튜닝하기 위해, human annotated datasets을 활용하는 것은 다양한 애플리케이션 시나리오에 적용할 수 있는 접근법이다.
■ CoH는 LLM을 인간의 가치관 및 선호도와 align시키는 것을 목표로 한다. human feedback을 자연어 형태로 변환한 다음, LLM을 이러한 자연어 데이터셋에 파인튜닝시킨다.
■ RET-LLM에서는 자연어로 구조화된 memory 정보로 더 잘 변환하기 위해, 각 샘플이 "triplet-natural language" 쌍으로 구성된 human constructed dataset을 기반으로 LLM을 파인튜닝한다.
■ WebShop에서는 아마존에서 1.18 million의 real-world products을 수집하고, 인간 쇼핑 시나리오가 포함된 시뮬레이션 전자상거래 웹사이트에 이를 올려놓는다.
■ 이 웹사이트를 기반으로 13명의 작업자가 실제 인간의 행동 데이터셋을 수집한다. 마지막으로 이 데이터셋을 바탕으로 heuristic rules, imitation learning, reinforcement learning에 기반한 세 가지 방법을 학습시킨다.
■ 이 논문에서 제안된 데이터셋은 웹 쇼핑 분야에서 에이전트의 역량을 향상시킬 수 있는 잠재력을 가지고 있다.
■ EduChat은 open-domain question answering, essay assessment, Socratic teaching, emotional support와 같은 LLM의 교육적 기능을 향상시키는 것을 목표로 한다.
■ 다양한 교육적 시나리오와 tasks들을 포괄하는 human annotated datasets으로 LLM을 파인튜닝한다.
• Fine-tuning with LLM Generated Datasets
■ human-annotated datasets은 사람이 필요하며, 이는 특히 대규모의 작업을 다룰 때 막대한 비용이 들 수 있다.
■ 그래서 human-annotated의 대안으로 LLM-generated data를 사용하는 연구들이 등장하기 시작했다.
■ 이 방법으로 생성된 데이터셋은 인간이 annotation을 단 것만큼 완벽하지 않을 수 있지만, 비용이 훨씬 저렴하고 기하급수적으로 더 많은 샘플을 생성하는 데 사용되고 있다.
■ ToolBench에서는 오픈 소스 LLM의 tool 사용 능력을 향상시키기 위해 RapidAPI Hub에서 49개 카테고리에 걸쳐 16,464개의 API를 수집했다.
■ 그리고 single-tool과 multi-tool 시나리오를 모두 포함하는 다양한 instructions을 생성하도록 ChatGPT에게 이 API들을 프롬프트로 제공했다.
■ 이렇게 얻은 데이터셋을 기반으로 LLaMA를 파인튜닝하여, 결과적으로 tool 사용 측면에서 상당한 성능 향상을 얻었다.
■ 에이전트에게 사회적 역량을 부여하기 위한 연구가 있다. 여기서는 저자들이 하나의 샌드박스 환경을 만들고, 여러 에이전트를 그 안에 배치해 서로 상호작용하게 한다.
■ 어떤 social question이 주어지면, 중앙 에이전트가 먼저 초기 응답을 만들고, 그 응답을 주변 에이전트들에게 공유해 피드백을 받는다.
■ 중앙 에이전트는 피드백과 그 피드백에 대한 디테일한 설명을 바탕으로, 초기 응답이 사회적 규범에 더 맞도록 수정한다.
■ 이 과정 전반에 걸쳐 저자들은 대량의 agent social interaction data를 수집하며, 이 데이터는 이후 LLM을 파인튜닝하는 데 활용된다.
• Fine-tuning with Real-world Datasets
■ human/LLM annotations을 기반으로 데이터셋을 구축하는 것 외에도, real-world의 데이터셋을 사용하여 에이전트를 파인튜닝하는 것 역시 일반적인 방법이다.
■ MIND2WEB에서는 웹 도메인에서 에이전트의 역량을 향상시키기 위해 대량의 실제 데이터셋을 수집한다.
■ 구체적으로 31개 도메인에 걸친 137개의 실제 웹사이트에서 2,000개가 넘는 open-ended tasks을 수집한 다음, 이 데이터셋을 사용하여 영화 검색 및 티켓 예매와 같은 웹 관련 task에 대한 LLM의 성능을 향상시키기 위해 파인튜닝을 진행한다.
Capability Acquisition without Fine-tuning
■ model capability를 얻는 것에 대한 패러다임 전환은 Fig 4와 같다.

■ 전통적인 머신러닝의 시대에는 주로 데이터셋으로부터 학습함으로써 모델의 역량을 획득했으며, 이때 knowledge는 모델의 파라미터 내부에 인코딩되었다.
■ 그러나 LLM의 시대에는, 모델의 파라미터를 학습/파인튜닝하는 것은 물론이고, 정교한 프롬프트를 설계하는 것으로도 모델의 역량을 획득할 수 있다.
■ 프롬프트 엔지니어링에서는 모델의 역량을 향상시키거나 기존 LLM 안에 잠재된 능력을 끌어내기 위해 프롬프트에 가치 있는 정보를 자세하게 작성해야 한다.
■ 에이전트의 시대에 접어들면서, 모델의 역량은 세 가지 전략으로 획득할 수 있다: (1) 모델 파인튜닝 (2) 프롬프트 엔지니어링 (3) 적절한 에이전트 evolution mechanisms을 설계하는 것 (서베이에서는 이를 mechanism engineering이라고 부른다)
■ mechanism engineering은 specialized modules을 개발하고, 새로운 working rules을 도입하며, 에이전트의 능력을 끌어올리기 위한 strategies을 모두 포괄하는 광범위한 개념이다.
• Prompting Engineering
■ LLM의 language comprehension capabilities 덕분에 사람들은 자연어를 사용하여 LLM과 직접 상호작용할 수 있다.
■ 이 점을 이용한 전략은, 에이전트가 갖추었으면 하는 능력을 자연어로 설명한 프롬프트를 제공하여, 에이전트가 그에 맞는 방식으로 행동하도록 유도하는 것이다.
■ CoT에서는 에이전트에게 reasoning 능력을 부여하기 위해, 프롬프트 내에 intermediate reasoning steps을 few-shot examples로 사용한다. 비슷한 테크닉들이 CoT-SC, ToT에서도 사용된다.
■ RLP에서는 대화 중 에이전트 자신의 정신 상태와 청자의 정신 상태 모두에 대한 beliefs을 프롬프트로 제공함으로써, 대화에서 에이전트의 self-awareness을 향상시키는 것을 목표로 한다. 이를 통해 더 매력적이고 상황에 잘 맞는 에이전트의 발언을 이끌어낸다.
■ Retroformer는 에이전트가 과거의 실패에 대한 reflections을 생성할 수 있게 해주는 retrospective model을 제시한다. 이 내용은 에이전트의 미래 행동을 가이드하기 위해 LLM의 프롬프트에 통합된다.
• Mechanism Engineering
■ 모델 파인튜닝이나 프롬프트 엔지니어링과 달리, 메커니즘 엔지니어링은 에이전트의 역량을 향상시키는 매우 독특한 전략이다. 대표적인 방법들은 다음과 같다.
(1) Trial-and-error
■ 이 방법에서 에이전트는 먼저 액션을 수행하고, 그 직후에 사전 정의된 critic가 호출되어 해당 액션을 판단한다.
■ 액션이 만족스럽지 않다고 판단되면, 에이전트는 critic의 피드백을 통합하여 다시 react한다.
■ RAH에서 에이전트는 추천 시스템의 assistant 역할을 한다.
■ 에이전트의 중요한 역할 중 하나는 인간의 행동을 시뮬레이션하고 사용자를 대신해 responses을 생성하는 것이다.
■ 이 목표를 달성하기 위해 에이전트는 먼저 predicted response를 생성한 다음 이를 실제 human feedback과 비교한다.
■ predicted response과 real human feedback을 비교한 결과 서로 다를 경우, critic은 실패 정보를 생성하며 이는 에이전트의 next action에 통합된다.
■ DEPS에서 에이전트는 먼저 주어진 task를 완수하기 위한 plan을 설계한다. plan 실행 과정에서 action이 실패할 경우, explainer가 실패 원인을 설명하는 정보를 생성한다. 이 정보는 plan을 다시 설계하기 위해 에이전트에 통합된다.
■ PREFER는 에이전트의 성능이 떨어질 때, LLM이 자세한 피드백을 만들어 반복적인 개선 및 성능 향상을 돕는다.
(2) Crowd-sourcing
■ 에이전트의 능력을 향상시키기 위해 wisdom of crowds을 활용하는 토론 메커니즘을 설계한 연구(Multiagent Debate)가 있다.
■ 우선, 서로 다른 에이전트들이 주어진 질문에 대해 개별적인 답변을 생성한다. 만약 생성된 답변들이 일치하지 않는다면, 에이전트들은 다른 에이전트들의 솔루션을 참고해 업데이트된 답변을 출력한다.
■ 이 반복적인 과정은 최종적인 합의 도출에 도달할 때까지 계속된다. 이 방법에서 각 에이전트의 역량은 다른 에이전트들의 의견을 이해하고 수용함으로써 크게 향상된다.
(3) Experience Accumulation
■ 이름 그대로 경험 축적을 통해 능력을 키우는 방식이다.
■ GITM에서 에이전트는 처음에는 task 해결 방법을 모르는 상태이다. 에이전트는 계속해서 환경을 탐색하며, task를 성공적으로 완수하고 나면, 성공에 사용된 액션들을 에이전트의 memory에 저장한다.
■ 성공 정보를 memory에 저장했기 때문에, 훗날 에이전트가 이와 유사한 task를 만나면 관련 memory들을 추출해서 사용할 수 있다.
■ Voyager는 특정 스킬에 대한 실행 가능한 코드들이 환경과의 상호작용을 통해 정제되고 저장되는 'skill library'를 도입하여, 시간이 지남에 따라 경험이 축적된 에이전트가 효율적으로 task를 실행할 수 있게 한다.
■ AppAgent에서는 에이전트를 마치 human user처럼 앱과 상호작용하도록 만들기 위해, 자율적인 탐색과 human demonstrations에 대한 관찰로 knowledge base를 만들고 모두 학습시킨다.
■ MemPrompt는 문제 해결과 관련하여 사용자에게 자연어로된 피드백을 제공하도록 요청하고, 사용자의 자연어 피드백을 memory에 저장했다가 비슷한 문제에 직면했을 때 관련된 memory를 검색한다.
(4) Self-driven Evolution
■ 이 방법은 self-directed learning과 feedback mechanisms을 통해 에이전트가 스스로 발전할 수 있도록 한다.
■ LMA3는 에이전트가 스스로 목표를 설정할 수 있게 하며, 환경을 탐색하고 reward function으로부터 피드백을 받음으로써 능력을 점진적으로 향상시킨다.
■ 이 메커니즘을 따르면 에이전트는 자신만의 선호도에 따라 knowledge를 습득하고 능력을 키울 수 있다.
■ SALLM-MS는 GPT-4와 같은 advanced LLMs을 multi-agent system에 통합하여, 에이전트들이 환경에 적응하고 복잡한 tasks을 수행하며 높은 의사소통 능력을 선보이게 함으로써, 환경과의 상호 작용 속에서 자기 주도적으로 진화한다.
■ CLMTWA에서는 LLM을 teacher로, teacher보다 weaker LM이 student가 되어 자연어 설명을 통해 reasoning skill을 개선한다.
■ agent capability를 얻기 위해 언급된 전략들을 비교해 보면,
- (1) 파인튜닝 방식은 방대한 양의 task-specific knowledge를 흡수할 있는 모델 파라미터를 조정함으로써 에이전트의 역량을 향상시키지만, 이는 내부 가중치에 접근이 가능한 오직 오픈 소스 LLM에만 적합하다.
- (2) 파인튜닝이 없는 방식은 주로 정교한 프롬프팅 전략이나 메커니즘 엔지니어링을 기반으로 에이전트의 역량을 향상시킨다. 이 방법들은 (1)과 달리 오픈 소스 및 클로즈드 LLM 모두에 범용적으로 사용할 수 있다.
- 그러나 LLM의 context window size의 제한 때문에, 하나의 프롬프트에 너무 많은 정보를 넣을 수 없다는 단점이 있다.
- 게다가 주어진 문제에 대한 최적의 프롬프트와 메커니즘을 찾기가 쉽지 않기 때문에, 최적의 솔루션을 찾아내는 것이 결코 쉽지 않다.
'Agent' 카테고리의 다른 글
| A Survey on Large Language Model based Autonomous Agents (2) (0) | 2026.04.09 |
|---|