はじめに
この記事はInfocom Advent Calendar 2023の19日目の記事です。この記事はGenerative Agentsを試してみたの記事になります。
目次
- Generative Agentsとは?
- 簡単な仕組み説明
- 試しにAIエージェントを動かしてみた
- さいごに
- 参考文献
Generative Agentsとは?
ここでのGenerative Agentsとは、前に話題になった論文Generative Agents: Interactive Simulacra of Human Behaviorのことです。
要は生成系AIを使って、人間の行動をシミュレートできるエージェントを生成しようとした話です。論文では25人のエージェントが互いにコミュニケーションを取り合う姿について話しています。
簡単な仕組み説明
AIエージェントアーキテクチャの重要な要素は三つあると書かれています。以下引用は論文より引用しています。
Generative Agents: Interactive Simulacra of Human Behaviorより引用
- memory stream
The first is the memory stream, a long-term memory module that records, in natural language, a comprehensive list of the agent’s experiences.
長期記憶モジュールのこと。人間でいう海馬や大脳皮質の辺りかなと思います。
- reflection
The second is reflection, which synthesizes memories into higherlevel inferences over time, enabling the agent to draw conclusions about itself and others to better guide its behavior.
内省すること。例えば人と話した際に「この人とは気が合いそうだ」とか「あまり得意なタイプじゃないかも」とか人との関係について振り返ることがあると思います。おそらくそのことかなと思います。
- planning
The third is planning, which translates those conclusions and the current environment into high-level action plans and then recursively into detailed behaviors for action and reaction.
計画すること。おそらくイメージはヒューリスティックのことで、自分の価値観や経験に基づいて次の行動や感情に反映させることかなと思います。
この三つの要素がないとエージェントが人間のように振る舞わないらしいです…
試しにAIエージェントを動かしてみた
Generative AgentsはGithubにも上がっているのでこちらを参考にしました。
- 以下のように少し変更しています
- 対話だけ行えるように実装、プロンプトを参考にしながら日本語に変更
- reflectionはユーザーの返事ごとに毎回実行
- 友好度を設け、ユーザーを「大好き」または「大嫌い」になったら会話を終了
- Agentは以下のようにしました
@dataclass
class Person:
name: str = "Mika"
age: int = 28
chara: str = "元気、友好的、好奇心旺盛"
relationship: str = "同い年で仲良し"
think: str = "最近観た映画の話がしたい"
memory: List[str] = field(default_factory=list)
- 早速会話してみます
- モデルはGPT-4を使いました
- 友好度が「大好き」または「大嫌い」を判定しています
- 基準が分からなかったのでとりあえずお出かけする仲は「大好き」としました
私:こんにちは
友好度:7
Mika: こんにちは、鈴木!最近何か面白い映画を観た?私はこの間、すごく面白い映画を観たんだ。
私:どんな映画?
友好度:7
Mika: それは「インセプション」っていう映画なんだ。複雑なストーリーだけど、すごく面白くて、ぜひ観てみてほしいな!
私:それは良いね、見に行きたい
友好度:7
Mika: それなら一緒に観に行かない?今度の週末はどう?
私:いいね!一緒に行こう!
友好度:7
Mika: それじゃあ、週末の映画の時間と場所を決めよう!何時がいい?そして、どの映画館に行きたい?
私:13時ごろで横浜がよいかな
友好度:10
とても好きなので会話をやめます
さいごに
- Generative Agentsの他にもAgents同士で相談しながら問題解決を目指すAutoGenや、人間の欲求も含めたAgentsのHumanoid Agentsも面白そうだと思っています
- llmを活用し、より人間のように振る舞うAgentsを作れたらと思っています