🧠

Generative Agentのフロー解析

2023/09/20に公開

image

Generative Agentのソースコードが公開されてしばらく経ちましたね。
Generative Agentの中では多くの回数LLMによる推論が行われていおり、それによりペルソナが意思を持ち社会性を担保しつつ生活できるようになっています。
今回はコードを読み進めていく中でLLMがどのように・どのくらい使用されているか分かりやすように、どんな処理の流れになっているか整理を行いました。
ペルソナがどのように個性を出して人間のような振る舞いを行なっているかの参考にしていただければ幸いです。

大枠の流れ

image

各ペルソナごと perceive, retrieve, plan, reflect, executeを繰り返して動作を行っています。
reflectionに関しては追加されたメモリの重要度が一定量を超えた時に行われるようになっています。
executeは主にパスを移動させたりしているだけなので詳細は省きます。

perceive

まずは perceive からみていきましょう.
image

perceiveでは自分自身が考える重要度を取得するためにLLMを使用しています。
外界を認識した時に第三者視点での重要度ではなく自分自身がどのように考えているかをペルソナごとに行うため、それぞれが自分の認識として外界の様子を記憶しています。

retrieve

次に認識したイベントをもとに retrieve を行います。
image

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つに分割しています。
image

まずは1日の最初にざっくりとした1日の計画を立て、そこから1時間ごと予定を立てていきます。
さらにそこから出力された予定を分割して分単位の行動に落とし込んでいきます。

image
次にretrieveで取得したイベントや考えたことから 自分自身が反応を返すかを決めています。
ここで近くに会話できる人がいたら会話するなどをおこなっています。
何かをペルソナが決める際はLLMを通すことでより人間らしい反応を作ることができているのではないかと思います。
planの最初の方でも出てきていましたがnew_retrieveとついている部分では論文で言うところの 記憶から recency, relevance, importance
それぞれ重みをつけてその重みが大きいものからいくつか取得する部分になっています。
コード上では [0.5, 3, 2] として relevance(関連性)が一番重要になるように設定されていました。
(コメントでは将来的には強化学習などでこの重みも学習する必要がありそうと記載がありました)

reflect

一定量の重要度分の記憶が溜まったら内省を行い記憶の抽象化を行っています。
内省は自分自身に対しての質問内容を考えてそれに関連する記憶をもとに抽象化を行っています。
抽象化を行った考えは内省の記憶として保存されます。
内省を行うことでより自身のが何をしたいのかを認識していくことによって、より人間らしい行動ができるようになっています。
image

まとめ

以上でざっくりとではありますがどのような流れでLLMの推論が実行されているかがわかったかと思います。
LLMの呼び出し回数がものすごく多く感じますが、人間が思考するタイミングでLLMを動作させていると考えると、この多さは妥当な感じがします。
今はこの回数のLLMをChatGPTでよびだすとお金と時間がかかってしまいますが、将来的にはローカルLLMの進化、端末の性能向上やモデルの最適化によってこの回数の推論を行なっても気にならないようになるかもしれません。
人格を持ち社会性のあるAIと暮らす世界ももうすぐかもしれませんね。

書いた人

ひー

佐藤 寿樹

株式会社コナミデジタルエンタテインメントに入社し5年間ウイニングイレブンのオンライン実装に携わる。
その後、株式会社コロプラで9年間エンジニアとしてアプリ開発・運用を行い、位置情報やARを使用したARゲーム開発、OculusRiftやPSVRなどのVRゲーム開発を経験しMESONへ入社。

Twitter

MESON Works

MESONの制作実績一覧もあります。ご興味ある方はぜひ見てみてください。

MESON Works

Discussion