본문 바로가기

Agent

[Generative Agents] Interactive Simulacra of Human Behavior

■ 논문에서 제안하는 generative agents은 그럴듯한 인간 행동을 시뮬레이션하는  computational software agents이다.  

■ generative agents을 구현하기 위해, 저자들은 LLM을 확장하여 자연어를 사용해 에이전트의 경험에 대한 기록을 저장하고, 시간이 지남에 따라 이러한 기억들을 더 높은 수준의 reflections으로 만들어서, 행동을 계획하기 위해 이를 dynamically하게 검색하는 아키텍처를 제안한다.  

■ 저자들은 이 generative agents를 "심즈"와 유사한 interactive sandbox environment에 구현한다. 이 가상 마을에는 25명의 에이전트가 살고 있고, 사용자는 자연어를 통해 이 작은 사회와 상호작용할 수 있다.  

■ 평가 결과, generative agents은 그럴듯한 행동 및 emergent한 사회적 행동을 만들어낸다.  
- 예를 들어 사용자가 한 에이전트에게 "발렌타인 파티를 열고 싶다"고 하면, 그 이후 에이전트들은 다음 이틀 동안 자율적으로 초대장을 퍼뜨리고, 새로운 지인을 만들고, 서로에게 데이트를 신청하고, 적절한 시간에 함께 파티에 도착한다.  

[2304.03442] Generative Agents: Interactive Simulacra of Human Behavior

 

Generative Agents: Interactive Simulacra of Human Behavior

Believable proxies of human behavior can empower interactive applications ranging from immersive environments to rehearsal spaces for interpersonal communication to prototyping tools. In this paper, we introduce generative agents--computational software ag

arxiv.org

 

1. INTRODUCTION

■ 지난 오랫동안 사람 행동을 잘 모방할 수 있는 에이전트에 대한 연구가 이루어졌지만, 인간 행동의 공간은 방대하고 복잡하다. 

■ LLM은 특정 순간에서는 인간다운 행동을 꽤 잘 모방하지만, 그것만으로는 long-term coherence을 보장하는 에이전트를 만들기 어렵다.  

■ 인간다운 에이전트가 되려면, 시간이 지나면서 계속 쌓이는 상호작용, 갈등, 사건들에 대한 메모리를 관리할 수 있어야 하고, 여러 에이전트 사이에서 벌어지는 연쇄적인 social dynamics도 다룰 수 있어야 한다.  

■ 이를 위해선, 장기간의 기억을 저장하고, 필요하면 검색할 수 있고, 이러한 기억을 reflect하여 일반화 및 더 높은 수준의 추론을 도출하며, 그 추론의 결과를 현재 행동과 미래 계획에 반영하는 구조가 필요하다.  

■ 이런 배경에서 저자들은 generative agents를 제안한다. 

■ generative agents은 자신, 다른 에이전트 및 환경에 대해 다양한 추론을 수행하고, 자신의 characteristics과 경험을 반영한 daily plans을 세운 뒤, 그 계획을 실행하고 필요하면 다시 적절한 계획을 수립한다.  

■ 또한 사용자가 환경을 바꾸거나 자연어로 명령을 내리면, 그 변화에도 반응할 수 있다.  
- 예를 들어, generative agents은 아침 식사가 타고 있으면 불을 끄고, 화장실에 사람이 있으면 밖에서 기다리며, 이야기하고 싶은 다른 에이전트를 만나면 멈춰서 대화를 나눈다.  

■ generative agents이 모인 사회에서는 새로운 관계가 형성되고, 정보가 확산되는 등 emergent social dynamics가 나타난다.  

■ generative agents을 구현하기 위해 LLM을 사용하고, 그럴듯한 행동을 생성하기 위해 memories을 저장, 합성, 적용하는 에이전트 아키텍처를 사용한다.  

■ 이 아키텍처는 세 가지 주요 구성요소로 이루어진다: (1) memory stream (2) reflection (3) planning 

■ 첫 번째는 memory stream으로, 에이전트가 겪은 경험을 자연어 형태로 기록하는 long-term memory module이다.  

■ 중요한 점은 이 메모리를 그대로 다 쓰는 것이 아니라, retrieval 단계에서 relevance, recency, importance를 함께 고려하여 순간순간 행동에 필요한 메모리만 꺼낸다는 것이다.   

■ 두 번째는 reflection으로, 시간이 지남에 따라 메모리를 더 높은 수준의 추론으로 합성하여 에이전트가  행동을 더 잘할 수 있도록 한다.  

■ 세 번째는 planning이다. planning은 reflection에서 얻은 결론과 현재 환경을 바탕으로, 높은 수준의 행동 계획을 세우고, 그것을 재귀적으로 더 세부적인 행동으로 풀어 나간다.  

■ 이러한 reflection과 planning은 에이전트의 미래 행동을 더 자연스럽게 만들기 위해 memory stream으로 다시 피드백된다. 즉, 이 아키텍처는 순환 구조를 갖는다.  

■ 저자들은 이런 구조가 role-play, social platforms 등 여러 분야에 적용될 수 있다고 본다. 

■ 논문에서는 그중에서도 특히 The Sims 같은 게임에서 영감을 받아, 작은 상호작용을 하는 에이전트 사회를 만드는 것에 중점을 둔다.  

■ 이를 위해 이 아키텍처를 ChatGPT와 연결해, 게임 환경 내에 25명의 에이전트로 구성된 사회를 구현한다. 사용자는 이 에이전트들을 관찰하고 상호작용할 수 있다.  

■ 전통적인 게임 환경이라면 파티를 열기 위해, 수십 명의 캐릭터 행동을 일일이 수동으로 하드코딩해야 하지만, generative agents을 사용하면 단지 한 에이전트에게 "파티를 열고 싶다"는 의도만 전달하면 된다.  

■ 그 뒤는 에이전트들이 스스로 이어 간다. 파티를 준비하는 에이전트는 다른 이들을 초대해야 하고, 초대받은 에이전트들은 그 초대를 기억해야 하며, 실제로 참석할지 결정해야 하고, 또 적절한 시간에 맞춰 나타나야 한다. 이 모든 것이 단 하나의 사용자의 suggestion에서 시작된다.  

■ 논문에서는 generative agents를 두 가지 방식으로 평가한다. 
- (1) 에이전트를 개별적으로 놓고 보았을 때, 정말로 그럴듯한 행동을 생성하는지 시험하기 위한 controlled evaluation
- (2) 두 번째는 end-to-end evaluation로, 2일의 게임 시간 동안 에이전트들의 stability 및 emergent social behaviors가 실제로 나타나는지를 보는 평가이다.  

■ technical evaluation에서는 에이전트를 자연어로 "인터뷰"하여 에이전트가 캐릭터를 유지하는지, 기억을 제대로 하는지, 계획을 세울 수 있는지, 상황에 반응할 수 있는지, 그리고 reflection을 정확히 수행하는지를 확인한다.  

■ 추가로, 에이전트의 memory, reflection, planning에 대한 여러 ablations을 비교한 결과, 이 세 요소가 모두 강력한 성능을 내는 데 핵심임을 확인한다.  



2. GENERATIVE AGENT BEHAVIOR AND INTERACTION

■ 저자들은 generative agents의 가능성을 확인하기 위해, generative agents을 The Sims를 연상시키는 단순한 sandbox world의 캐릭터들로 구현했다. 이 세계의 이름은 Smallville이며, 작은 마을 환경으로 설정된다.  


2.1 Agent Avatar and Communication

■ Smallville에는 25명의 서로 다른 에이전트가 거주하고 있고, 각 에이전트는 단순한 아바타로 표현된다.  

■ 각 에이전트는 시작 시점에서 한 문단 분량의 자연어로 작성된 자신의 정체성을 seed memory로 부여받는다. 예를 들어 John Lin은 다음과 같은 설명을 받는다. 

■ 세미콜론으로 구분된 각 phrase는 시뮬레이션 시작 시 에이전트의 초기 memory로 저장된다. 

2.1.1 Inter-Agent Communication

■ 에이전트들은 자신의 행동을 통해 세계와 상호작용하고, 자연어를 통해 서로 상호작용한다. 

■ 매 time step마다 에이전트들은 현재 자신이 무엇을 하고 있는지(즉, 현재 행동)를 자연어 문장으로 출력한다. 예를 들어 "일기를 쓰고 있다", "이메일을 확인하고 있다" 같은 식이다.  

■ 이 자연어 행동 서술은 다시 sandbox world에 영향을 미치는 움직임으로 변환된다. 사용자 인터페이스에서는 이 행동이 에이전트 머리 위에 뜨는 이모지로 표시된다. 이를 위해 언어 모델을 활용하여 행동을 이모지로 번역한다.  

■ 에이전트들은 자연어로 서로 소통한다. 자신의 주변에 있는 다른 에이전트들을 인지할 수 있고, generative agent architecture가 그 순간 그냥 지나칠지, 아니면 대화를 시작할지를 결정한다.  

■ 아래는 다가오는 선거에 대해 Isabella Rodriguez와 Tom Moreno 에이전트가 나누는 대화 예시이다. 

2.1.2 User Controls

■ 사용자는 에이전트가 자신을 어떻게 인식해야 하는지 페르소나를 지정함으로써 자연어를 통해 에이전트와 소통한다.  

■ 예를 들어, 사용자가 자신을 "reporter"로 지정하고 "누가 출마하나요?"라고 다가오는 선거에 대해 물으면 John 에이전트가 다음과 같이 대답한다. 

■ 또한 사용자가 에이전트에게 직접 command를 내리고 싶을 때는, 그 에이전트의 "inner voice"라는 페르소나를 취할 수 있다. 이렇게 하면 에이전트는 해당 발언을 지시로 받아들일 가능성이 높아진다.  

■ 예를 들어 사용자가 John의 inner voice가 되어 "당신은 이번 선거에서 Sam과 맞서 출마할 것이다"라고 말하면, John은 선거에 출마하기로 결정하고 그 사실을 아내와 아들에게 알려준다.  

■ 즉, 사용자는 자연어를 통해 에이전트에게 단순 질의를 할 수도 있고, 그 에이전트의 inner voice처럼 개입해서 행동 방향 자체를 바꾸는 방식으로 개입할 수도 있다.  


2.2 Environmental Interaction

■ Smallville은 카페, 바, 공원, 학교, 기숙사, 주택, 상점 등 작은 마을에 있을 법한 기본 공간들이 있고, 각 공간 안에는 해당 공간을 기능적으로 만드는 subareas 및 objects가 정의되어 있다. 

■ 에이전트들은 건물을 드나들고, 지도를 탐색하고, 다른 에이전트에게 접근하며 Smallville을 돌아다닌다. 이런 에이전트의 이동은 generative agent architecture와 sandbox game engine에 의해 결정된다. 

■ 모델이 에이전트가 특정 위치로 이동할 것을 명령하면, 시스템은 Smallville 환경에서 목적지까지의 도보 경로를 계산하고 에이전트는 이동을 시작한다. 

■ 그리고 사용자 역시 그 환경에서 작동하는 하나의 에이전트로서 Smallville에 들어갈 수 있다. 

■ 사용자가 조작하는 에이전트는 Isabella나 John처럼 Smallville 세계에 이미 존재하는 에이전트일 수도 있고, Smallville에 과거 이력이 전혀 없는 외부 방문객일 수도 있다. 

■ Smallville의 거주자들(즉, Smallville에 있는 에이전트들)은 사용자의 존재를 인지하고, 상호작용을 시작하며, 사용자의 행동을 기억한 후 그에 대한 의견을 형성한다.  

■ 사용자와 agents은 The Sims처럼 이 세계에 있는 객체들의 상태에 영향을 미칠 수 있다. 
- 예를 들어, 에이전트가 잠을 잘 때 침대는 "occupied" 상태가 될 수 있고, 에이전트가 식사를 만들기 위해 재료를 다 쓰면 냉장고는 "empty" 상태가 될 수 있다.  

■ 또한 사용자는 자연어로 에이전트 주변 객체의 상태를 다시 작성하여 Smallville 내 에이전트의 환경을 재구성할 수 있다. 
- 예를 들어, 아침에 Isabella가 식사를 만들고 있을 때, 사용자는 객체를 선택하고 새로운 상태를 묘사하는 명령(예: "<Isabella의 아파트: 주방: 스토브>가 불타고 있다")을 시스템에 입력하여 주방 스토브의 상태를 "turned on"에서 "burning"으로 변경할 수 있다.  
- 마찬가지로 샤워기의 상태를 "leaking water"로 설정하면, 에이전트는 샤워기의 누수를 고치려 시도할 수 있다.  


2.3 Example “Day in the Life”

■ 각 에이전트는 처음에 주어진 한 문단 분량의 자연어 설명만을 바탕으로 자신의 하루를 계획하기 시작한다. 

■ 그리고 시간이 흐르면서, 에이전트들은 서로 및 환경과 상호작용하면서 기억을 쌓고, 관계를 형성하고, 공동 활동을 조율하게 된다. 그러면서 점차 이들의 행동은 진화한다.  

■ 저자들은 John Lin 에이전트의 하루 동안의 시스템 출력을 추적하였다.

■ John은 오전 7시에 일어나서 양치질을 하고, 샤워를 하고, 옷을 입고, 아침을 먹은 뒤, 거실에서 뉴스를 확인한다.  

■ 오전 8시에 Eddy가 일어나서 막 나가려던 John과 합류해서 오늘 무엇을 하는지에 대한 대화를 잠깐 나눈다.  

■ Eddy가 나간 후 Mei가 일어나 John과 합류한다. Mei는 Eddy에 대해 묻고, John은 방금 나눈 대화를 회상하여 Mei와 대화한다.  

■ 이는 generative agents가 바로 직전에 있었던 상호작용을 기억하고 그것을 다른 대화에 자연스럽게 재사용할 수 있음을 보여준다.  


2.4 Emergent Social Behaviors

■ Smallville의 generative agents은 서로 상호작용함으로써 개인 행동을 넘어 사회적 현상까지 만들어 낸다. 그리고 이러한 사회적 행동은 사전에 프로그래밍된 것이 아니라 agent들 사이의 상호작용 속에서 emergent하게 발생한다.  

2.4.1 Information Diffusion

■ 에이전트들이 서로를 인지함에 따라 대화에 참여할 수 있으며, 이 과정에서 정보가 한 에이전트에서 다른 에이전트로 퍼질 수 있다. 예를 들어 식료품점에서 Sam과 Tom의 대화에서 Sam은 Tom에게 자신의 선거 입후보 사실을 알린다.

■ 나중에는 Tom과 John이 Sam의 당선 가능성을 이야기한다. 그리고 점차 Sam의 입후보 사실은 마을의 화젯거리가 되며, 일부는 그를 지지하고 다른 일부는 미결정 상태로 남는다.  

2.4.2 Relationship Memory

■ Smallville의 에이전트들은 시간이 지나면서 새로운 관계를 만들고, 다른 에이전트와의 과거 상호작용을 기억한다. 예를 들어 시뮬레이션 시작 시 Sam은 Latoya Williams를 모르는 상태이다. 

■ 시간이 지나면서 Johnson 공원을 산책하던 중 Sam은 Latoya와 만나 인사하고 Latoya가 사진 프로젝트를 하고 있다는 이야기를 듣는다.  

■ 이후 다시 만났을 때 Sam은 그 대화를 기억하고 "프로젝트는 어떻게 진행되고 있나요?"라고 묻고, Latoya는 "잘 진행되고 있어요."라고 대답한다.  

■ 즉, generative agents은 이전에 나눈 대화 내용을 기억해 관계가 이어지는 듯한 상호작용을 보인다.  

2.4.3 Coordination

■ generative agents은 서로 coordinate한다. 예를 들어, Hobbs 카페의 Isabella Rodriguez가 2월 14일 오후 5시부터 7시까지 발렌타인데이 파티를 계획하려는 의도로 초기화되었다고 하자. 

■ 이 seed로부터 에이전트는 Hobbs 카페나 다른 곳에서 친구와 고객을 만날 때 그들을 초대하기 시작한다. 그리고 13일 오후에 Isabella는 카페를 장식하기 시작한다.  

■ 친한 친구인Maria는 카페에 와서 Isabella를 도와 카페를 장식한다. Maria의 캐릭터 설명에는 그녀가 Klaus를 짝사랑한다는 설정이 포함되어 있다. Maria는 그날 밤 Klaus를 파티에 초대하고, 그는 기꺼이 수락한다.  

■ 발렌타인데이에 Klaus와 Maria를 포함한 5명의 에이전트가 오후 5시에 Hobbs 카페에 나타나 축제를 즐긴다. (Fig 4) 

■ 이 시나리오에서 사용자는 단지 파티를 열고자 하는 Isabella의 파티 의도와 Klaus에 대한 Maria의 짝사랑만을 설정했을 뿐이다.  

■ 파티에 대한 소문을 퍼뜨리고, 장식하고, 서로에게 데이트를 신청하고, 파티에 도착하고, 파티에서 서로 상호작용하는 사회적 행동들은 모두 에이전트 아키텍처에 의해 자율적으로 시작된다.  



3. GENERATIVE AGENT ARCHITECTURE

■ generative agents의 목표는 open world 안에서 다른 에이전트와 상호작용하고, 환경 변화에 반응할 수 있는 행동 프레임워크를 만드는 것이다.  

■ generative agents는 현재 환경과 과거의 경험을 input으로 받아 행동을 output으로 생성한다. 이런 행동을 가능하게 하는 핵심은 LLM 하나가 아니라, 관련 정보를 찾아내고 종합해서 LLM의 출력을 조건화하는 메커니즘이다.  

■ 정보를 synthesizing하고 retrieving하는 메커니즘이 없어도 LLM은 행동을 출력할 수는 있지만, 그 결과물인 에이전트는 과거 경험을 바탕으로 반응하지 못하고, 중요한 추론을 놓치며, long-term coherence을 유지하지 못할 수 있다.  

■ 장기적인 planning 및 coherence과 관련된 문제들은 GPT-4와 같은 최첨단 모델조차도 여전히 어려운 문제이다.  

■ generative agents는 시간이 지나면서 매우 많은 사건과 기억이 계속 누적되기 때문에, 그중에서 지금 필요한 것을 제대로 찾고 활용하는 것이 핵심 과제가 된다.  

■ 이 문제를 해결하기 위해 아키텍처의 중심에 놓이는 것이 memory stream이다. memory stream은 에이전트의 경험에 대한 기록을 유지하는 데이터베이스이다.  

■ 에이전트가 행동을 계획하고 환경에 반응할 때는, 이 memory stream에서 관련 있는 기록이 retrieve된다. 더 나아가 이런 기록들은 시간이 지나면서 더 높은 수준의 reflections로 재귀적으로 종합된다.  

■ 이 아키텍처의 모든 요소는 LLM을 활용할 수 있도록 자연어 설명 형태로 기록되고 추론된다. 즉, memory stream 안의 기억도 자연어이고, reflection도 자연어이며, planning도 자연어이다. 이렇게 하면 전체 구조가 LLM의 강점을 그대로 활용할 수 있다.   

■ 저자들은 ChatGPT의 gpt3.5-turbo를 사용하여 구현했다. 중요한 것은 특정 LLM 모델 자체보다도 memory, planning, reflection이라는 구조이다. 그래서 더 강한 LM이 등장하면, 동일한 아키텍처에서 표현력과 성능을 더 높여줄 것이라고 전망한다.  


3.1 Memory and Retrieval

Challenge

■ 인간 행동을 시뮬레이션할 수 있는 generative agents을 만들려면, 매우 많은 경험에 대해 추론해야 하지만, 그 모든 것을 프롬프트에 넣는 것은 사실상 불가능하다. 현재 LLM의 context window에 다 들어가지 않기 때문이다.  

■ 예를 들어 Isabella 에이전트에게 "요즘 무엇에 열정을 느끼나요?"라고 물었을 때, 언어 모델의 제한된 context window에 맞추기 위해 Isabella의 모든 경험을 요약하면, 행사나 프로젝트, 카페 정리와 같은 피상적인 답변이 나오기 쉽다.  

■ 이 문제를 해결하기 위한 구조가 memory stream이다. memory stream을 통해 기억들을 표면화 시켜, 사람들이 환영하는 것, 이벤트 계획, 발렌타인데이 파티처럼 사람들이 즐길 수 있는 분위기 조성 등 Isabella의 구체적인 열정이 응답으로 도출된다.  

Approach

■ memory stream은 에이전트의 경험에 대한 포괄적인 기록을 유지하는 저장소로, memory object들의 리스트이며, 각 object는 자연어 설명, creation timestamp, 그리고 가장 최근의 access timestamp을 가지고 있다.  

■ memory stream의  가장 기본적인 단위는 observation로, 이것은 에이전트가 직접 지각한 사건이다.  

■ 일반적인 observations에는 에이전트 자신이 수행한 행동이나, 다른 에이전트 혹은 비에이전트 객체에 의해 수행되는 것을 에이전트가 감지한 행동이 포함된다.  

■ 예를 들어 커피숍에서 일하는 Isabella는 시간이 지남에 따라 다음과 같은 observations을 축적할 수 있다: (1) Isabella가 페이스트리를 진열하고 있다, (2) Maria가 커피를 마시며 화학 시험 공부를 하고 있다, (3) Isabella와 Maria가 Hobbs 카페에서 발렌타인데이 파티 계획에 대해 대화하고 있다, (4) 냉장고가 비어 있다. 

■ 현재 상황에 맞는 기억을 꺼내기 위해, 저자들은 retrieval function을 구현하였다. retrieval function은 에이전트의 현재 상황을 입력으로 받아 언어 모델에 전달할 memory stream의 subset을 반환한다.  

■ 행동 방법을 결정할 때 에이전트가 고려해야 할 중요한 요소가 무엇인지에 따라 retrieval function의 가능한 구현은 매우 다양하다. 저자들은 세 가지 요소에 중점을 둔다: recency, importance, relevance

■ 첫 번째는 recency이다. 최근에 접근된 메모리 객체에 더 높은 점수를 부여한다. 이는 방금 전 일이나 오늘 아침의 사건처럼, 최근 경험이 아직 에이전트의 attentional sphere에 남아 있도록 만들기 위한 것이다.  

■ 저자들은 recency를 메모리가 마지막으로 retrieval된 이후 경과한 게임 시간에 대한 exponential decay function으로 모델링했다. decay factor는 0.995이다.  

■ 두 번째는 importance이다. 에이전트가 중요하다고 믿는 메모리 객체에 더 높은 점수를 할당함으로써, 평범한 기억과 에이전트에게 의미 있는 핵심 기억을 구별한다. 

■ 예를 들어 자기 방에서 아침을 먹는 것과 같은 평범한 이벤트는 낮은 importance score를 산출하는 반면, 중요한 타인과의 이별은 importance score를 산출한다.  

■ importance score를 구현할 수 있는 방법은 많지만, 저자들은 언어 모델에게 정수 점수를 출력하도록 요청하는 방식이 효과적임을 발견했다고 한다. 전체 프롬프트는 다음과 같다.  

■ 이 프롬프트는 "cleaning up the room"에 대해서는 2, "asking your crush out on a date"에 대해서는 8의 정수 값을 반환했다고 한다.  

■ importance score는 메모리 객체가 생성되는 시점에 한 번 생성된다. 

■ 세 번째는 relevance로, 현재 상황과 관련된 메모리 객체에 더 높은 점수를 할당한다. 

■ relevance는 항상 "무엇과 관련이 있는지"라는 질문에 의존한다. 저자들은 relevance를 query memory에 조건화한다. 

■ 예를 들어 학생이 친구와 화학 시험 공부 이야기를 하고 있다는 것이 쿼리인 경우, 아침 식사에 대한 메모리 객체는 낮은 relevance를 가져야 하고, 교사나 학업에 대한 메모리 객체는 높은 relevance를 가져야 한다.  

■ 저자들은 각 메모리의 텍스트 설명을 임베딩 벡터로 바꾸고, 그 임베딩 벡터와 query memory의 임베딩 벡터 사이의 cosine similarity를 relevance로 사용한다.  

■ 최종 retrieval score는 이 세 요소로 계산된다. 먼저 recency, relevance, importance score는 min-max scaling을 통해 [0, 1] 범위로 normalize된다. retrieval function은 이 세 요소의 가중합으로 메모리의 점수를 매긴다: \( score = \alpha_{recency} \cdot recency + \alpha_{importance} \cdot importance + \alpha_{relevance} \cdot relevance \) 
- 저자들의 구현에서는 모든 \( \alpha \)를 1로 설정했다.  

■ 이렇게 점수화한 뒤, top-ranked 메모리들 중 LLM context window 안에 들어갈 만큼만 프롬프트에 포함된다.  


3.2 Reflection

Challenge

■ generative agents이 raw observational memory만 가지고 있으면 일반화나 추론을 잘 하지 못한다. 

■ 예를 들어 Klaus Mueller에게 "아는 사람들 중 한 시간 함께 보내고 싶은 사람은 누구인가?"라고 물었다고 하자.  

■ observational memory만 있는 에이전트는 Klaus가 단순히 가장 자주 마주친 사람인 기숙사 이웃 Wolfgang을 고를 수 있다. 그러나 Wolfgang과 Klaus는 스쳐 지나가듯 만났을 뿐이고 깊은 관계는 없다.  

■ 더 그럴듯한 답을 하려면, Klaus가 연구 프로젝트에 많은 시간을 쓰고 있다는 여러 기억으로부터 "Klaus는 연구에 열정을 가진 사람이다"라는 higher-level의 reflection을 이끌어내고, Maria 역시 다른 분야이지만 연구에 노력하고 있다는 점을 연결해 그들이 공통의 관심사를 가진다는 결론에 도달해야 한다.  

Approach

■ reflection이라고 부르는 두 번째 유형의 메모리를 도입한다. 

■ reflection은 에이전트가 생성한 더 높은 수준의 추상적인 thoughts이다. 이것 역시 메모리의 한 유형이기 때문에 retrieval이 발생할 때 다른 observations과 함께 검색 대상에 포함된다.  

■ 그리고 reflections은 주기적으로 생성된다. 구현에서는 에이전트가 최근에 지각한 사건들의 importance scores 합이 임곗값(저자들의 구현에서는 150)을 초과할 때 reflections을 생성한다. 실제 환경에서 generative agents이 하루에 대략 2~3번 정도 reflection을 했다고 한다.  

■ reflection의 첫 단계는 에이전트가 최근 경험을 고려하여 "무엇에 대해 reflect할지 결정하는 것"이다. 

■ 저자들은 에이전트의 memory stream에 있는 가장 최근의 100개 기록(예: "Klaus Mueller는 젠트리피케이션에 관한 책을 읽고 있다", "도서관 책상이 현재 비어 있다" 등)을 사용하여 LLM에 쿼리를 보내고 다음과 같이 프롬프트한다. "이 정보만 보고 답할 수 있는 가장 salient한 high-level question 3개는 무엇인가?" 

■ 모델의 응답은 후보 질문들을 생성한다. 예를 들어, "Klaus가 열정을 쏟는 주제는 무엇인가?", "Klaus Mueller와 Maria Lopez의 관계는 무엇인가?" 같은 질문이 만들어질 수 있다.  

■ 이렇게 생성된 질문들을 검색을 위한 queries로 사용하고, 각 질문과 관련된 메모리(다른 reflections 포함)를 수집한다.  

■ 그런 다음, 언어 모델이 insights을 추출하고 그 insights의 증거가 된 특정 기록들을 인용하도록 프롬프팅한다. 전체 프롬프트는 다음과 같다. 

■ 이 프로세스는 "Klaus는 젠트리피케이션 연구에 헌신하고 있다 (1, 2, 8, 15 때문)"와 같은 문장을 생성한다. 이렇게 만들어진 문장은 파싱되어 memory stream에 reflection으로 저장된다.  

■ 그리고 reflection은 observations뿐만 아니라 다른 reflections도 대상으로 삼을 수 있다. 예를 들어 위의 Klaus에 대한 두 번째 statement는 관찰된 것이 아니라 Klaus가 이전에 했던 reflection이다.  

■ 결과적으로 에이전트들의 reflections은 트리 형태가 된다. 트리의 leaf nodes은 base observations이고, non-leaf nodes은 위로 올라갈수록 더 추상적이고 높은 수준이 되는 thoughts을 나타낸다.  


3.3 Planning and Reacting

Challenge

■ LLM은 어떤 순간의 상황에 대해 그럴듯한 행동을 생성할 수 있지만, 에이전트는 자신의 행동 시퀀스가 일관되고 그럴듯하도록 더 긴 시간에 걸쳐 계획을 세워야 한다.  

■ 언어 모델에게 Klaus의 배경을 프롬프트로 제공하고, 시간을 설명한 뒤, 주어진 순간에 어떤 행동을 취해야 하는지 묻는다면, 12시에 점심을 먹고도 12시 30분, 1시에도 또 점심을 먹는 식으로, 순간순간은 말이 되지만 전체적으로는 부자연스러운 행동이 나올 수 있다.  

■ 즉, 순간의 그럴듯함에만 최적화하면 장기적인 그럴듯함이 무너질 수 있다는 것이 문제이다. 저자들은 이 문제를 극복하기 위해 planning을 도입한다. planning을 통해 Klaus의 오후가 일관되게 이어지도록 도울 수 있다.  

Approach

■ plans은 에이전트가 수행할 미래 행동 시퀀스를 설명하며, 시간이 지나도 에이전트의 행동이 일관되게 이어지도록 돕는다.  

■ plan에는 위치, 시작 시간, 그리고 지속 시간이 포함된다. 예를 들어 Klaus가 연구 마감이 임박한 상황이라면, "2월 12일 오전 9시부터 180분 동안 기숙사 방 책상에서 논문을 읽고 노트 필기하기" 같은 형태의 plan이 만들어질 수 있다.  

■ 그리고 이런 plan도 reflection과 마찬가지로 memory stream에 저장되며, 이후 retrieval의 대상이 된다.

■ 이를 통해 에이전트는 행동을 결정할 때 observations, reflections, plans을 모두 함께 고려할 수 있다. 또한, 에이전트는 필요한 경우 중간에 plans을 변경할 수도 있다. 

■ 저자들은 plan이 너무 단순해서도 안 된다고 본다. 예를 들어 예술가 에이전트가 약국 카운터에서 움직이지 않고 4시간 동안 그림을 그리기로 계획하는 것은 비현실적이다.  

■ 더 바람직한 계획은 에이전트가 4시간 동안 자신의 스튜디오에서 재료를 모으고, 물감을 섞고, 휴식을 취하고, 청소하는 데 필요한 시간을 갖는 식으로 세부 단계가 있어야 한다.  

■ 이러한 계획을 생성하기 위해, 저자들의 접근법은 planning을 top-down 방식으로 시작한 다음 재귀적으로 더 많은 디테일을 생성하는 것이다.  

■ 구체적으로, 첫 번째 단계는 하루의 일정을 거시적인 차원에서 개략적으로 설명하는 계획을 세우는 것이다. 초기 계획을 생성하기 위해, 에이전트의 요약된 설명(예: 이름, 성격, 최근 경험에 대한 요약)과 전날에 대한 요약을 언어 모델에 프롬프트로 제공한다. 전체 프롬프트 예시는 아래와 같으며, 언어 모델이 완료할 수 있도록 하단이 미완성 상태로 되어 있다. 

■ 위와 같이 "오늘의 계획은:"으로 프롬프트를 끝내면, 모델이 "아침 루틴", "학교 수업", "오후 작곡 작업", "저녁 식사", "과제 마무리 후 취침"처럼 하루를 5~8개의 구간으로 나누어 계획을 생성한다.   

■ 에이전트는 이 계획을 memory stream에 저장한 다음, 더 셈밀한 행동을 생성하기 위해 이를 재귀적으로 분할한다. 

■ 예를 들어 1시간 단위로 쪼갤 수 있다: "오후 1시부터 5시까지 작곡 작업"은 "1시에는 아이디어 브레인스토밍", ... , "4시에는 짧은 휴식 후 다시 검토"   

■ 그런 다음 이를 다시 5~15분 단위로 더 잘게 나눈다: 예를 들어 "4시는 가벼운 간식 먹기", "4시 5분에는 작업 공간 주변을 짧게 산책", ... ,"4시 50분에는 작업 공간 정리하기" 

■ 이러한 세분화는 원하는 수준에 따라 조절할 수 있다. 

3.3.1 Reacting and Updating Plans

■ generative agents은 매 time step마다 주변 세계를 지각하고, 지각한 관찰 결과가 memory stream에 저장되는 action loop에서 작동한다.  

■ 에이전트가 기존 계획을 계속 진행해야 할지 아니면 반응(react)해야 할지를 결정하도록, 이러한 관찰 결과를 언어 모델에게 프롬프트로 제공한다. 

■ 예를 들어, 이젤 앞에 서서 그림을 그리고 있는 상황에서는 이젤을 관찰하게 될 수 있지만, 이것이 reaction을 유도할 가능성은 낮다. 그림을 그리고 있는데, 주변에 이젤이 보이는 건 자연스러운 일이기 때문이다.  

■ 그러나 Eddy의 아버지인 John이 Eddy가 집 정원에서 짧게 산책하는 것을 보았다고 기록하면, 결과는 달라진다.  
- 단순한 이웃이면 Eddy를 보고 react 없이 그냥 지나갈 수도 있지만, John은 Eddy의 아버지이므로 Eddy에게 말을 거는 반응이 더 자연스럽다.   

■ 아래는 그 프롬프트이다. 여기서 [Agent's Summary Description]은 에이전트의 전반적인 목표와 성향을 dynamically-generated된 한 문단짜리 요약(즉, 해당 에이전트가 어떤 에이전트인지)을 대신 표시한 것이다. (Appendix A) 

■ context summary는 두 개의 프롬프트를 통해 생성된다. 이 프롬프트들은 "[observer]와 [observed entity]는 어떤 관계인가?" 그리고 "[observed entity]는 [action status of the observed entity]이다"라는 queries을 통해 메모리를 검색하고, 그 답변들을 함께 요약한다. 

■ 출력 결과(즉, LLM의 판단 결과)는 John이 Eddy에게 작곡 프로젝트에 대해 물어보는 것을 고려해 볼 수 있음을 제안한다.  

■ 그런 다음 reaction이 일어난 시점부터 에이전트의 기존 계획을 다시 생성한다. 예를 들어 John이 원래 4시 56분에 쉬려고 했다고 하자. 그런데 Eddy에게 말을 걸기로 했기 때문에 원래 계획은 그대로 유지될 수 없다.  

■ 마지막으로, 그 행동이 에이전트 간의 상호작용을 나타낸다면, 그들의 대화를 생성한다.  
- John의 reaction이 혼자 하는 행동이라면 계획만 업데이트하면 된다. 그런데 John의 reaction이 Eddy에게 말을 거는 거라면, 이건 두 에이전트 사이의 상호작용이다. 그러면 시스템은 둘 사이의 대화를 생성해야 한다.  

3.3.2 Dialogue

■ 에이전트들은 서로 상호작용하면서 대화를 나눈다. 이때, 에이전트들은 서로에 대해 가진 기억을 조건으로 삼아 발화를 생성한다.  

■ 예를 들어 John이 Eddy와의 대화를 시작할 때, John이 Eddy에 대해 가진 요약된 기억과, John이 Eddy에게 작곡 프로젝트에 대해 물어보기로 결정했을 때의 의도된 reaction을 사용하여 John의 첫 발화를 생성한다. 

■ 그 결과는 다음과 같다: "Hey Eddy, how's the music composition project for your class coming along?" 이렇게 John이 Eddy에 대해 알고 있는 정보를 반영해서 말하게 된다.  

■ Eddy의 관점에서 보면, John이 대화를 시작한 것은 Eddy가 react하기를 원할 수 있는 하나의 event로 간주된다. 

■ 그래서 ohn이 했던 것처럼, Eddy도 John과 자신의 관계에 대한 기억, 그리고 대화 중 John의 마지막 발화와 관련 있을 수 있는 자신의 기억을 검색하고 요약한다.  

■ 만약 Eddy가 응답하기로 결정하면, Eddy의 요약된 메모리와 현재 대화 기록을 사용해서 Eddy의 발화를 생성한다.

■ Eddy의 다음 응답을 생성한다: "Hey Dad, it’s going well. I’ve been taking walks around the garden to clear my head and get some inspiration."  

■ 이 대화의 이어지는 부분은 두 에이전트 중 하나가 대화를 끝내기로 결정할 때까지 동일한 메커니즘을 사용하여 생성된다.  



4. CONTROLLED EVALUATION

■ generative agents는 개별 에이전트로서든 집단으로서든, 자신이 처한 환경과 경험을 바탕으로 그럴듯한 행동을 생성하는 것을 목표로 한다.  

■ 저자들의 평가에서는 generative agents의 역량과 한계를 확인한다: 개별 에이전트가 과거 경험을 적절하게 retrieve하고, 자신의 행동을 형성하는 그럴듯한 plans, reactions, 그리고 thoughts을 생성하는가? 에이전트 커뮤니티가 마을의 여러 집단 사이에서 정보 확산, 관계 형성, 에이전트 간 coordination을 보여주는가?  

■ 먼저 좁게 정의된 contexts 내에서 에이전트가 그럴듯한 행동을 생성하는지 확인하기 위해, 에이전트들의 응답을 개별적으로 평가하는 controlled evaluation을 수행한다.  


4.1 Evaluation Procedure

■ Smallville에서 generative agents을 평가하기 위해, generative agents이 자연어 질문에 응답할 수 있다는 점을 활용한다.  

■ 에이전트들을 "인터뷰"하여 과거 경험을 기억하는 능력, 경험을 바탕으로 미래 행동을 계획하는 능력, 예상치 못한 이벤트에 적절히 react하는 능력, 미래 행동을 개선하기 위해 자신의 수행을 reflect하는 능력을 탐색한다.  

■ 이러한 질문들에 제대로 답하기 위해서는, 에이전트들이 정보를 성공적으로 검색하고 종합해야 한다. 

■ 종속변수는 행동의 "그럴듯함"이며, 이는 에이전트에 관한 선행 연구에서도 중심이 되는 종속변수이다. 

■ 인터뷰는 다섯 가지 질문 범주를 포함한다. 각 범주는 다섯 가지 핵심 영역 중 하나를 평가하도록 설계되었다. 그 영역은 maintaining self-knowledge, retrieving memory, generating plans, reacting, reflecting이다.  

■ 각 범주마다, 에이전트들이 해당 영역에서 자신의 능력을 보여주도록 요구하는 5개의 질문을 던진다.
- (1) Self-knowledge: "자기소개를 해주세요" 또는 "평일 일정을 개략적으로 설명해 주세요"와 같은 질문을 한다. 이러한 질문들은 에이전트가 자신의 core characteristics에 대한 이해를 유지해야 답할 수 있다.  
- (2) Memory: "[name]은 누구인가?", "누가 시장에 출마합니까?"와 같이, 에이전트가 제대로 답하기 위해선 자신의 메모리에서 특정 이벤트나 대화를 검색하도록 유도하는 질문을 한다.  
- (3) Plans: 에이전트가 자신의 장기 계획을 검색해야 답할 수 있는 질문을 한다. 예를 들어 "내일 오전 10시에 무엇을 하고 있을 예정인가?"와 같은 질문이다.  
- (4) Reactions: 그럴듯한 행동의 베이스라인으로서, 에이전트가 그럴듯하게 대응해야 하는 가상의 상황을 제시하는 질문이다. 예를 들어 "아침밥이 타고 있어요 어떻게 하겠습니까?" 같은 질문이다.  
- (5) Reflections: 에이전트가 더 높은 수준의 추론을 통해 얻은 자기 자신과 타인에 대한 깊은 이해를 활용해야 하는 질문을 한다. 예를 들어 "최근 만난 사람 중 한 명과 시간을 보낸다면 누구와 보내고 싶고, 그 이유는 무엇인가?" 같은 질문이다.  
- 질문의 전체 리스트와 에이전트의 응답 예시는 Appendix B 

■ 에이전트들은 전체 아키텍처를 사용한 게임 시간 이틀간의 시뮬레이션이 끝난 시점에서 샘플링되었다. 이 기간 동안 에이전트들은 자신의 응답을 형성할 여러 상호작용과 기억을 축적해두었다. 

■ 응답의 그럴듯함에 대한 피드백을 수집하기 위해, 참가자들을 인간 평가자로 모집하고, 무작위로 선택된 에이전트의 Smallville에서의 삶을 리플레이로 보도록 했다. 참가자들은 에이전트의 memory stream에 저장된 모든 정보에 접근할 수 있었다. 

■ 100명의 참가자들은 동일한 에이전트에 대해 네 가지 서로 다른 에이전트 아키텍처와 인간이 작성한 조건에 의해 생성된 인터뷰 응답을 비교했다. 

■ 실험에서는 다섯 가지 질문 카테고리에서 무작위로 선택된 질문 하나를 보여주고, 모든 조건에서 생성된 에이전트의 응답을 함께 제시했다. 평가자들은 각 조건의 그럴듯함을 가장 그럴듯한 것부터 가장 덜 그럴듯한 것까지 순위를 매겼다. 


4.2 Conditions

■ 저자들은 generative agent architecture를, memory stream 안에 있는 세 가지 memory 유형인 observation, reflection, planning 중 일부 또는 전부에 대한 접근을 비활성화한 ablation들과 비교했다. 또한  human crowdworker가 작성한 조건과도 비교했다.  

■ 세 가지 ablated architecture가 있다 
- (1) no observation, no reflection, no planning 아키텍처로 observations, plans, reflections 같은 memory stream 안의 어떤 것도 사용할 수 없다.  
- (2) 두 번째는 no reflection, no planning 아키텍처로, memory stream 안의 observations에는 접근할 수 있지만, plans나 reflections에는 접근할 수 없다. 
- (3) 세 번째는 no reflections 아키텍처로, observations와 plans에는 접근할 수 있지만, reflections에는 접근할 수 없다.
- 참고로, 이전의 LLM 기반 에이전트들은 memory stream, planning, reflection 구조를 갖고 있지 않았기 때문에 no observation, no reflection, no planning 조건은 사실상 LLM을 통해 생성된 에이전트의 이전 SOTA를 나타낸다.  

■ 각 아키텍처에는 인터뷰 시점까지 에이전트가 축적한 모든 메모리에 대해 동등한 접근 권한이 주어졌다. 그러므로 여기서 발생하는 차이는 실제 차이에 대한 보수적인 추정치일 가능성이 높다.  

■ 실제로는 ablated architecture들이 이틀간의 시뮬레이션 동안 full architecture와 같은 경로를 따르지 않았을 것이다. 그럼에도 불구하고, 각 아키텍처마다 다시 시뮬레이션을 수행하면 시뮬레이션들이 서로 다른 상태로 갈라져 비교가 어려워지기 때문에, 실험을 이런 방식으로 설계했다고 한다.  

■ ablated architecture들에 더해, human baseline을 제공하기 위해 human crowdworker가 작성한 행동 조건을 추가했다. 이는 아키텍처가 기본적인 행동 능력 수준을 충족하는지 확인하고자 사용된다. 

■ 25명의 에이전트 각각에 대해 서로 다른 참여자를 모집했고, 그들에게 해당 에이전트의 sandbox life 리플레이를 보고 memory stream을 살펴보도록 했다. 

■ 그런 다음 참여자들에게 자신이 본 리플레이의 에이전트 목소리로 역할극을 하며(즉, (참여자가 해당 에이전트가 된 것처럼) 인터뷰 질문에 대한 응답을 작성하도록 요청했다. 

■ 크라우드워커가 작성한 이 응답들이 최소한의 품질 기대치를 충족하는지 확인하기 위해, 작업자들의 응답을 수동으로 검사했다고 한다.  


4.3 Analysis

■ 각 참가자가 5가지 조건을 그럴듯함에 따라 순위를 매긴 100 sets의 rank data를 생성했다. 

■ 이 rank data를 비교를 위해 interval data로 변환하고자, 순위를 사용하여 각 조건의 TrueSkill rating을 계산했다.

■ 이와 별도로 통계적 유의성을 확인하기 위해, Kruskal-Wallis test를 raw rank data에 적용했다. 그런 다음 Dunn post-hoc test를 수행하여 조건들 간의 pairwise differences를 확인했다. 마지막으로, Holm-Bonferroni method를 사용하여 Dunn 검정에서의 다중 비교에 대한 p-values을 조정했다.  

■ 또한 각 조건에서 생성된 응답들 사이의 질적 차이를 연구하기 위해 inductive analysis를 수행한다. 저자들은 두 단계에 걸친 qualitative open coding을 사용했다. 

■ 첫 번째 단계에서는 생성된 응답들을 문장 수준에서 가깝게 나타내는 코드들을 만들었다. 두 번째 단계에서는 첫 번째 단계에서 나온 코드들을 종합하여 더 높은 수준의 theme을 추출했다. 이러한 theme들을 사용하여 연구에서 생성된 응답의 유형들을 비교했다.  


4.5 Results

4.5.1 The Full Architecture Bests Other Conditions

■ Fig 8에서 볼 수 있듯이, 완전한 generative agent architecture가 가장 그럴듯한 행동을 생성했다.  

■ ablation conditions은 각 구성 요소가 제거됨에 따라 성능이 저하되었다. reflection을 사용할 수 없는 아키텍처가 그 다음으로 우수했고, reflection or planning에 접근할 수 없는 아키텍처가 그 뒤를 이었다. 

■ memory, planning, reflection에 접근할 수 없는 아키텍처(즉, 이전의 LLM-based 에이전트)가 모든 conditions 중 가장 낮은 성능을 달성했다. 

4.5.2 Generative Agents Remember, but With Embellishments

■ 완전한 memory module을 갖춘 generative agents은 과거 경험을 회상하고, 광범위한 contexts에 걸쳐 자신의 self-knowledge와 일관된 방식으로 질문에 답할 수 있다.  

■ 예를 들어, 애니메이터인 Abigail Chen은 "자신을 소개해 주세요"라는 질문에 일관되고 그럴듯한 방식으로 나이, 관심사, 창의적인 프로젝트에 대한 열정을 밝히며 대답했다.  

■ 자신의 observational memory에 대한 접근 권한이 없을 때 Abigail은 지인인 Rajiv Patel을 모른다고 부인했지만, 메모리의 도움으로 Rajiv를 성공적으로 회상하고 그를 설명할 수 있었다.  

■ 단, generative agents의 메모리에 결함이 없는 것은 아니었다. 에이전트들은 메모리에서 올바른 사례를 검색하는 데 실패할 수 있다. 

■ 예를 들어 Rajiv Patel은 Sam의 입후보 소식을 들었음에도 불구하고 지방 선거에 대한 질문을 받았을 때 "선거에 큰 관심을 기울이지 않았습니다"라고 대답했다. 즉, 필요한 순간에 필요한 메모리를 정확히 꺼내는 게 어려울 수 있다. 

■ 어떤 경우에는 에이전트들이 불완전한 메모리 조각을 검색하기도 했다. 예를 들어 Tom이 Isabella의 발렌타인데이 파티에 대해 질문을 받았을 때, "발렌타인데이 파티가 있는지 잘 모르겠다. 하지만 파티가 열린다면 파티에서 Isabella와 다가오는 선거와 Sam에 대한 제 생각을 논의해야 한다는 것은 기억한다"라고 응답했다.  

■ 이는 Tom이 Isabella와 파티에서 선거에 대해 논의하기로 계획한 메모리는 검색했지만, 파티에 대해 처음 들었던 메모리는 검색하지 못한 것이다. 이로 인해 Tom은 파티에서 무엇을 해야 할지는 확신하지만 애초에 파티가 실제로 존재하는지에 대해서는 확신하지 못하는 상태가 되었다.  

■ 그리고 때때로 에이전트들은 hallucination 현상을 보였다. 구체적으로, 자신이 경험하지 않은 일을 경험했다고 주장하는 종류의 hallucination이 아닌 자신의 지식을 꾸며내는 형태의 hallucination 사례를 보였다.  

■ 예를 들어 sabella는 Sam이 지역 선거에 출마한다는 사실을 알고 있었고, 질문을 받았을 때 이를 확인해주었다. 이 부분까지는 정상적인 기억이다. 그러나 Isabella는 Sam과 Isabella가 그런 계획에 대해 논의한 적이 없었음에도 불구하고, "그가 내일 발표를 할 것이다"라고 덧붙였다. 

■ 즉, 에이전트들은 응답을 생성하는 데 사용된 언어 모델 안에 인코딩된 세계 지식을 바탕으로 자신의 지식을 꾸며낼 수도 있다.  

4.5.3 Reflection Is Required for Synthesis

■ reflection은 generative agents이 자신의 경험들을 더 깊게 종합해야 하는 결정을 내릴 때 장점이 되었다. 

■ 예를 들어 Wolfgang Schulz의 생일에 무엇을 선물하면 좋을지 질문받았을 때, reflection에 접근할 수 없었던 Maria Lopez는 자신이 확실히 알지 못한다고 인정하며, Wolfgang과 많은 상호작용을 했음에도 불구하고 그가 무엇을 좋아하는지 모른다고 답했다. 

■ 그러나 reflection memories에 접근할 수 있었을 때, Maria는 이렇게 답했다: "그가 수학적 음악 작곡에 관심이 있으니까, 그것과 관련된 것을 선물할 수 있을 것 같아요. 음악 작곡에 관한 책이나 관련된 무언가, 아니면 그가 사용할 수 있는 특별한 소프트웨어 같은 것이 좋겠네요." 



5. END-TO-END EVALUATION


5.1 Emergent Social Behaviors

■ 에이전트 커뮤니티에서 나타나는 행동을 확인하기 위해, 정보 확산, 관계 형성, agent coordination에 대한 측정 방법을 설계했다. 

5.1.1 Measurements

■ 중요한 정보가 있다면, 에이전트들이 그것을 서로에게 퍼뜨릴 것이라고 기대할 수 있다. 

■ 이 현상이 실제로 일어나는지 테스트하기 위해, 저자들은 게임 세계에서 이틀 동안 두 가지 특정 정보가 얼마나 퍼지는지를 측정했다. 두 정보는 Sam의 출마와 Hobbs 카페에서 열리는 Isabella의 발렌타인데이 파티이다.  

■ 시뮬레이션 시작 시점에 이 두 정보는 모두 각각의 최초 정보 생성자만 알고 있다. Sam의 출마는 Sam, 파티는 Isabella만이 알고 있다. 이 정보들은 초기화 과정에서 각 캐릭터의 메모리에 추가되었기 때문이다.  

■ 정보가 퍼졌는지 관찰하기 위해, 게임 시간으로 이틀이 끝난 뒤 25명의 각 에이전트를 인터뷰하고 다음과 같이 묻는다: "발렌타인데이 파티가 있다는 것을 알고 있었나요?" 그리고 "누가 시장에 출마하는지 아시나요?" 

■ 그리고 에이전트들의 응답을 분석하면서, 해당 정보를 알고 있음을 나타내면 "yes", 그렇지 않으면 "no"로 라벨링했다.  

■ 추가로, 에이전트가 해당 정보를 알고 있다고 확인한 모든 응답에 대해, 저자들은 에이전트에게 그 정보를 제공한 대화가 memory stream 안에 있는지 찾아냄으로써, 그 응답이 hallucination이 아님을 검증했다.  

■ 또한 에이전트들이 시뮬레이션이 진행되는 동안 서로 관계를 형성할 것이라고 기대할 수 있다.

■ 관계 형성을 검증하기 위해, 저자들은 유사한 인터뷰 절차를 사용한다. 각 에이전트에게 다른 모든 에이전트에 대해 알고 있는지 묻기 위해 "<name>을 알고 있나요"라는 질문을 사용했다. 

■ 마찬가지로 에이전트의 응답이 hallucination이 아님을 검증하기 위해 에이전트의 memory stream 을 검사하여 확인했다. 

■ 저자들은 시뮬레이션 시작 시 한 번, 종료 시 한 번 묻고, 두 에이전트가 서로를 알고 있는 경우에 대해서만 그 한 쌍의 에이전트가 관계를 형성한 것으로 간주한다. 

■ 그런 다음 관계 형성을 측정하기 위해, 에이전트들의 응답을 사용해 undirected graph를 만든다. 이 그래프에서 25개의 vertices \( V \)는 에이전트들을 나타내고, edges \( E \)는 연결된 두 vertices 사이의 "서로 알고 있음"을 나타낸다.  

■ 이 그래프를 바탕으로, network density를 \( \eta = 2 * |E|/|V|(|V| - 1) \)로 계산하며, 여기서 \( |V| \)는 vertices의 수, \( |E| \)는 edges의 수이다.  

■ 마지막으로, 에이전트들이 서로 coordinate할 수 있어야 한다고 기대할 수 있다. 저자들은 집단 활동의 맥락에서, 특히 Isabella가 만든 발렌타인데이 파티에서 이러한 coordination을 연구한다.  

■ 자신의 행동을 coordinate하기 위해, 에이전트들은 그 이벤트에 대해 들어야 하고, 적절한 시간과 장소에 나타나도록 계획을 세워 행동하기로 선택해야 한다.  

5.1.2 Results

■ 이틀간의 시뮬레이션 동안 Sam의 시장 출마를 알고 있는 에이전트 수는 1명에서 8명으로 증가했다. Isabella의 파티를 알고 있는 에이전트 수는 1명에서 13명으로 증가했다.  

■ 이 모든 일은 사용자의 개입 없이 발생한 일이며, 이 정보를 알고 있다고 주장한 에이전트들 중 그 정보를 hallucination으로 만들어낸 경우는 없었다고 한다.  

■ 또한, 에이전트 커뮤니티가 시뮬레이션 동안 새로운 관계를 형성했다는 것도 관찰했다. network density는 0.167에서 0.74로 증가했다.  

■ 다른 에이전트에 대한 인식 여부를 묻는 453개의 에이전트 응답 중, 1.3%, 즉 6개가 hallucination으로 확인되었다고 한다.  

■ 마지막으로, Isabella의 파티와 관련해 에이전트들 사이의 coordination에 대한 증거를 발견했다.  

■ 행사 전날, Isabella는 손님들을 초대하고, 재료를 모으고, 카페를 장식하기 위해 도움을 요청하는 데 시간을 보냈다. 파티 당일, 초대받은 12명의 에이전트 중 5명이 파티에 참석하기 위해 Hobbs 카페에 나타났다.  

■ 저자들은 파티에 초대받았지만 참석하지 않은 7명의 에이전트를 인터뷰하여 추가로 조사했다. 세 명은 파티에 참석하지 못하게 한 일정 충돌이나 사정이 있었다고 응답했으며, 나머지 네 명의 에이전트는 질문을 받았을 때 파티에 참석할 관심을 표현했지만, 파티 당일에 오도록 계획하지는 않았다. 


5.2 Boundaries and Errors

■ 저자들은 Smallville에 대한 inductive analysis를 수행하여 에이전트들의 boundary conditions과 불규칙한 행동을 조사했고, 개선할 수 있는 세 가지 불규칙 행동 유형을 식별했다.  

■ 첫째, 지속적으로 증가하는 메모리를 종합하는 것은 가장 관련 있는 정보를 검색하는 데 어려움을 줄 뿐만 아니라, 에이전트가 알게 된 장소가 늘어남에 따라 어떤 공간에서 행동을 수행해야 하는지를 결정하는 데도 어려움을 주었다.  

■ 그 결과, 일부 에이전트들은 자신의 행동을 수행하기에 적절하지 않은 장소를 선택했고, 이는 시간이 지남에 따라 에이전트의 행동을 덜 그럴듯하게 만들었다.  

■ 예를 들어 점심을 어디서 먹을지 결정할 때, 많은 에이전트들은 처음에는 카페를 선택했다. 그러나 일부 에이전트들이 근처의 바에 대해 알게 되자, 그들은 점심을 먹기 위해 카페 대신 바를 가기로 선택했다. 이때, 이 바는 하루 중 은 시간에 사람들이 모이는 장소로 의도된 곳이다.  

■ 둘째, 무엇이 적절한 행동인지에 대한 잘못된 분류 때문에 발생하는 불규칙 행동을 발견했다. 특히 자연어로 전달하기 어려운 특정 장소의 규칙이 에이전트들에게 충분히 전달되지 않았을 때 이런 문제가 나타났다. 

■ 예를 들어 대학 기숙사에는 한 사람만 사용할 수 있는 화장실이 있었지만, 일부 에이전트들은 기숙사 화장실이 보통 여러 사람이 동시에 사용할 수 있는 공간이라고 생각했다. 그래서 다른 사람이 안에 있을 때도 그 화장실에 들어가기로 선택했다.  

■ 마찬가지로 Smallville의 에이전트들은 특정 장소가 일정 시간 이후에는 닫힌다는 사실을 깨닫지 못하고, 여전히 그곳에 들어가기로 결정할 수 있다.  

■ 예를 들어 Smallville의 상점들은 모두 오후 5시쯤 문을 닫지만, 가끔 몇몇 에이전트들은 상점이 이미 닫혔다는 것을 이해하지 못하고 오후 5시 이후에 상점에 들어갔다. 

■ 이러한 문제들은 해당 장소의 상태에 규칙을 추가함으로써 해결될 수 있을 가능성이 크다. 예를 들어 "dorm bathroom"이라고 설명하는 대신, "one-person bathroom"이라고 설명하는 방식이다. 

■ 마지막으로, instruction tuning의 영향을 관찰했다. 이는 에이전트들의 행동을 전반적으로 더 공손하고 협조적으로 이끄는 것처럼 보였다. 

■ 에이전트들이 생성한 대화는 지나치게 형식적으로 느껴질 수 있었다. 예를 들어 Mei가 남편 John과 나누는 대화에서, 그녀는 종종 격식 있는 인사로 대화를 시작하고, 그의 하루에 대해 공손하게 질문한 뒤, "언제나처럼 당신과 이야기해서 좋았어요"라고 끝맺었다. 

■ 더 나아가, 우리는 instruction tuning이 에이전트들을 서로에게 지나치게 협조적으로 만드는 것처럼 보인다는 점도 관찰했다. 

■ 예를 들어 Isabella는 발렌타인데이 파티에 대해 다른 에이전트들로부터 매우 다양한 제안과 아이디어를 받았다. 예를 들면 셰익스피어 낭독회를 열거나 전문적인 네트워킹 이벤트를 하자는 제안들이었다. 

■ 이러한 아이디어들이 Isabella 자신의 관심사와 특성에 맞지 않았음에도 불구하고, Isabella는 거의 거절하지 않았다. 심지어 시간이 지나면서 다른 사람들의 관심사가 Isabella의 관심사가 되었다. 이는 에이전트의 자기 정체성을 오염시킨 것이다.