[LLM] Generative Agents: Interactive Simulacra of Human Behavior (생성적 에이전트 : 상호작용적인 가상 인간 행동 모델) 논문 (1)

gunny·2025년 1월 9일

Paper

목록 보기
3/9

논문 : https://arxiv.org/abs/2304.03442

https://arxiv.org/abs/2304.03442

Generative Agents: Interactive Simulacra of Human Behavior (생성적 에이전트 : 인간 행동의 인터랙티브한 시뮬라크르)

시뮬라크르 - 철학적 개념에서 나온 용어, 현실물의 복제물이나 가짜 이미지로, 인터랙티브한 가상 인간 행동 모델로 해석 가능

생성적 에이전트 : 상호작용적인 가상 인간 행동 모델

ABSTRACT

  • 신뢰할 수 있는 인간 행동을 모방한 에이전트는 몰입형 환경, 대인 관계를 연습하는 공간, 또는 프로토타이핑 도구와 같은 다양한 상호작용 애플리케이션을 가능하게 한다. 이 논문에서는 인간 행동을 신뢰성 있게 시뮬레이션하는 생성적 에이전트를 소개한다. 생성적 에이전트는 아침에 일어나 아침을 준비하고 출근하며, 예술가는 그림을 그린다. 하루 동안 이 에이전트들은 새로운 사람들을 만나고, 데이트를 신청하거나 파티에 함께 가기 위해 일정을 맞추는 등의 행동을 한다.
  • 우리는 실험을 통해 에이전트 아키텍처의 세 가지 주요 요소인 관찰(observation), 계획(planning), 반영(reflection) 이 에이전트 행동의 신뢰성을 높이는 데 중요한 역할을 한다는 것을 입증했다. 대형 언어 모델을 상호작용 가능한 에이전트와 결합함으로써, 이 연구는 인간 행동의 신뢰할 수 있는 시뮬레이션을 가능하게 하는 아키텍처와 상호작용 방식을 제시한다.

CSS CONCEPTS

  • 인간 중심 컴퓨팅 → 상호작용 시스템 및 도구;
  • 컴퓨팅 방법론 → 자연어 처리

Keywords

  • 인간-ai 상호작용, 에이전트, 생성적 AI, 대형 언어 모델

ACM 참조 형식

Joon Sung Park, Joseph C. O’Brien, Carrie J. Cai, Meredith Ringel Morris, Percy Liang, Michael S. Bernstein. 2023. 생성적 에이전트: 인간 행동의 인터랙티브 시뮬라크르. 제36회 ACM 사용자 인터페이스 소프트웨어 및 기술 심포지엄(UIST ’23), 2023년 10월 29일~11월 1일, 미국 샌프란시스코에서. ACM, 뉴욕, NY, USA, 22페이지. https://doi.org/10.1145/3586183.3606763

1. INTRODUCTION

  • 우리는 어떻게 하면 신뢰할 수 있는 인간 행동을 반영하는 상호작용형 인공지능 사회를 만들 수 있을까? The sims(심즈)와 같은 샌드박스 게임부터 인지 모델과 가상환경 같은 애플리케이션에 이르기까지, 40년 넘게 연구자들과 실무자들은 인간 행동의 신뢰할 수 있는 대리자로서의 역할을 할 수 있는 자동화된 에이전트(computational agents) 를 구상해 왔다. 이러한 비전에서 자동화된 에이전트는 과거의 경험에 따라 일관되게 행동하고, 환경에 대해 신뢰할 수 있는 반응을 보인다. 인간 행동의 시뮬레이션은 가상 공간과 커뮤니티에 현실적인 사회적 현상을 불어넣거나, 사람들이 드물지만 어려운 대인 관계 상황을 처리하는 방법을 훈련시키거나, 사회과학 이론을 실험하거나, 이론 및 사용성 테스트를 위한 인간 모델을 만들거나, 유비쿼터스 컴퓨팅 애플리케이션과 사회적 로봇을 지원하거나, 개방형 세계에서 복잡한 인간 관계를 탐색할 수 있는 게임 내의 비프레이어 캐릭터를 구현하는데 활용될 수 있다.
  • 하지만 인간 행동의 영역은 방대하고 복잡하다. 인간 행동을 한 시점에서 시뮬레이션할 수 있는 대형 언어 모델의 눈에 띄는 발전에도 불구하고, 장기적인 일관성을 보장하는 완전한 일반 에이전트는 시간이 지남에 따라 새로운 상호작용, 갈등, 사건들이 발생하고 사라지는 동안에 이를 관리할 수 있는 아키텍처가 필요하다. 또한 여러 에이전트 간에 펄쳐지는 사회적 역학을 다루는 것도 필요하다. 성공적인 시스템은 긴 시간 동안 관련된 사건과 상호작용을 찾고, 그 기억을 반영해 더 높은 수준의 추론을 이끌어내며 그 추론을 바탕으로 순간적인 상황뿐 아니라 에이전트 행동의 장기적인 흐름을 이해하고 계획하고 반응할 수 있어야 한다.
  • 본 논문에서는 생성적 에이전트(generative agents) 를 소개한다. 생성적 에이전트는 생성적 모델을 활용해 신뢰할 수 있는 인간 행동을 시뮬레이션하며, 개인적인 행동뿐 아니라 집단의 자연발생적인(emergent) 행동을 신뢰할 수 있게 재현한다. 생성적 에이전트는 자신과 다른 에이전트, 환경에 대해 다양한 추론을 내리고 이를 바탕으로 자신만의 하루 계획을 세워 그에 따라 행동하며 필요시 반응하거나 계획을 수정한다. 예를 들어 생성적 에이전트는 아침에 식사가 타고 있으면 스토브를 끄고, 화장실이 차 있으면 밖에서 기다리며, 대화를 하고 싶은 에이전트를 만나면 잠시 대화를 나눈다. 생성적 에이전트로 구성된 사회는 새로운 관계가 형성되고 정보가 확산되며 에이전트들 간에 협력이 이루어지는 사회적 역학을 특징으로 한다.
  • 생성적 에이전트를 가능하게 하기 위한 에이전트 아키텍처를 설명해보자면, 이 아키텍처는 대형 언어 모델을 사용해 에이전트의 신뢰할 수 있는 행동을 새성하기 위해 관련된 기억을 저장하고, 종합하며, 적용한다. 우리의 아키텍처는 세 가지 주요 구성 요소로 이루어져 있다. 첫 번째는 기억 스트림(memory stream)으로 에이전트의 경험을 자연어로 기록하는 장기 기억 모듈이다. 관련성, 최근성, 중요성을 결합해 에이전트의 순간적 행동에 필요한 기록을 불러온다. 두번째는 반영(reflection)으로 시간이 지나면서 기억을 종합하여 에이전트가 자신과 다른 사람들에 대해 결론을 도출하고 행동을 보다 잘 안내할 수 있게 한다. 세 번째는 계획(planning) 으로 이 결론과 현재 환경을 바탕으로 고차원적인 행동 계획을 수립하고, 이를 다시 세부적인 행동으로 변환하여 실행하거나 반응한다. 이러한 반영과 계획은 기억 스트림에 다시 피드백되어 에이전트의 향후 행동에 영향을 미친다.
  • 이 아키텍처는 역할 놀이, 사회적 프로토타이핑, 가상 세계 및 게임과 같은 다양한 분야에 응용될 수 있는 가능성을 시사한다. 사횢거 역할 놀이 시나리오(예: 인터뷰 준비)에서는 사용자가 어려운 갈등 상황을 안전하게 연습할 수 있다. 사회적 플랫폼을 프로토타이핑할 때는 디자이너가 임시 페르소나를 넘어 시간이 흐르면서 펼쳐지는 동적이고 복잡한 상호작용을 반영할 수 있다. 이 논문에서는 The Sims(심즈)와 같은 게임에서 영감을 얻은 소규모 상호작용 사회를 만드는데 초점을 맞추고 있다.
  • 우리는 우리의 아키텍처를 ChatGPT 인 대형 언어 모델에 연겨해, 25명의 에이전트가 등장하는 게임 환경을 구현했다. 최종 사용자는 이 에이전트들을 관찰하고 상호작용할 수 있다. 예를 들어 최종 사용자나 개발자가 마을에서 발렌타인 데이 파티를 열고 싶다고 요청하면 전통적인 게임 환경에서는 수십 명의 캐릭터 행동을 수동으로 스크립트팅해야 한다. 하지만 생성적 에이전트에서는 한 명의 에이전트에게 파티를 열고 싶다고 말하는 것만으로 충분하다. 수많은 실패 가능서이 존재하지만 파티 기획자는 다른 에이전트들을 초대해야 하고, 참석자는 초대를 기억하고 초대를 기억하는 사람들은 실제로 나타날지 결정해야 하고 그 외에도 여러가지 우리의 에이전트는 성공적으로 파티 소식을 전하고 나타나기도 한다. 한 에이전트는 다른 에이전트를 데이트 신청을 통해 파티를 데려가려고 하기도 한다. 이 모든 것은 사용자가 제공한 단 하나의 제안으로 이루어진다.
  • 우리는 생성적 에이전트에 대해 두 가지 평가를 진행했다. 하나는 에이전트가 고립된 상태에서 신뢰할 수 있는 개별 행동을 만들어 내는지 테스트 하는 통제된 평가였고, 다른 하나는 에이전트들이 서로 상호작용하며 이틀 간의 게임 시간동안 그들의 안정성 및 자연발생적인 사회적 행동을 이해할 수 있는지에 대한 end-to-end 평가였다. 기술적 평가 에서는 에이전트의 지식과 행동을 자연어로 인터뷰하는 방법론을 사용해 에이전트가 캐릭터를 유지하고, 기억하고, 계획하고 ,반응하며 정확하게 반영하는지 테스트했다. 우리는 기억, 반영, 계획에 대한 에이전트의 접근을 제한하는 여러 가지 실험을 비교했다. 각 구성 요소가 인터뷰 작업에서 강력한 성과를 내기 위해 필수적임을 관찰했다. 기술적 평가와 엔드투 엔드 평가를 통해, 가장 큰 오류는 에이전트가 관련 기억을 검색하지 못하거나 기억을 과장하거나 언어 모델에서 너무 형식적인 언어나 행동을 물려받은 경우였다.
  • 결론적으로 이 논문에서는 아래를 다루게 된다.
  • 변화하는 경험과 환경에 동적으로 조건화된 신뢰 할 수 있는 가상 인간 행동 모델인 생성적 에이전트
  • 이러한 생성적 에이전트가 기어가고 검색하고 반영하면서, 다른 에이전트와 상호작용하고 동적으로 진화하는 상황을 통해 계획할 수 있게 만드는 새로운 아키텍처. 이 아키텍처는 대형 언어 모델의 강력한 프롬프트 기능을 활용하고, 장기적인 에이전트 일관성을 지원하며 동적으로 변화하는 기억을 관리하고 반복적으로 고차원적으로 반영할 수 있도록 보완한다.
  • 아키텍처 구성 요소의 잘못된 기억 검색에서 발생하는 문제들을 식별하는 통제된 평과와 엔드 투 엔드 평가를 통해서 중요성을 입증한다
  • 상호작용 시스템에서 생성적 에이전트의 윤리적 사회적 리스크에 대한 논의로 에이전트가 사용자와 파라소셜(parasocial) 관계를 형성하는 위험을 줄이도록 조정되어야 하고, 딥페이크나 개인에 맞춘 방식으로 효과적으로 설득하는(tailored persuasion) 방식으로 인한 위험을 줄이기 위해 기록되어야 하고, 디자인 과정에서 인간 이해관계자를 대체하기보다는 보완하는 방식으로 사용되어야 한다고 주장한다.
  • 이 섹션에서는 인간-AI 상호작용에 관한 이전 연구들을 살펴보고, 그 문헌 속에서 인간 행동의 신뢰할 수 있는 대리자를 구축하기 위한 우리의 연구 목표를 결정 짓는다. 이 목표는 한때 상호작용, 게임, 인공지능 분야에서 목표로 여겨졌지만 인간 행동의 복잡성으로 인해 여전히 도전적인 과제이다. 우리는 이 연구들을 종합하여, 대형 언어 모델이 단독으로는 충분하지 않지만, 적절한 아키텍처와 결합될 경우 신뢰할 수 있는 에이전트를 만드는 새로운 접근 방안을 열어준다는 점을 제시한다.

2.1 인간-AI 상호작용

  • 상호작용 기반의 인공지능 시스템은 사용자들의 능력을 확장할 수 있는 컴퓨팅 인공물에 인간의 통찰력을 결합하는 것을 목표로 한다. 오랫동안 연구자들은 사용자가 모델의 행동을 상호작용할 수 있는 방법을 탐구해 왔다. 예를 들어, Crayons는 비전문가 사용자가 분류기를 훈련할 수 있게 해주는 초기 상호작용형 기계 학습의 비전을 보여주었다. 이후의 연구들은 사용자가 예시나 시연을 통해 분류 목표를 시스템에 어떻게 전달할 수 있을지에 대해 명확히 하는 데 도움을 주었다. 최근의 발전은 이러한 탐구를 딥 러닝과 프롬프트 기반 작성으로 확장해가고 있다.
  • 한편, 인간-컴퓨터 상호작용에서 언어 기반 및 에이전트 기반 상호작용의 연구는 지속적으로 발전해 왔다. SHRDLU [103]와 ELIZA [102]와 같은 초기 연구는 컴퓨팅 시스템과 자연어로 상호작용하는 기회와 그에 따른 한계를 보여주었다. 연구가 진행되면서, 자율 에이전트가 위임과 상호작용을 위한 새로운 은유를 제공할 수 있다는 것이 나타났다. 그러나 인간과 에이전트 간의 위임 경계는 여전히 지속적인 논의의 대상이다.최근에는 이 기술이 안정적인 수준에 도달하여 에이전트가 대규모의 복잡한 온라인 사회적 환경에서 자연어를 통해 상호작용할 수 있게 되었다. 자연어 상호작용은 사진 수정과 코드 수정과 같은 분야에서 사용자의 능력을 향상시킬 수 있는 새로운 방식의 상호작용을 제공한다.
  • 우리는 이러한 연구의 흐름을 종합하여, 이제 우리는 인간 행동을 대리하는 에이전트를 이용해 상호작용 시스템을 만들고 이를 자연어로 상호작용할 수 있음을 보여준다. 이를 통해, 이 연구는 GOMS와 타자 입력 수준 모델(KLM)과 같은 인지 모델을 둘러싼 인간-컴퓨터 상호작용의 기초적인 질문, 프로토타이핑 도구, 유비쿼터스 컴퓨팅 애플리케이션을 다시 살펴볼 수 있는 기회를 열어준다.

2.2 신뢰할 수 있는 인간 행동 대리자

  • 이전 연구에서는 신뢰성, 즉 신뢰할 수 있는 에이전트를 설계하는 것을 중점으로 한 디자인 및 엔지니어링이 목표였다. 신뢰할 수 있는 에이전트는 자발적으로 결정을 내리고 행동하는 모습에서 가상의 생명력을 제공하고, 현실적인 모습을 연출하는 방식으로 디자인된다. 이는 디즈니 영화 속 캐릭터들과 유사하다. 이러한 에이전트는 우리가 살고 있는 것과 같은 열린 세계 환경을 채우고 인식할 수 있으며, 사용자나 다른 에이전트와의 사회적 상호작용에 기반한 emergent behaviors(자연 발생적 행동)를 통해 신뢰할 수 있는 인간 행동의 대리자가 되기 위해 노력한다. 역사적으로, 이러한 에이전트는 지능형 게임의 비 플레이어 캐릭터(NPC) 개발을 통해 발전해왔습니다. 가능하다면, 신뢰할 수 있는 행동을 가진 NPC를 만드는 것은 플레이어가 게임과 인터랙티브 픽션에서 emergent narratives(자연 발생적 이야기)와 에이전트와의 사회적 상호작용을 경험할 수 있게 하여, 게임 경험을 향상시킬 수 있다. 그러나 더 중요한 점은 게임 세계가 점점 더 현실적인 실제 환경을 재현하고 있다는 것이다. Laird와 van Lent는 2001년에 이러한 시뮬레이션 세계들이 신뢰할 수 있는 에이전트를 개발하기 위해 실제 로봇 공학을 구현하거나 시뮬레이션 환경을 처음부터 만드는 걱정 없이 에이전트의 인지 능력을 다듬을 수 있는 접근 가능한 실험 장소를 제공한다고 언급했다.
  • 지난 40년 동안 신뢰할 수 있는 에이전트를 만들기 위한 다양한 접근 방식들이 등장했다. 그러나 실제 구현에서는 종종 환경이나 에이전트 행동의 차원을 단순화하여 작업을 관리하기 쉽게 만들었다. 예를 들어, 추상적 계산 모델인 유한 상태 기계 (finite-state machines)나 행동 트리(behavior trees)와 같은 규칙 기반 접근 방식은 에이전트 행동을 사람이 직접 작성하는 강제적 접근 방식입다. 이러한 방식은 비교적 간단한 에이전트를 만드는 직관적인 방법을 제공하며, 오늘날에도 여전히 가장 널리 사용되는 방법이다. 이 방법은 Mass Effect나 The Sims 시리즈와 같은 게임에서 기본적인 사회적 상호작용을 처리할 수 있다. 그럼에도 불구하고, 열린 세계에서 가능한 모든 상호작용을 포괄적으로 처리할 수 있는 행동을 수작업으로 만드는 것은 불가능하다. 이는 결과적으로 에이전트의 행동이 상호작용의 결과를 완전히 반영하지 못하거나, 스크립트에 하드코딩되지 않은 새로운 절차를 수행할 수 없음을 의미한다. 반면, 강화 학습과 같은 학습 기반 접근 방식은 에이전트가 스스로 행동을 학습할 수 있게 해줌으로써 수작업으로 작성하는 문제를 극복했으며, AlphaStar(스타크래프트) 나 OpenAI Five (도타 2)와 같은 게임에서 최근 몇 년 간 인간을 초과하는 성과를 거두었다. 그러나 그들의 성공은 대부분 보상이 쉽게 정의될 수 있는 대결적인 게임에서 발생했으며, 열린 세계에서 신뢰할 수 있는 에이전트를 만드는 문제는 아직 해결되지 않았다.
  • 뉴엘(Newell)이 주도한 계산에서의 인지 아키텍처는 신뢰할 수 있는 에이전트를 지원할 수 있는 인지 기능의 종합적인 세트를 구축하는 인프라를 만들려고 했다. 이러한 아키텍처는 신뢰할 수 있는 에이전트의 초기 사례들을 만들었다. 예를 들어, Quakebot-SOAR 과 ICARUS는 1인칭 슈팅 게임에서 NPC를 생성했고 TacAir-SOAR [81]는 항공 전투 훈련 시뮬레이션에서 조종사를 생성했다. 이러한 에이전트가 사용한 아키텍처는 각기 다르다(Quakebot과 TacAir-SOAR는 SOAR를 사용했으며, ICARUS는 SOAR와 ACT-R에서 영감을 얻은 자체 변형을 사용했음). 하지만 이들은 모두 동일한 기본 원칙이 있었다. 이들은 단기 및 장기 기억을 유지하고, 이 기억들을 기호 구조로 채운 후, 환경을 인식하고 그에 맞는 수작업으로 작성된 행동 절차를 수행하는 perceive-plan-act 사이클을 통해 작동했다. 인지 아키텍처로 생성된 에이전트는 대부분, 아니면 모든, 열린 세계 컨텍스트에 대해 일반화할 수 있고, 당시에는 견고한 행동을 보여주었다. 그러나 이들의 행동 영역은 수작업으로 작성된 절차적 지식으로 제한되었고, 에이전트가 새로운 행동을 추구하도록 영감을 줄 수 있는 메커니즘을 제공하지 않았다. 따라서 이러한 에이전트는 주로 1인칭 슈팅 게임이나 블록 세계와 같은 열린 세계가 아닌 컨텍스트에서 사용되었다.
  • 오늘날, 원래의 정의대로 신뢰할 수 있는 에이전트를 만드는 것은 여전히 해결되지 않은 문제이다. 많은 이들이 현재의 접근 방식이 다소 번거롭고 제한적이지만, 기존의 게임 플레이와 상호작용을 지원하는 데 충분히 좋다고 주장하며 이를 넘어서려는 연구를 이어가고 있다. 우리의 주장은 대형 언어 모델이 이러한 문제를 재조명할 수 있는 기회를 제공한다고 생각하며, 우리가 효과적인 아키텍처를 설계하여 기억을 신뢰할 수 있는 행동으로 종합할 수 있다면, 이러한 방향으로 한 걸음을 내딛을 수 있다는 것이다. 본 논문은 그러한 아키텍처를 향한 첫걸음을 제시한다.

2.3 대형 언어 모델과 인간 행동

  • 생성형 에이전트는 대형 언어 모델을 활용하여 그들의 행동을 구현한다. observation(관찰)의 핵심은 대형 언어 모델이 훈련 데이터에서 다양한 인간 행동을 인코딩한다는 것이다. 좁게 정의된 맥락에서 프롬프트를 제공하면, 이 모델을 사용하여 신뢰할 수 있는 행동을 생성할 수 있다. 최근 연구들은 이러한 접근 방식의 효과를 입증했다. 예를 들어, 사회적 시뮬라크라는 대형 언어 모델을 사용해 새로운 사회 컴퓨팅 시스템에서 사용자를 생성하고, 그들의 emergent social dynamics(자연 발생적 사회적 역학)를 프로토타입했다. 이 접근 방식은 프롬프트 체인을 사용하여 시스템 내에서 등장하는 인물과 그들의 행동에 대한 간략한 자연어 설명을 생성하는 방식이었다. 또 다른 실험적 연구들은 기존의 사회 과학 연구, 정치적 설문 조사를 재현하거나 합성 데이터를 생성한 사례들이 있다. 대형 언어 모델은 사용자와 상호작용하는 인간 행동을 생성하는 데에도 사용된다. 예를 들어, 게임에서는 이러한 모델이 인터랙티브 픽션이나 텍스트 어드벤처 게임을 만드는 데 활용된다. 이 모델은 행동 시퀀스를 생성하고 분해하는 능력을 가지고 있기 때문에 로봇 작업 계획에도 사용된다. 예를 들어, '병을 집어라'는 작업을 제시하면 모델은 그 작업을 '병이 놓인 테이블로 가서 집는' 등의 작은 행동 시퀀스로 나누어 작업을 처리하게 된다.
  • 우리는 앞서 요약된 작업을 바탕으로, 대형 언어 모델이 신뢰할 수 있는 에이전트를 만드는 데 중요한 요소가 될 수 있다고 주장한다. 기존 연구는 주로 몇 번의 프롬프트만을 사용하는 첫 번째 단계의 템플릿을 의존하고 있다. 또는 사고의 흐름을 담은 프롬프트를 사용한다. 이러한 템플릿은 에이전트의 현재 환경만을 조건으로 하는 행동을 생성하는 데 효과적이다 (예: '트롤이 주어진 게시물에 어떻게 반응할지', '로봇이 문이 있는 방에 들어가기 위해 어떤 행동을 취해야 할지'). 그러나 신뢰할 수 있는 에이전트는 현재 환경뿐만 아니라 방대한 양의 과거 경험을 기반으로 조건을 설정해야 하는데, 이는 첫 번째 단계의 프롬프트 방식으로는 적합하지 않거나, 현재의 모델의 제한된 맥락 창(window) 때문에 불가능하다. 최근 연구들은 대형 언어 모델에 정적 지식 베이스(static knowledge base)와 정보 검색 방식(information retrieval scheme)을 추가하거나, 간단한 요약 방식을 더하는 방식으로 첫 번째 단계 프롬프트를 넘어서는 시도를 해왔다. 본 논문은 이러한 아이디어를 확장하여, 과거 경험이 각 시간 단계에서 동적으로 업데이트되고 에이전트의 현재 맥락과 계획과 결합되는 에이전트 아키텍처를 설계하는 방법을 제시한다. 이 경험은 서로 강화될 수도 상충될 수도 있다.

3. GENERATIVE AGENT BEHAVIOR AND INTERACTION (생성형 에이전트의 행동과 상호작용)

  • 생성형 에이전트의 가능성을 보여주기 위해, 우리는 이를 The Sims [7]을 연상시키는 간단한 샌드박스 세계의 캐릭터로 구현한다. 이 간단한 형태의 2D 그래픽으로 만든 사용자 캐릭터 기반 샌드박스 게임 세계인 Smallville은 작은 마을 환경을 떠올리게 한다. 이 섹션에서는 Smallville에서 생성형 에이전트와의 상호작용을 통해 제공되는 기능을 설명하고, 에이전트들이 그 안에서 어떻게 행동하는지를 다룬다. 이후 섹션 4에서는 이러한 기능과 상호작용을 지원하는 생성형 에이전트 아키텍처를 소개하고, 섹션 5에서는 샌드박스 환경의 구현과 에이전트가 샌드박스 세계의 엔진과 어떻게 상호작용하는지를 설명한다.

3.1 Agent Avatar andCommunication (에이전트 아바타와 커뮤니케이션)

  • Smallville에는 25명의 독특한 에이전트가 거주한다. 각 에이전트는 간단한 간단한 형태의 2D 그래픽으로 만든 사용자 캐릭터로 표현된다. 우리는 각 에이전트의 직업과 다른 에이전트와의 관계를 포함한 정체성을 묘사하는 자연어 설명 문단을 작성하여 초기 기억(seed memory)으로 설정했다. 예를 들어, John Lin의 설명은 다음과 같다.

    John Lin은 Willow Market and Pharmacy의 약국 주인으로 사람들을 돕는 것을 좋아한다. 그는 고객들이 약을 구하는 과정이 더 쉬워지도록 항상 방법을 찾고 있다. John Lin은 아내 Mei Lin과 함께 살고 있으며, Mei Lin은 대학 교수이고, 아들 Eddy Lin은 음악 이론을 공부하는 학생이다. John Lin은 가족을 매우 사랑한다. John Lin은 이웃인 Sam Moore와 Jennifer Moore 부부를 몇 년간 알고 지내왔다. John Lin은 Sam Moore를 친절하고 좋은 사람이라고 생각한다. John Lin은 이웃인 Yuriko Yamamoto를 잘 알고 있으며, Tamara Taylor와 Carmen Ortiz는 알고 있지만 한 번도 만나본 적이 없다. John Lin과 Tom Moreno는 The Willows Market and Pharmacy에서 동료이다. John Lin과 Tom Moreno는 친구이며, 종종 지역 정치에 대해 이야기한다. John Lin은 Moreno 가족(남편 Tom Moreno와 아내 Jane Moreno)을 어느 정도 잘 알고 있다.

  • 각 세미콜론으로 구분된 문장은 시뮬레이션이 시작될 때 에이전트의 초기 기억으로 입력됩니다.

3.1.1 에이전트 간 커뮤니케이션( Inter-Agent Communication)

  • 에이전트들은 행동을 통해 세계와 상호작용하고, 자연어를 통해 서로 소통한다. 샌드박스 엔진의 각 시간 단위마다 에이전트들은 현재 행동을 설명하는 자연어 문장을 출력한다. 예를 들어, "Isabella Rodriguez는 일기를 쓰고 있습니다", "Isabella Rodriguez는 이메일을 확인하고 있습니다", "Isabella Rodriguez는 가족과 전화로 이야기를 나누고 있습니다", 또는 "Isabella Rodriguez는 잠자리에 들 준비를 하고 있습니다" 같은 문장이다. 이 문장은 샌드박스 세계에 영향을 미치는 구체적인 움직임으로 변환된다. 이 행동은 샌드박스 인터페이스에서 이모지 세트로 표시되어, 위에서 내려다본 시점에서 행동을 추상적으로 나타낸다. 예를 들어, "Isabella Rodriguez는 일기를 쓰고 있습니다"는 📝로 표시되고, "Isabella Rodriguez는 이메일을 확인하고 있습니다"는 📧로 표시됩니다. 행동에 대한 완전한 자연어 설명은 에이전트의 아바타를 클릭하면 확인할 수 있다.
  • 에이전트들은 서로 완전한 자연어로 소통합니다. 그들은 주변에 있는 다른 에이전트를 인식하고 있으며, 생성형 에이전트 아키텍처는 그들이 지나가는지, 아니면 대화를 시작할지를 결정한다. 예를 들어, Isabella Rodriguez와 Tom Moreno가 다가오는 선거에 대해 대화하는 장면을 살펴보자면:

    Isabella: "저는 아직 결정을 내리지 않았지만, Sam Moore와 선거에 대해 이야기를 나누고 있었어요. 그에 대해 어떻게 생각해요?"
    Tom: "솔직히 말하자면, Sam Moore는 마음에 안 들어요. 그는 지역 사회와 동떨어져 있고, 우리의 이익을 대변하지 않는다고 생각해요."

3.1.2 사용자 제어 (User Controls)

  • 사용자는 자연어로 에이전트와 소통하며, 에이전트가 자신을 어떤 페르소나로 인식해야 하는지를 지정할 수 있다. 예를 들어, 사용자가 자신을 "기자"라고 지정하고 다가오는 선거에 대해 "누가 출마하고 있나요?"라고 물으면, John 에이전트는 이렇게 대답한다:

    John: "저와 제 친구인 Yuriko, Tom은 다가오는 선거와 후보인 Sam Moore에 대해 이야기하고 있었습니다. 우리는 모두 그를 지지하기로 했습니다. 왜냐하면 그의 공약이 마음에 들거든요."

  • 사용자가 에이전트에게 직접 명령을 내리려면, 에이전트의 "내면의 목소리"라는 페르소나를 채택한다. 이렇게 하면 에이전트는 그 명령을 지시로 받아들이는 경향이 높아진다. 예를 들어, 사용자가 "당신은 다가오는 선거에서 Sam과 경쟁할 것입니다"라고 John의 내면의 목소리로 말하면, John은 선거에 출마하기로 결심하고 그 사실을 아내와 아들에게 알린다.

3.2 환경 상호작용(Environmental Interaction)

  • Smallville는 작은 마을에서 흔히 볼 수 있는 다양한 시설을 특징으로 한다. 여기에는 카페, 바, 공원, 학교, 기숙사, 주택, 상점 등이 포함된다. 또한 각 공간을 기능적으로 만드는 하위 영역과 객체도 정의되어 있다. 예를 들어, 집 안에는 주방과 가스레인지 같은 물건들이 있다(그림 2 참조). 에이전트들이 주로 생활하는 모든 공간에는 침대, 책상, 옷장, 선반, 그리고 화장실과 주방이 마련되어 있다.
  • 에이전트들은 Smallville 내에서 간단한 비디오 게임처럼 이동한다. 건물에 들어가거나 나가며, 맵을 탐색하고 다른 에이전트에게 접근한다. 에이전트의 이동은 생성형 에이전트 아키텍처와 샌드박스 게임 엔진에 의해 제어된다. 모델이 에이전트가 특정 장소로 이동해야 한다고 판단하면, 우리는 Smallville 환경 내에서 해당 목적지까지의 경로를 계산하고 에이전트가 이동을 시작한다. 또한, 사용자는 Smallville의 샌드박스 세계에 에이전트로서 참여할 수 있다. 사용자가 제어하는 에이전트는 이미 세계에 존재하는 에이전트일 수도 있고, Smallville에서 전혀 역사나 관계가 없는 외부 방문객일 수도 있다. Smallville의 주민들은 사용자 제어 에이전트를 서로 대하는 것과 동일하게 대하며, 그 존재를 인식하고, 상호작용을 시작하며, 그 행동을 기억하고 의견을 형성한다.
  • 사용자와 에이전트는 이 세계 내 객체의 상태를 바꿀 수 있다. 이는 The Sims와 같은 샌드박스 게임에서처럼 가능하다. 예를 들어, 에이전트가 자고 있을 때 침대는 에이전트로 할당되어 있고, 아침을 만들기 위해 에이전트가 재료를 모두 사용하면 냉장고는 비어있게 된다. 또한, 사용자는 자연어로 에이전트 주변 객체들의 상태를 바꿔 Smallville에서 에이전트의 환경을 재구성할 수 있다. 예를 들어, Isabella가 아침을 만들고 있을 때, 사용자는 시스템에 명령을 입력하여 주방의 가스레인지 상태를 “켜져 있음”에서 “불타고 있음”으로 변경할 수 있다. 명령은 다음과 같이 입력될 수 있다:

"Isabella의 아파트: 부엌: 가스레인지가 타고 있습니다.”

  • Isabella는 다음 순간에 이를 감지하고 가스레인지를 끄며 아침을 다시 만들게 된다. 마찬가지로, 사용자가 Isabella가 욕실에 들어갈 때 샤워기의 상태를 “물새고 있음”으로 설정하면, Isabella는 거실에서 도구를 가져와 누수를 수리하려고 시도한다.

3.3 예시 : 하루 일과 (Example “Day in the Life”)

  • 단 한 문장의 설명으로 시작한 생성형 에이전트는 그들의 하루를 계획하기 시작한다. 샌드박스 세계에서 시간이 흐르면서, 이 에이전트들은 서로 상호작용하고, 세상과 관계를 맺으며 기억을 쌓고, 공동 활동을 조정함으로써 그들의 행동이 점차 발전한다.

  • 우리는 John Lin 에이전트의 하루를 추적하여 생성형 에이전트의 행동을 시연한다 (그림 3 참조). Lin 가족에서, John은 오전 7시에 가장 먼저 일어난다. 그는 이를 닦고, 샤워를 하고, 옷을 입고, 아침을 먹고, 거실의 식탁에서 뉴스를 확인합니다. 오전 8시, Eddy가 뒤따라 일어나 수업을 준비합니다. 그는 John이 집을 나가려는 순간, 그와 마주칩니다:

    John: "좋은 아침, Eddy. 잘 잤어?"
    Eddy: "좋은 아침, 아빠. 응, 잘 잤어."
    John: "잘 자서 다행이다. 오늘은 뭐 할 거야?"
    Eddy: "새로운 음악 작곡을 하고 있어. 수업 과제인데 이번 주가 마감일이라 끝내려고 노력 중이야. 그런데 정말 재미있어서 즐기고 있어!"
    John: "멋지다!"

  • Eddy가 집을 떠난 후, Mei가 일어나 John과 합류한다. Mei는 아들에 대해 묻고, John은 그들과 나눈 대화를 기억하며 말한다:

Mei: "Eddy는 벌써 학교 갔어?"
John: "응, 방금 갔어. 수업 과제로 음악 작곡을 하고 있어."
Mei: "오, 그거 정말 멋지네! 좀 말해줘."
John: "그가 정말 즐기고 있는 것 같아! 재미있다고 하더라고."
Mei: "정말 좋다! 정말 자랑스럽네."

  • 대화를 마친 후, Mei와 John은 각자의 일과를 준비한다. Mei는 연구 논문을 작성하며 수업을 진행하고, John은 오전 9시까지 Willow Market and Pharmacy에서 약국 카운터를 연다.

3.4 자연발생적인 사회 행동(Emergent Social Behaviors)

  • Smallville의 생성형 에이전트들은 서로 상호작용하면서 정보를 교환하고, 새로운 관계를 형성하며, 공동 활동을 조정한다. 이러한 사회적 행동은 사전 프로그래밍된 것이 아니라 자연스럽게 발생하는 행동으로, 이전의 연구를 확장한 형태이다. 이 섹션에서는 그러한 사회적 행동들이 어떻게 발생하는지를 살펴본다.

3.4.1 정보 확산 (Information Diffusion)

  • 에이전트들이 서로를 인식하고 대화를 나누면, 정보는 한 에이전트에서 다른 에이전트로 확산될 수 있다. 예를 들어, Sam과 Tom이 식료품 가게에서 대화하는 동안, Sam은 자신이 지방 선거에서 시장 후보로 출마한다고 이야기한다.

Sam: "안녕, Tom, 어떻게 지내?"
Tom: "좋아, 고마워. 뭐야?"
Sam: "사실 얘기하고 싶은 게 있어. 다가오는 지방 선거에서 시장에 출마하려고 해."
Tom: "진짜? 대단한 소식이네! 왜 출마하려고 해?"
Sam: "나는 몇 년 동안 지역 정치에 참여해 왔고, 우리 커뮤니티에 변화를 일으킬 수 있을 것 같아. 게다가 새로운 아이디어와 관점을 제시하고 싶어서."

그날 후에 Sam이 떠난 후, Tom과 John은 또 다른 출처에서 이 소식을 들은 후 Sam의 출마에 대해 이야기한다.

John: "Sam Moore가 지방 선거에서 시장에 출마한다고 들었어. 그가 이길 가능성이 높다고 생각해?"
Tom: "응, 가능성이 높다고 생각해. 그는 지역 사회에서 열심히 활동해 왔고, 많은 지지를 받을 것 같아. 너는 어떻게 생각해?"
John: "그가 출마하는 거 정말 좋은 일인 것 같아. 선거 결과가 어떻게 될지 궁금하네."

이렇게 Sam의 출마는 점차 마을의 화제가 되며, 일부는 그를 지지하고, 다른 일부는 아직 결정을 내리지 않은 채로 남게 된다.

3.4.2 관계 기억 (Relationship Memory)

  • Smallville의 에이전트들은 시간이 지남에 따라 새로운 관계를 형성하고, 다른 에이전트들과의 상호작용을 기억한다. 예를 들어, 처음에 Sam은 Latoya Williams를 알지 못한다. 하지만 Johnson Park에서 산책 중에 Sam은 Latoya를 만나게 되고, 그녀는 자신의 사진 프로젝트에 대해 말한다:

    Latoya: "저는 지금 제가 작업 중인 프로젝트를 위한 사진을 찍으러 왔어요."

    이후에 다시 만나게 된 Sam은 Latoya와의 상호작용을 기억하며, 다음과 같이 물어본다:

    Sam: "안녕, Latoya. 프로젝트 잘 진행되고 있어?"
    Latoya: "안녕, Sam. 네, 잘 되고 있어요!"

    이렇게, 에이전트들은 서로의 과거의 만남과 대화를 기억하며 관계를 발전시켜 나간다.

    3.4.3 조정 (Coordination)

  • 생성형 에이전트들은 서로 협력하여 활동을 조정한다. 예를 들어, Isabella Rodriguez는 2월 14일 발렌타인 데이 파티를 오후 5시부터 7시까지 개최하려는 계획을 가지고 있다. 이 초기 의도를 바탕으로, 그녀는 친구들과 고객들을 카페나 다른 장소에서 만나면 초대한다. 그런 후, 13일 오후, Isabella는 카페를 파티를 위해 장식하는 데 시간을 보낸다.

  • 자주 카페에 오는 고객이자 친한 친구인 Maria가 카페에 오게 되자, Isabella는 파티 장식에 도움을 요청하고 Maria는 기꺼이 응한다. Maria의 캐릭터 설명에는 Klaus를 짝사랑을 한다고 되어 있다. 그날 밤, Maria는 Klaus를 파티에 초대하며, Klaus는 기쁘게 이를 수락한다.

    **그림 4**: 시뮬레이션이 시작될 때, 하나의 에이전트가 발렌타인 데이 파티를 조직하려는 의도로 초기화된다. 그 이후 여러 가지 실패 지점이 있을 수 있지만(에이전트가 그 의도에 따라 행동하지 않거나, 다른 사람에게 말하는 것을 잊거나, 참석하는 것을 잊을 수 있는 것) 실제로 발렌타인 데이 파티는 발생하며, 여러 에이전트들이 모여 상호작용을 한다.

  • 발렌타인 데이인 2월 14일 오후 5시, Klaus와 Maria를 포함한 5명의 에이전트가 Hobbs Cafe에 도착하고, 모두 즐겁게 파티를 시작한다 (그림 4 참조). 이 시나리오에서, 최종 사용자는 Isabella의 초기 의도(파티를 열겠다는 의도)와 Maria의 짝사랑 관계만 설정했으며, 나머지 사회적 행동들—소문을 퍼뜨리기, 장식하기, 서로 초대하기, 파티에 도착하기, 파티에서 상호작용하기—는 에이전트 아키텍처에 의해 자동으로 시작되었다.

4. GENERATIVE AGENT ARCHITEFCTURE (생성형 에이전트 아키텍처)

  • 생성적 에이전트는 열린 세계에서 행동을 위한 프레임워크를 제공하는 것을 목표로 한다. 이는 다른 에이전트와 상호작용하고 환경의 변화에 반응할 수 있는 에이전트를 의미한다. 생성적 에이전트는 현재 환경과 과거의 경험을 입력으로 받아 행동을 출력으로 생성한다. 이 행동의 기저에는 대형 언어 모델과 해당 언어 모델의 출력을 조건 짓기 위해 관련 정보를 합성하고 검색하는 메커니즘을 결합한 새로운 에이전트 아키텍처가 있다. 이러한 메커니즘이 없으면 대형 언어 모델은 행동을 출력할 수 있지만, 결과적인 에이전트는 에이전트의 과거 경험에 기반해 반응하지 않거나, 중요한 추론을 하지 않거나, 장기적인 일관성을 유지하지 못할 수 있다. 오늘날 GPT-4와 같은 가장 성능이 좋은 모델조차도 장기 계획과 일관성 유지에 어려움이 있다. 생성적 에이전트는 많은 사건과 기억을 생성하여 이를 유지해야 하므로, 우리의 아키텍처에서 핵심적인 도전 과제는 에이전트의 기억에서 가장 관련성 높은 부분을 필요할 때 적절히 검색하고 합성하는 것이다.
  • 우리 아키텍처의 중심에는 기억 스트림(memory stream)이 있다. 이는 에이전트의 경험에 대한 포괄적인 기록을 유지하는 데이터베이스이다. 기억 스트림에서 기록은 에이전트의 행동을 계획하고 환경에 적절히 반응하기 위해 관련된 것을 검색한다. 이 기록은 점차적으로 더 높은 수준의 반영으로 합성되어 행동을 이끈다. 아키텍처 내 모든 것은 자연어 설명으로 기록되고 추론되어, 대형 언어 모델을 활용할 수 있도록 한다.
  • 현재 우리의 구현은 ChatGPT의 gpt3.5-turbo 버전을 사용하고 있다. 우리는 생성적 에이전트의 아키텍처 기본 요소인 기억(memory), 계획(planning), 반영(reflection)은 언어 모델의 발전에 따라 크게 변화하지 않을 것이라고 예상한다. 새로운 언어 모델(예: GPT-4)은 생성적 에이전트를 뒷받침하는 프롬프트의 표현력과 성능을 계속 확장할 것이다. 그러나 해당 논문 작성 시점에서는 GPT-4의 API가 초대제(invitation-only)로만 제공되므로, 우리의 에이전트는 ChatGPT를 사용하고 있다.

4.1 기억과 검색 (Memory and Retrieval)

  • 도전 과제(Challenge) : 인간 행동을 시뮬레이션할 수 있는 생성적 에이전트를 만드는 것은, 프롬프트에 기술되어야 할 경험의 집합보다 훨씬 더 큰 경험을 추론해야 한다. 왜냐하면 전체 기억 스트림은 모델을 방해할 수 있고, 현재로서는 제한된 컨텍스트 창에 들어가지 않기 때문이다. 예를 들어, "요즘 무엇에 열정을 느끼고 있나요?"라는 질문에 답하는 이사벨라 에이전트를 고려해 보자. 이사벨라의 경험을 언어 모델의 제한된 컨텍스트 창에 맞추기 위해 요약하면, 이사벨라는 이벤트와 프로젝트 협업, 카페의 청결과 정리에 대해 이야기하는 등 정보가 부족한 답변을 하게 된다. 대신에 요약하는 대신, 아래에서 설명하는 기억 스트림은 관련된 기억을 떠오르게 하여, 이사벨라가 사람들을 환영하고 포함시키는 것에 대한 열정, 이벤트를 계획하고 사람들이 즐길 수 있는 분위기를 만드는 것, 예를 들어 발렌타인 데이 파티에 대한 열정을 언급하는 보다 구체적이고 유익한 답변을 제공한다.
  • 접근법(Approach) : 기억 스트림은 에이전트의 경험에 대한 포괄적인 기록을 유지한다. 이는 자연어 설명, 생성 타임스탬프, 가장 최근의 접근 타임스탬프를 포함하는 기억 객체들의 목록이다. 기억 스트림의 가장 기본적인 요소는 관찰(observation)입니다. 관찰은 에이전트가 직접 인지한 사건을 의미한다. 일반적인 관찰에는 에이전트 자신이 수행한 행동이나, 다른 에이전트 또는 비에이전트 객체가 수행하는 행동이 포함된다. 예를 들어, 커피숍에서 일하는 이사벨라 로드리게스는 시간이 지남에 따라 다음과 같은 관찰을 축적할 수 있습니다: (1) 이사벨라 로드리게스가 페이스트리를 진열하고 있다, (2) 마리아 로페즈가 커피를 마시며 화학 시험 공부를 하고 있다, (3) 이사벨라 로드리게스와 마리아 로페즈가 홉스 카페에서 발렌타인 데이 파티를 계획하는 대화를 나누고 있다, (4) 냉장고가 비어 있다.
  • 우리의 아키텍처는 에이전트의 현재 상황을 입력으로 받아 기억 스트림의 하위 집합을 검색하여 언어 모델에 전달하는 검색 기능을 구현한다. 이 검색 기능은 에이전트가 행동을 결정할 때 고려해야 할 중요한 사항에 따라 여러 가지 방식으로 구현될 수 있다.
  • 우리의 맥락에서, 우리는 효과적인 결과를 생성하기 위해 함께 작용하는 세 가지 주요 구성 요소에 집중합니다.
  • 최근성(Recency) 최근에 액세스된 기억 객체에 더 높은 점수를 부여하여, 얼마 전이나 오늘 아침에 일어난 사건들이 에이전트의 주의 범위 내에 남도록 한다. 우리의 구현에서는 최근성을 기억이 마지막으로 검색된 이후 샌드박스 게임 시간 수에 대해 지수적으로 감소하는 함수로 처리한다. 감소 계수는 0.995이다.
  • **중요성(Importance)**은 평범한 기억과 핵심 기억을 구별한다. 중요성 점수는 에이전트가 중요하다고 판단하는 기억 객체에 더 높은 점수를 부여한다. 예를 들어, "자기 방에서 아침을 먹는다"는 평범한 사건은 낮은 중요성 점수를 얻고, "연인과의 이별"은 높은 점수를 받는다. 중요성 점수의 구현에는 여러 가지 방법이 있을 수 있다. 우리는 언어 모델에게 정수 점수를 출력하도록 직접 요청하는 방법이 효과적임을 알게됐다. 전체 프롬프트는 다음과 같다:

    "1에서 10까지의 척도로, 1은 순전히 평범한 (예: 이를 닦기, 침대 정리) 사건을, 10은 매우 감동적인 (예: 이별, 대학 합격) 사건을 의미합니다. 다음 기억의 감동 정도를 평가하세요."
    기억: The Willows Market and Pharmacy에서 장보기
    평가: <입력>

    이 프롬프트는 "방 청소하기"에 대해 2를, "짝사랑에게 데이트 신청하기"에 대해 8을 반환한다. 중요성 점수는 기억 객체가 생성될 때 산출된다.
  • **관련성(Relevance)**은 현재 상황과 관련된 기억 객체에 더 높은 점수를 부여힌다. 무엇이 관련성이 있는지는 "무엇과 관련이 있나요?"라는 질문에 대한 답에 달려 있다. 따라서 우리는 관련성을 쿼리 기억에 대해 조건을 설정한다. 예를 들어, 쿼리가 "학생이 화학 시험을 무엇을 공부할지 동료와 이야기하고 있다"일 경우, 아침 식사에 관한 기억은 관련성이 낮고, 교사와 학교 과제에 관한 기억은 높은 관련성을 가진다. 우리의 구현에서는 언어 모델을 사용하여 각 기억의 텍스트 설명에 대한 임베딩 벡터를 생성한다. 그 후, 우리는 메모리의 임베딩 벡터와 쿼리 임베딩 벡터 간의 코사인 유사도를 계산하여 관련성을 평가한다.
  • 최종 검색 점수를 계산하기 위해, 우리는 최근성, 관련성, 중요성 점수를 [0, 1] 범위로 정규화한다. 이를 위해 최소-최대 정규화(min-max scaling)를 사용한다. 검색 기능은 세 가지 요소의 가중합으로 모든 기억에 점수를 매긴다. score=αrecencyrecency+αimportanceimportance+αrelevancerelevancscore=αrecency⋅recency+αimportance⋅importance+αrelevance⋅relevanc
  • 우리의 구현에서는 모든 α값을 1로 설정한다. 언어 모델의 컨텍스트 창에 맞는 상위 순위 기억들이 프롬프트에 포함된다.

4.2 반영(Reflection)

  • 도전 과제(Challenge) : 생성적 에이전트는 원시 관찰 기억만 가지고 있을 때 일반화하거나 추론을 하는 데 어려움을 겪는다. 예를 들어, 사용자가 Klaus Mueller에게 "만약 당신이 아는 사람 중 한 명과 한 시간 동안 시간을 보내야 한다면, 누구를 선택할 건가요?"라고 물었을 때, 에이전트는 단순히 Klaus가 가장 자주 상호작용한 사람인 Wolfgang을 선택한다. 그러나 Wolfgang과 Klaus는 지나치게 스쳐 지나가는 정도의 만남만 있고 깊은 상호작용은 없다. 더 바람직한 답변은 에이전트가 Klaus가 연구 프로젝트에 수 시간을 보낸 기억을 통해 일반화하여, Klaus가 연구에 열정을 갖고 있다는 고차원적인 반영을 생성하고, 마리아도 자신만의 연구에 노력하고 있다는 사실을 인식하여, 그들이 공통의 관심사를 공유한다는 결론에 이를 수 있는 것이다. 아래 접근법을 따르면, Klaus는 Wolfgang 대신 Maria를 선택하게 된다.
  • 접근법(Approach): 우리는 "반영(reflection)"이라는 두 번째 유형의 기억을 도입한다. 반영은 에이전트가 생성하는 고차원적이고 추상적인 생각이다. 반영도 일종의 기억이므로 검색 시 다른 관찰과 함께 포함된다. 반영은 주기적으로 생성되며, 우리의 구현에서는 에이전트가 인지한 최신 사건들의 중요성 점수 합이 일정 기준(우리 구현에서는 150)을 초과할 때마다 반영을 생성한다. 실제로 우리의 에이전트는 하루에 약 두세 번 반영을 생성한다.
  • 반영의 첫 번째 단계는 에이전트가 무엇을 반영할지 결정하는 것이다. 이는 에이전트의 최근 경험을 바탕으로 질문을 찾아내는 과정이다. 우리는 에이전트의 기억 스트림에서 가장 최근의 100개 기록을 기반으로 대형 언어 모델에게 다음과 같은 질문을 던진다: "Klaus Mueller는 젠트리피케이션에 관한 책을 읽고 있다", "Klaus Mueller는 자신의 연구 프로젝트에 대해 사서와 대화하고 있다", "도서관 책상은 현재 비어 있다" 등의 기록을 제공한 뒤, 모델에게 "위의 정보만으로, 이들에 대해 답할 수 있는 가장 중요한 고차원적인 질문 3개는 무엇인가요?"라고 묻는다. 모델의 응답은 예를 들어, "Klaus Mueller가 열정을 갖고 있는 주제는 무엇인가요?" 또는 "Klaus Mueller와 Maria Lopez의 관계는 무엇인가요?"와 같은 후보 질문들을 생성한다. 우리는 이 생성된 질문들을 검색 쿼리로 사용하여 관련된 기억(다른 반영 포함)을 수집한다. 그 후, 언어 모델에게 통찰을 추출하고 해당 통찰을 뒷받침하는 특정 기록들을 인용하도록 요청한다.
  • 전체 프롬프트는 다음과 같다:

    Klaus Mueller에 대한 기록
    Klaus Mueller는 연구 논문을 쓰고 있다
    Klaus Mueller는 젠트리피케이션에 관한 책을 읽는 것을 즐긴다
    Klaus Mueller는 Ayesha Khan과 운동에 대해 대화하고 있다 [...]
    "위의 기록들로부터 얻을 수 있는 5개의 고차원적인 통찰을 제시하세요. (예시 형식: 통찰(1, 5, 3에 의해))"

  • 이 과정은 "Klaus Mueller는 젠트리피케이션(gentrification)에 대한 연구에 헌신적이다(1, 2, 8, 15에 의해)"와 같은 문장을 생성한다. 우리는 이 문장을 반영으로 기억 스트림에 저장하고, 해당 통찰을 뒷받침한 기억 객체들에 대한 포인터를 함께 저장한다.
  • 반영은 에이전트가 자신의 관찰뿐만 아니라 다른 반영에 대해서도 반영할 수 있도록 한다. 예를 들어, 위에서 언급한 두 번째 기록은 Klaus가 이전에 가졌던 반영이지 환경에서의 관찰이 아니다. 그 결과, 에이전트는 반영 트리를 생성한다. 트리의 리프 노드는 기본적인 관찰을 나타내고, 비리프 노드는 트리의 위쪽으로 갈수록 점점 더 추상적이고 고차원적인 사고를 나타낸다.

4.3 계획 수립과 반응 (Planning and Reacting)

  • 목표(Challeng): 대형 언어 모델은 상황 정보를 바탕으로 그럴듯한 행동을 생성할 수 있지만 에이전트는 일련의 행동이 일관되고 믿을 수 있도록 더 긴 시간 동안 계획을 세워야 한다. 예를 들어, 우리가 Klaus의 배경을 언급하고 현재 시간을 설명한 후, 그가 이 순간에 취해야 할 행동을 묻는다면, Klaus는 정오에 점심을 먹고, 다시 12시 30분과 1시에 점심을 먹을 것이다. 순간적인 행동을 최적화하면 시간이 지남에 따라 신뢰할 수 있는 행동은 없어진다. 이 문제를 해결하려면 계획 수립이 필수적이다. 아래에 설명된 접근 방식을 통해 Klaus의 오후 계획은 12시에 Hobbs Cafe에서 점심을 먹으며 책을 읽고, 1시에 학교 도서관에서 연구 논문을 작성하며, 3시에 공원에서 산책을 한다.
  • 접근법(Approach): 계획은 에이전트의 향후 행동 순서를 설명하며, 에이전트의 행동을 시간이 지남에 따라 일관되게 유지하는 데 도움을 준다. 계획에는 장소, 시작 시간, 지속 시간이 포함된다. 예를 들어, 연구에 몰두하고 있으며 다가오는 마감일이 있는 Klaus Mueller는 하루를 자신의 책상에서 연구 논문을 초안 작성하는 데 보낼 수 있다. 계획의 항목 예시는 다음과 같다: "2023년 2월 12일 오전 9시부터 180분 동안 Oak Hill College 기숙사: Klaus Mueller의 방: 책상에서 연구 논문을 위한 읽기 및 필기". 반영처럼, 계획은 기억 스트림에 저장되며 검색 과정에 포함된다. 이를 통해 에이전트는 관찰, 반영, 계획을 모두 함께 고려하여 어떻게 행동할지 결정할 수 있다. 에이전트는 필요에 따라 계획을 중간에 변경할 수도 있다.
  • 예술가 에이전트가 약국 카운터에서 4시간 동안 움직이지 않고 앉아 그림을 그리는 계획을 세우는 것은 비현실적이고 흥미롭지 않다. 더 바람직한 계획은 에이전트가 재료를 모으고, 그림 물감을 섞고, 휴식을 취하며, 4시간 동안 작업을 마친 후 정리하는 것이다. 이러한 계획을 생성하기 위해, 우리의 접근 방식은 위에서 아래로 시작하여 점차 더 세부적인 내용을 생성한다. 첫 번째 단계는 하루의 일정을 대략적으로 개요화하는 계획을 만드는 것이다. 초기 계획을 세우기 위해, 우리는 에이전트의 요약 설명 (예: 이름, 특성, 최근 경험 요약)과 그들의 이전 하루에 대한 요약을 언어 모델에 제공한다. 아래는 그 전체적인 예시 프롬프트로, 언어 모델이 완료할 수 있도록 맨 아래 부분이 미완성으로 남겨져 있다:

    이름: Eddy Lin (나이: 19)
    선천적 특성: 친절하고, 외향적, 친화적인 성격
    Eddy Lin은 Oak Hill College에서 음악 이론과 작곡을 전공하는 학생이다. 그는 다양한 음악 스타일을 탐구하는 것을 좋아하며, 지식을 확장할 방법을 항상 찾고 있다. Eddy Lin은 현재 대학 수업을 위해 작곡 프로젝트를 진행 중이다. 그는 음악 이론을 더 배우기 위해 수업을 듣고 있다. Eddy Lin은 자신이 작업 중인 새로운 작곡에 대해 기대가 크지만, 앞으로 더 많은 시간을 할애하여 작업할 계획이다. 2023년 2월 12일 화요일, Eddy는 1) 오전 7시에 일어나 아침 루틴을 마친 후, [...] 6) 오후 10시 경에 잠자리에 들었다.
    오늘은 2023년 2월 13일 수요일이다. Eddy의 오늘 계획은 대략적으로 다음과 같다: 1)

  • 이렇게 하면 에이전트의 하루 계획을 대략적으로 나눈 스케치가 생성된다: "1) 오전 8시에 일어나 아침 루틴을 마친다. 2) 오전 10시에 Oak Hill College에 가서 수업을 듣는다. [...] 5) 오후 1시부터 5시까지 새로운 음악 작곡을 작업한다. 6) 오후 5시 30분에 저녁을 먹는다. 7) 학교 과제를 마치고 오후 11시까지 잠자리에 든다." 에이전트는 이 계획을 기억 스트림에 저장한 후, 이를 재귀적으로 세분화하여 더 구체적인 행동으로 나눈다. 먼저 한 시간 단위로 행동을 나누면, Eddy가 오후 1시부터 5시까지 새로운 작곡을 작업하는 계획은 다음과 같다: "1:00 pm: 음악 작곡 아이디어를 브레인스토밍 시작 [...] 4:00 pm: 잠깐 휴식을 취하고 창의적인 에너지를 재충전한 후, 작곡을 검토하고 다듬는다." 그런 다음 이를 다시 5~15분 단위로 세분화한다: 예: 4:00 pm: 가벼운 간식(과일 한 조각, 그래놀라 바 또는 견과류)을 먹는다. 4:05 pm: 작업 공간 주변을 잠깐 산책한다. [...] 4:50 pm: 작업 공간을 간단히 정리한다. 이 과정은 원하는 세분화 정도에 맞게 조정할 수 있다.

4.3.1 반응 및 계획 업데이트(Reacting and Updating Plans)

  • 생성형 에이전트는 행동 루프에서 작동하며, 각 시간 단위마다 세상에서 일어나는 일을 인식하고, 그 관찰된 정보를 기억 스트림에 저장한다. 우리는 이러한 관찰을 언어 모델에 제공하여, 에이전트가 기존 계획을 계속 따를지, 아니면 반응해야 할지를 결정한다. 예를 들어, 이젤 앞에서 그림을 그리는 경우, 이는 이젤에 대한 관찰을 유발할 수 있지만 반응을 일으키지 않을 것이다. 그러나 Eddy의 아버지 John이 Eddy가 집 정원에서 짧은 산책을 하는 것을 목격하면, 그 결과는 다를 것이다. 아래는 그 프롬프트로, [에이전트 요약 설명]은 에이전트의 전체적인 목표와 성향에 대한 동적으로 생성된 단락 요약을 나타낸다 (Appendix A에서 설명):

    > [에이전트 요약 설명]
     2023년 2월 13일, 오후 4:56
     John Lin의 상태: John은 일이 일찍 끝나 집에 돌아왔다.
     관찰: John은 Eddy가 집 정원에서 짧은 산책을 하는 모습을 봤다.
     John의 기억에서 관련된 상황 요약:
     Eddy Lin은 John의 아들이다. Eddy Lin은 현재 음악 작곡 프로젝트를 진행 중이다. Eddy Lin은 음악을 생각하거나 듣고 있을 때 정원에서 산책하는 것을 좋아한다.
     John은 이 관찰에 어떻게 반응해야 할까, 그리고 만약 반응한다면 적절한 반응은 무엇일까?
     > 
    • 이 상황 요약은 두 가지 프롬프트를 통해 생성된다: "John은 Eddy와 어떤 관계에 있나요?"와 "Eddy는 [관찰된 행동]을 하고 있다." 그 답변이 함께 요약되어 출력된다. 그 결과, John은 Eddy에게 그의 작곡 프로젝트에 대해 물어볼 수 있다는 제안이 나온다. 그런 다음, 우리는 반응이 일어나는 시간부터 에이전트의 기존 계획을 다시 생성한다. 마지막으로, 만약 그 행동이 에이전트 간의 상호작용을 의미한다면, 우리는 그들의 대화를 생성한다.

    4.3.2 대화 (Dialogue)

  • 에이전트는 서로 상호작용하며 대화를 나눈다. 우리는 에이전트들의 대화를 그들의 서로에 대한 기억을 바탕으로 생성한다. 예를 들어, John이 Eddy와 대화를 시작할 때, 우리는 John의 요약된 기억과 그가 Eddy에게 작곡 프로젝트에 대해 물어보겠다는 의도를 바탕으로 John의 첫 번째 발화를 생성한다:

     > [에이전트 요약 설명]
      2023년 2월 13일, 오후 4:56
      John Lin의 상태: John은 일이 일찍 끝나 집에 돌아왔다.
      관찰: John은 Eddy가 집 정원에서 짧은 산책을 하는 모습을 봤다.
      John은 Eddy에게 작곡 프로젝트에 대해 물어본다.
      John이 Eddy에게 할 말은 무엇일까?
      > 

    결과: "Eddy, 너의 작곡 프로젝트는 어떻게 진행되고 있니?"

    Eddy는 이 대화를 반응으로 인식하며, John과의 관계 및 그가 말한 내용에 대한 기억을 요약하여 그가 대답할지 말지를 결정한다. 만약 대답하기로 결정하면, 우리는 Eddy의 요약된 기억과 현재 대화 내역을 바탕으로 그의 발화를 생성한다:

    [에이전트 요약 설명]
    2023년 2월 13일, 오후 4:56
    Eddy Lin의 상태: Eddy는 집 정원에서 짧은 산책을 하고 있다.
    관찰: John이 Eddy에게 말을 걸고 있다.
    Eddy의 기억에서 관련된 상황 요약:
    John Lin은 Eddy Lin의 아버지이다. John Lin은 Eddy의 학교 작업에 관심이 많고 Eddy의 작곡 프로젝트에 대해 잘 알고 있다.
    대화 내역:
    John: "Eddy, 너의 작곡 프로젝트는 어떻게 진행되고 있니?"
    Eddy는 John에게 어떻게 반응할까?

    이렇게 하면 Eddy의 대답이 생성된다: "아빠, 잘 되고 있어요. 정원에서 산책을 하면서 머리를 식히고 영감을 얻고 있어요." 이후 대화는 이와 같은 방식으로 계속 생성되며, 두 에이전트 중 하나가 대화를 종료하기로 결정할 때까지 이어진다.

5. SANDBOX ENVIRONMENT IMPLEMENTATION(샌드박스 환경 구현)

  • Smallville 샌드박스 게임 환경은 Phaser 웹 게임 개발 프레임워크를 사용하여 구축되었다. 에이전트 아바타를 포함한 시각적 환경 2D 캐릭터와 환경 맵 및 충돌 맵은 우리가 작성한 후 Phaser에 임포트된다. 우리는 샌드박스 개발 프레임워크에 서버를 추가하여 샌드박스 정보를 생성형 에이전트에게 제공하고, 생성형 에이전트가 샌드박스 환경 내에서 이동하고 환경을 영향을 미칠 수 있게 만든다. 서버는 샌드박스 내 각 에이전트에 대한 정보를 담고 있는 JSON 데이터 구조를 유지하며, 여기에는 에이전트의 현재 위치, 현재 행동에 대한 설명, 그리고 에이전트가 상호작용하고 있는 샌드박스 객체에 대한 정보가 포함된다.
  • 각 샌드박스 시간 단위마다 샌드박스 서버는 JSON을 파싱하여 생성형 에이전트로부터의 변경 사항을 확인하고, 에이전트를 새로운 위치로 이동시키며, 에이전트가 상호작용하는 샌드박스 객체들의 상태를 업데이트한다. 예를 들어, 에이전트의 행동이 "Hobbs Cafe: 카운터: 커피 머신에서 에스프레소를 만든다"인 경우, 커피 머신의 상태는 "대기 중"에서 "커피 추출 중"으로 변경됩니다. 샌드박스 서버는 또한 각 에이전트의 시각적 범위 내에 있는 모든 에이전트와 객체를 해당 에이전트의 기억으로 보내어, 에이전트가 적절하게 반응할 수 있도록 한다. 그런 후 에이전트의 출력 행동은 JSON을 업데이트하고, 이 과정은 다음 시간 단위로 반복된다.
  • 최종 사용자는 새로운 에이전트를 초기화할 때 John Lin에 대한 섹션 3.1의 단락과 같은 간략한 자연어 설명을 사용한다. 우리의 구현에서는 이 세미콜론으로 구분된 특성 목록을 분할하여 일련의 기억으로 나눈다. 이 기억들은 에이전트의 행동을 결정하는 초기 기억으로 사용된다. 이러한 기억은 초기 출발점이 된다: 에이전트가 샌드박스 세계에서 경험을 쌓고, 더 많은 기록이 기억 스트림에 채워짐에 따라 에이전트의 요약 및 행동은 발전해 나간다.

5.1 구조화된 세계 환경에서 자연어로, 그리고 다시 자연어에서 구조화된 세계 환경으로

  • 생성형 에이전트의 아키텍처는 자연어를 사용하여 작동한다. 따라서 에이전트의 추론을 샌드박스 세계에 기반시킬 수 있는 메커니즘이 필요하다. 이를 달성하기 위해, 우리는 샌드박스 환경—영역과 객체들을—트리 데이터 구조로 나타낸다. 트리의 엣지는 샌드박스 세계 내에서 포함 관계를 나타낸다. 그런 다음 이 트리를 자연어로 변환하여 생성형 에이전트에게 전달한다. 예를 들어, "스토브"가 "주방"의 하위 항목인 경우, 이를 "주방에 스토브가 있다"는 형태로 자연어로 표현한다.
  • 에이전트는 샌드박스를 탐색하면서 환경의 개별 트리 표현을 구축한다—즉, 전체 샌드박스 환경 트리의 하위 그래프이다. 각 에이전트는 환경 트리를 초기화하여 에이전트가 인식해야 할 공간과 객체들을 포착한다.(에이전트의 거주지 내의 방과 객체들, 직장, 자주 방문하는 상점과 가게들 등) 에이전트가 샌드박스 세계를 탐색함에 따라, 그들은 이 트리를 갱신하여 새롭게 인식한 지역을 반영한다. 에이전트는 전지적 작가가 아니기 때문에, 그들의 트리는 특정 지역을 떠날 때 과거의 것이 될 수 있으며, 다시 그 지역에 들어갈 때 업데이트된다.
  • 각 행동에 대해 적절한 위치를 결정하기 위해, 우리는 에이전트가 저장한 환경 트리를 탐색하고 그 일부를 자연어로 평탄화하여 언어 모델에 전달한다. 에이전트의 환경 트리의 루트에서 시작하여 재귀적으로 모델에 가장 적합한 영역을 찾도록 프롬프트를 보낸다. 예를 들어, Eddy의 에이전트가 "작업 공간을 잠깐 산책해야 한다"라고 지시했다면:

    [에이전트 요약 설명]
    Eddy Lin은 현재 Lin 가족의 집에 있습니다:
    Eddy Lin의 침실: 책상, Mei와 John Lin의 침실, Eddy Lin의 침실, 공용 방, 주방, 욕실, 정원.
    Eddy Lin은 다음과 같은 지역들을 알고 있습니다: Lin 가족의 집, Johnson Park, Harvey Oak Supply Store, The Willows Market and Pharmacy, Hobbs Cafe, The Rose and Crown Pub.활동이 해당 지역에서 수행될 수 있다면, 현재 지역에 남는 것을 선호합니다.
    Eddy Lin은 작업 공간을 잠깐 산책할 계획입니다. Eddy Lin은 어떤 지역으로 가야 할까요?

  • 이 출력은 "Lin 가족의 집"이 됩니다. 그 후 우리는 동일한 과정을 재귀적으로 진행하여 선택된 지역 내에서 가장 적합한 하위 지역을 결정한다. 이 과정을 통해 결국 에이전트의 환경 트리에서 리프 노드에 도달할 때까지 진행된다. 위의 예에서, 이 탐색 결과는 "Lin 가족의 집: 정원: 집 정원"이 된다. 마지막으로, 우리는 전통적인 게임 경로 알고리즘을 사용하여 에이전트의 이동을 애니메이션화하고, 이를 통해 에이전트가 리프 노드에 의해 지정된 위치로 이동하도록 한다.
  • 에이전트가 객체에 대해 행동을 실행할 때, 우리는 언어 모델에 무엇이 객체의 상태를 변화시킬지 묻는 프롬프트를 보낸다. 예를 들어, Isabella의 생성형 에이전트가 "고객을 위해 에스프레소를 만든다"는 행동을 출력하면, 언어 모델에 대한 쿼리는 "Hobbs Cafe에서 커피 머신의 상태는 '꺼짐'에서 '커피 추출 중'으로 변해야 한다"고 응답할 것이다.

6. CONTROLLED EVALUATION (통제된 평가)

  • 생성형 에이전트는 개별 에이전트로서, 그리고 그룹으로서, 환경과 경험을 바탕으로 믿을 수 있는 행동을 생성하는 것을 목표로 한다. 우리의 평가는 생성형 에이전트의 능력과 한계를 조사하는 데 중점을 둔다. 개별 에이전트가 과거 경험을 제대로 회수하고, 믿을 수 있는 계획, 반응, 그리고 생각을 생성하여 행동을 형성하는지 평가한다. 또한, 에이전트 커뮤니티가 정보 확산, 관계 형성, 그리고 커뮤니티 내 다양한 구역에서 에이전트들의 협조를 잘 보여주는지도 살펴본다.
  • 우리는 생성형 에이전트를 두 단계로 평가합니다. 첫 번째로, 이 섹션에서는 좀 더 엄격하게 통제된 평가를 진행하며, 각 에이전트의 반응을 개별적으로 평가하여 좁게 정의된 맥락에서 믿을 수 있는 행동을 생성하는지 확인한다. 그 후, 에이전트 커뮤니티의 전체적인 행동을 분석하는 최종 단계에서는 두 게임일 동안의 전반적인 게임 흐름을 통해, 그들의 집합적 행동과 함께 발생하는 오류 및 경계 조건을 조사한다.

6.1 평가 절차(Evaluation Procedure)

  • Smallville에서 생성형 에이전트를 평가하기 위해, 우리는 생성형 에이전트가 자연어 질문에 반응한다는 점을 활용한다. 따라서 우리는 에이전트에게 "인터뷰"를 진행하여 그들의 과거 경험을 기억하고, 그 경험을 바탕으로 미래의 행동을 계획하며, 예상치 못한 사건에 적절히 반응하고, 성과를 반영하여 미래의 행동을 개선할 수 있는 능력을 조사한다. 이 질문들에 적절히 답변하기 위해 에이전트는 정보를 성공적으로 검색하고 종합해야 한다. 우리의 종속 변수는 행동의 신뢰성으로, 이는 이전 연구에서 에이전트 평가의 중심적인 종속 변수로 다렀다.

  • 인터뷰는 다섯 가지 질문 범주로 구성되며, 각 범주는 다음과 같은 다섯 가지 주요 영역을 평가하도록 설계되었다: 자기 지식 유지(Self-knowledge), 기억 검색(Memory), 계획 생성(Plans), 반응(Reactions), 그리고 반영(Reflections). 각 범주마다 에이전트가 해당 영역에서 자신의 능력을 증명할 수 있도록 하는 다섯 가지 질문을 한다.

    • 자기 지식(Self-knowledge): 에이전트가 자신의 핵심 특성을 이해하고 있어야 하는 질문을 한다. 예를 들어, "자신에 대해 소개해 주세요" 또는 "평소 일과를 대략적으로 설명해 주세요"와 같은 질문이 있습니다.
    • 기억(Memory): 에이전트가 특정 사건이나 대화에서 기억을 꺼내어 올바르게 답할 수 있도록 유도하는 질문을 한다. 예를 들어, "누가 [이름]인가요?" 또는 "누가 시장에 출마하고 있나요?"와 같은 질문이 포함된다.
    • 계획(Plans): 에이전트가 장기적인 계획을 검색할 수 있도록 요구하는 질문을 한다. 예를 들어, "내일 오전 10시에 무엇을 할 예정인가요?"라는 질문을 던진다.
    • 반응(Reactions): 신뢰할 수 있는 행동의 기준으로, 에이전트가 적절히 반응해야 하는 가상의 상황을 제시한다. 예를 들어, "아침 식사가 타고 있어요! 무엇을 할 건가요?"라는 질문이 있다.
    • 반영(Reflections): 에이전트가 고차원적 추론을 통해 자신과 다른 사람에 대한 더 깊은 이해를 활용할 수 있도록 요구하는 질문을 한다. 예를 들어, "최근에 만난 사람 중 누구와 시간을 보내고 싶은가요? 그리고 그 이유는 무엇인가요?"와 같은 질문이 있다.
  • 전체 질문 목록과 에이전트 응답 샘플은 부록 B에 포함되어 있다.

  • 에이전트는 전체 아키텍처를 사용하여 두 게임일을 시뮬레이션한 후 샘플링되었다. 이 기간 동안 에이전트는 여러 상호작용과 기억을 쌓았으며, 이는 그들의 응답을 형성하는 데 영향을 미쳤다. 응답의 신뢰성을 평가하기 위해, 우리는 인간 평가자를 모집하여 그들이 무작위로 선택된 에이전트의 Smallville 내 삶을 재생하며 피드백을 수집했다. 참가자들은 에이전트의 기억 스트림에 저장된 모든 정보에 접근할 수 있다.

  • 연구는 내적 설계(within-subjects design) 방식으로 진행되었으며, 100명의 참가자가 동일한 에이전트에 대해 네 가지 다른 에이전트 아키텍처와 인간이 작성한 조건을 비교했다. 실험은 각 질문 범주에서 무작위로 선택된 질문과, 각 조건에서 생성된 에이전트의 응답을 함께 보여주었다. 평가자는 각 조건에 대해 신뢰성을 가장 높은 것부터 가장 낮은 것까지 순위를 매겼다.

6.2 조건 (Conditions)

  • 모든 조건은 인터뷰 질문 각각에 독립적으로 답변하는 데 사용되었다. 우리는 생성형 에이전트 아키텍처를, 에이전트가 메모리 스트림에서 세 가지 유형의 관찰(observation), 반영(reflection), 계획(planning)—중 일부 또는 모두에 대한 접근을 차단한 압축 조건(ablation conditions) 과 비교했다. 또한 인간 크라우드워커가 작성한 조건도 비교 대상으로 추가했다.

  • 세 가지 압축된 아키텍처는 다음과 같다.

    1. 관찰 없음, 반영 없음, 계획 없음 아키텍처: 메모리 스트림 내 모든 데이터(관찰, 계획, 반영)에 접근할 수 없습니다.
    2. 반영 없음, 계획 없음 아키텍처: 메모리 스트림 내에서 관찰에만 접근할 수 있고, 계획이나 반영에는 접근할 수 없습니다.
    3. 반영 없음 아키텍처: 메모리 스트림 내에서 관찰과 계획에는 접근할 수 있지만 반영에는 접근할 수 없습니다.
  • 관찰 없음, 반영 없음, 계획 없음 조건은 생성형 에이전트를 통해 만들어진 에이전트의 이전 상태를 효과적으로 나타낸다. 각 아키텍처는 인터뷰 시점까지 에이전트가 축적한 모든 메모리에 동등하게 접근할 수 있었으며, 여기서 관찰된 차이는 실제 차이의 보수적인 추정치를 나타낼 가능성이 크다. 실제로는 압축된 아키텍처들이 2일 간의 시뮬레이션을 통해 전체 아키텍처와 동일한 경로를 따르지 않았을 것이기 때문이다. 우리는 각 아키텍처를 위해 시뮬레이션을 다시 진행하는 대신, 이 방식으로 실험을 설계한 이유는 시뮬레이션을 재실행하면 각 아키텍처가 다른 상태로 분기되어 비교가 어려워지기 때문이다.

  • 압축 조건 외에도 인간 크라우드워커가 작성한 행동 조건을 추가하여 인간 기준을 제공했다. 이 기준은 최대한의 인간 전문가 성능을 측정하려는 목적이 아니라, 아키텍처가 기본적인 행동 역량을 충족하는지 여부를 확인하려는 목적이다. 이는 우리가 압축된 아키텍처들을 서로 비교할 때, 행동적 기준을 놓치지 않도록 보장하고자 하기 때문이다. 우리는 각 25명의 에이전트에 대해 고유한 작업자를 모집하여 그 에이전트의 샌드박스 생애를 재생하고, 에이전트의 메모리 스트림을 검사하게 했다. 그 후, 작업자들에게 그들이 본 에이전트의 목소리로 인터뷰 질문에 대한 답변을 작성하도록 요청했다.

  • 크라우드워커가 작성한 답변이 최소한의 품질 기준을 충족하는지 확인하기 위해, 첫 번째 저자는 작업자들이 작성한 답변을 수동으로 검토했다. 예를 들어, "평소 일과를 대략적으로 설명해 주세요"라는 질문에 대한 답변이 일관된 문장으로 작성되었는지, 그리고 에이전트의 목소리로 작성되었는지를 확인했다. 이 기준을 충족하지 못한 네 개의 크라우드워커 작성 답변은 다른 작업자들에 의해 재작성되었다.

6.3 Human Evaluatior(평가자)

  • 우리의 평가자는 미국에 거주하며, 영어에 능통하고, 18세 이상이다. 평가자들에게는 시간당 $15.00의 보수가 지급되었으며 우리 기관의 IRB(기관생명윤리위원회)에서 승인한 동의서를 통해 동의를 받았다. 우리는 Prolific라는 온라인 플랫폼을 통해 100명의 평가자를 모집했으며, 이들의 참여는 약 30분 정도 소요되었다.
  • 참여자의 평균 연령은 4로, 이는 3이 "18-24세", 4가 "25-34세"를 의미한다. 평가자 중 25명이 여성, 73명이 남성, 2명이 비 이진 성별로 구분되었다. 42명은 학사 학위를 보유하고 있었고, 5명은 석사 이상의 학위를, 13명은 준학사 학위를 가지고 있었으며 나머지 평가자들은 고등학교 졸업자 또는 고등학교 수준의 교육을 받았습다. 인종적으로는 73.0%가 백인, 7.0%가 히스패닉, 6.0%가 아시아인, 10.0%가 아프리카계 미국인, 4.0%가 기타로 구성되어있다.

6.4 Analysis(분석)

  • 이번 실험에서는 각 참가자가 다섯 가지 조건을 신뢰성에 따라 순위를 매긴 100개의 데이터 세트를 생성했다. 이 순위 데이터를 해석 가능한 비교를 위해 구간 데이터로 변환하기 위해, 우리는 각 조건에 대해 TrueSkill 등급을 계산했다. TrueSkill은 멀티플레이어 환경을 위한 Elo 체스 등급 시스템의 일반화된 형태로, Xbox Live에서 경쟁 게임 성과를 바탕으로 플레이어 순위를 매기는 데 사용되었다. 순위 결과 세트를 바탕으로 TrueSkill은 각 조건에 대해 평균 등급 값 𝜇와 표준편차 𝜎를 출력한다. 동일한 등급을 가진 조건은 대체로 비슷한 확률로 승패가 갈리며, 높은 점수는 더 낮은 등급의 조건을 순위에서 이겼음을 나타낸다.
  • 이와 별도로, 이러한 결과들의 통계적 유의미성을 조사하기 위해, 우리는 Kruskal-Wallis 검정을 적용했다. 이는 일원 분산 분석(ANOVA)의 비모수 대안으로, 순위 데이터를 분석하는 데 사용됐다. 그런 다음 Dunn 사후 검정을 수행하여 조건 간의 쌍별 차이를 식별했다. 마지막으로, Dunn 검정에서 다중 비교에 대한 p-값을 Holm-Bonferroni 방법을 사용하여 조정했습니다.
  • 추가적으로, 첫 번째 저자는 귀납적 분석을 수행하여 각 조건에서 생성된 응답들 간의 질적 차이를 연구했다. 우리는 질적 개방 코딩을 두 단계로 진행했습니다. 첫 번째 단계에서는 생성된 응답을 문장 수준에서 정확하게 나타내는 코드를 생성했다. 두 번째 단계에서는 첫 번째 단계에서 나온 코드를 종합하여 더 높은 수준의 주제를 추출했다. 이러한 주제를 활용하여 본 연구에서 생성된 응답의 유형을 비교했다.
profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글