Generative Agentのフロー解析
Generative Agentのソースコードが公開されてしばらく経ちましたね。
Generative Agentの中では多くの回数LLMによる推論が行われていおり、それによりペルソナが意思を持ち社会性を担保しつつ生活できるようになっています。
今回はコードを読み進めていく中でLLMがどのように・どのくらい使用されているか分かりやすように、どんな処理の流れになっているか整理を行いました。
ペルソナがどのように個性を出して人間のような振る舞いを行なっているかの参考にしていただければ幸いです。
大枠の流れ
各ペルソナごと perceive
, retrieve
, plan
, reflect
, execute
を繰り返して動作を行っています。
reflection
に関しては追加されたメモリの重要度が一定量を超えた時に行われるようになっています。
execute
は主にパスを移動させたりしているだけなので詳細は省きます。
perceive
まずは perceive
からみていきましょう.
perceive
では自分自身が考える重要度を取得するためにLLMを使用しています。
外界を認識した時に第三者視点での重要度ではなく自分自身がどのように考えているかをペルソナごとに行うため、それぞれが自分の認識として外界の様子を記憶しています。
retrieve
次に認識したイベントをもとに retrieve
を行います。
retrieve
では認識したイベントをもとに自分の記憶から関連するイベントや考えたことを取得しています。
記憶を行う際にSubject
,Predicate
,Object
として3つの要素に内容を分割したものも一緒に保存しているのですが、それぞれの要素をキーワードとして使用し、同じキーワードのイベントや考えたことを取得するようになっています。
3つの要素はコード側での直接指定やgenerate_action_event_triple
などLLMによって分解されていますが、
基本的には Subject
がどんな状態にあるかということを簡単に表現しています
{"subject": "Isabella Rodriguez", "predicate": "is", "object": "sleep"}
{"subject": "the Ville:Isabella Rodriguez's apartment:main room:bed", "predicate": "is", "object": "idle"}
{"subject": "Isabella Rodriguez", "predicate": "plan", "object": "Monday February 13"}
plan
次に plan
を見ていきます。認識した情報をもとにどう行動するかの計画を立てています。
plan
に関しては長すぎるため2つに分割しています。
まずは1日の最初にざっくりとした1日の計画を立て、そこから1時間ごと予定を立てていきます。
さらにそこから出力された予定を分割して分単位の行動に落とし込んでいきます。
次にretrieve
で取得したイベントや考えたことから 自分自身が反応を返すかを決めています。
ここで近くに会話できる人がいたら会話するなどをおこなっています。
何かをペルソナが決める際はLLMを通すことでより人間らしい反応を作ることができているのではないかと思います。
plan
の最初の方でも出てきていましたがnew_retrieve
とついている部分では論文で言うところの 記憶から recency
, relevance
, importance
それぞれ重みをつけてその重みが大きいものからいくつか取得する部分になっています。
コード上では [0.5, 3, 2]
として relevance
(関連性)が一番重要になるように設定されていました。
(コメントでは将来的には強化学習などでこの重みも学習する必要がありそうと記載がありました)
reflect
一定量の重要度分の記憶が溜まったら内省を行い記憶の抽象化を行っています。
内省は自分自身に対しての質問内容を考えてそれに関連する記憶をもとに抽象化を行っています。
抽象化を行った考えは内省の記憶として保存されます。
内省を行うことでより自身のが何をしたいのかを認識していくことによって、より人間らしい行動ができるようになっています。
まとめ
以上でざっくりとではありますがどのような流れでLLMの推論が実行されているかがわかったかと思います。
LLMの呼び出し回数がものすごく多く感じますが、人間が思考するタイミングでLLMを動作させていると考えると、この多さは妥当な感じがします。
今はこの回数のLLMをChatGPTでよびだすとお金と時間がかかってしまいますが、将来的にはローカルLLMの進化、端末の性能向上やモデルの最適化によってこの回数の推論を行なっても気にならないようになるかもしれません。
人格を持ち社会性のあるAIと暮らす世界ももうすぐかもしれませんね。
書いた人
佐藤 寿樹
株式会社コナミデジタルエンタテインメントに入社し5年間ウイニングイレブンのオンライン実装に携わる。
その後、株式会社コロプラで9年間エンジニアとしてアプリ開発・運用を行い、位置情報やARを使用したARゲーム開発、OculusRiftやPSVRなどのVRゲーム開発を経験しMESONへ入社。
MESON Works
MESONの制作実績一覧もあります。ご興味ある方はぜひ見てみてください。
Discussion