Open4

Generative Agentsコードリーディング

MaronMaron

Maze

init

タイル情報を作成している。

const tile = {
  world: 'double studio', 
  sector': '',
  arena: '',
  game_object: '', 
  spawning_location: '',
  collision: false,
  events: []
}

const game_object_tile = {
  world: 'double studio', 
  sector: 'double studio', 'arena': 'bedroom 2', 
  game_object: 'bed',
  spawning_location: 'bedroom-2-a', 
  collision: false,
  events: [
    // [ゲームオブジェクトまでのアドレスを":"で結合したもの, null, null]
    ['double studio:double studio:bedroom 2:bed', null, null]
  ] 
}

const tiles = [
  [tile, tile, tile, ...]
  [tile, tile, tile, ...]
  [tile, tile, tile, ...]
  ...
]

const address_tiles = {
  'double studio:recreation:pool table': [[29, 14], [31, 11], [30, 14], [32, 11], ...]],
  '<spawn_loc>bedroom-2-a': [[58, 9]]
}
MaronMaron

Persona

init

記憶を作成している。

spatial_memory

空間記憶、位置情報をツリー構造で記録している。

const memory = {
  "double studio": {
    "double studio": {
      "bedroom 2": ["painting", "easel", "closet", "bed"]
    }
  }
}

associative_memory

連想記憶、イベント情報を記録している。

const memory = [
  // [event.type, event.created, event.expiration, subject, predicate, object]
  ['event', '2022-10-23 00:00:00', undefined, 'Isabella Rodriguez', 'is', 'idle']
]

scratch

短期記憶。

perceive

  • 周囲のタイル取得
  • spatial_memory更新
  • 周囲のタイルからイベント取得
  • associative_memoryにイベント追加
  • イベントを返却

retrieve

  • イベント受取
  • イベントに関連するイベントと考えを付与して返却
MaronMaron

AssociativeMemory

init

const nodes = {
  "node_14": {
    "node_count": 14,
    "type_count": 6,
    "type": "thought",
    "depth": 1,
    "created": "2023-02-13 00:00:20",
    "expiration": "2023-03-15 00:00:20",
    "subject": "Isabella Rodriguez",
    "predicate": "love",
    "object": "work",
    "description": "Isabella Rodriguez loves her work at Hobbs Cafe.",
    "embedding_key": "Isabella Rodriguez loves her work at Hobbs Cafe.",
    "poignancy": 8,
    "keywords": ["love", "Isabella Rodriguez", "work"],
    "filling": null
  },
  ...
} 

const embeddings = {
  "Isabella Rodriguez is idle": [-0.03697006031870842, ...],
  ...
}

const kw_strength = {
  "kw_strength_event": {
    "isabella rodriguez": 1,
    "sleep": 1,
    "bed": 1,
    "used": 1
  },
  "kw_strength_thought": {
    "plan": 1,
    "excited": 1,
    "isabella rodriguez": 5,
    "be": 1,
    "have been": 1,
    "good friends": 1,
    "is": 1
  }
}