「AIエージェントキャッチアップ #27 - Second Me」を開催しました

ジェネラティブエージェンツの大嶋です。

「AIエージェントキャッチアップ #27 - Second Me」という勉強会を開催しました。

generative-agents.connpass.com

アーカイブ動画はこちらです。

www.youtube.com

Second Me

今回は、自分自身のAIを作り上げる「Second Me」について、公式ドキュメントを読んだり動かしたりしてみました。

Second MeのGitHubリポジトリはこちらです。

github.com

論文はこちらです。

arxiv.org

今回のポイント

Second Meの概要

Second Meは、自分のプロフィールや記憶のデータをもとに、自分のようにモデルをファインチューニングするというプロジェクトです。

「自分の記憶をもとにモデルをファインチューニングして自分をAI化したい」というアイデアは定番ですが、まさにそのアイデアに取り組んだ例です。

Second Meの起動

実際にSecond Meを動かしてみました。

GitHubのREADME.mdに記載の手順を進めると、以下のWeb画面が表示されました。

プロフィール・記憶の入力

まずは簡単なプロフィールの入力が求められます。

続いて、記憶をアップロードしていきます。

今回は例として、AIエージェントキャッチアップのconnpassページを3つ、Jina AIのReader APIでテキスト化してアップロードしました。

ちなみにSecond Meのソースコードを参照すると、画像ファイルや音声ファイルにも対応していそうでした。

学習

記憶のアップロードが完了したら、学習に進みます。 ベースモデルとしてQwen2.5-0.5B-Instructを選択して、学習を実行しました。

上記の学習の画面では、実際の学習(ファインチューニング)に入る前に、

  • 記憶のデータをチャンク化したりベクトル化したりする
  • 記憶をストーリー化する
  • 学習データを作成する

といった処理が実行されているようでした。

これらの処理ではLLMとしてOpenAIのAPIを使用します。 記憶のデータをOpenAIのLLMで学習データとして整理して、その学習データをもとにQwen2.5をファインチューニングする、ということです。

「自分の記憶をもとにモデルをファインチューニングして自分をAI化したい」というアイデアを実現するには、記憶をいかに学習データとして整理するかが重要なはずです。 その点でSecond Meには様々な工夫が施されていることが垣間見えました。 工夫の内容から、個人的にはRagasの合成テストデータ生成を想起しました。

今回は記憶としてアップロードしたデータが非常に少なかったので、ファインチューニングは30分ほどで完了しました。

結果

学習が完了すると、プレイグラウンドでモデルとチャットすることができます。

試しに「日本語で自己紹介して」と言うと、以下の結果が得られました。

この出力の文章は日本語としては微妙ですが、記憶自体はある程度反映されていますね。

その他の機能

Second Meには他にも、作成したモデルにロールプレイさせる機能や、AIをネットワークに参加させる機能もあります。

また、「Second Tinder」「Second LinkedIn」など、様々な「Second X」機能が今後公開予定とのことです。

Second Meの機能は以下のドキュメントにもまとまっているので、興味があれば参照してみてください。

second-me.gitbook.io

次回のご案内

以上、今回は「Second Me」をキャッチアップしました。

次回は「AIエージェントキャッチアップ #28 - Graphite」ということで、AIエージェントのイベント駆動フレームワーク「Graphite」がテーマです!

generative-agents.connpass.com

ご興味・お時間ある方はぜひご参加ください!

また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!