AI関連

BabyAGIとは何か?誰にでもわかりやすいように解説

楠 剛毅(goke)

個人開発から世界を変えるようなプロダクトづくりを目指しています

BabyAGIが爆誕して話題となりました。
利用自体は、下記があれば誰でも試すことができますが、

  • Pythonを動かせる環境
  • OpenAIのAPIキー
  • PineconeのAPIキー

この記事ではBabyAGIの動かし方ではなく、本質的な理解をしたい方のために、
作者のYohei Nakajimaさんのpaperの情報をベースにまとめたいと思います。

追記(2023/05/05)
OpenAIのAPIキーだけでBabyAGIを動かせるUIが登場しました。
下記のページからお手軽に試すことができるので実際に試してみたい方は下記のページを確認してみてください。
https://babyagi-ui.vercel.app/

BabyAGIの仕組み

ここからはBabyAGIが何をしているのかを公式のpaperで紹介されている図をベースに見ていきます。
この図だけ見ると、

よくわからん!

と反射的に思うかもしれませんが、そんなに難しいことは言っていません。

まず、ユーザーが目標と1つ目のタスクを入力します。
どこに入力するかというと、Task Queue(タスクキュー)、要するにタスクを貯める場所です。

Task Queueにタスクが入ると早速そのタスクをこなします。
タスクをこなすのはExecution Agentと名付けられていますが、実態はGPT-4です。

GPT-4は与えられたタスクをこなし、その結果とともにメモリに保存します。
また、この際にメモリからコンテキストを受け取ります。
コンテキストとは文脈(文章や会話の背景情報)のことなので初回は受け取らず、2週目以降から受け取ることになると思います。

タスクをこなして得た結果は次のタスクを作成するために、Task Creation Agentに渡されます。
名前の通りタスクを作る機構ですが、中身は同じくGPT-4です。

新しく作られたタスクはTask Queueに入れられ、

すでに溜まっているタスクと一緒に優先順位づけがされます。

これで1周完了しました。
あとはこの処理を繰り返していくのがBabyAGIの構造です。

まとめると、BabyAGIは

  • タスクをこなす
  • タスクを作る
  • タスクの優先順位づけをする

という流れを繰り返すことで自律的に処理をこなしていきます。
そしてそれぞれの段階で処理を行っているのはGPT-4、という構造です。

BabyAGIの構成

BabyAGIは下記により構成されています。

  • Pythonのコード
  • ChatGPT API
  • Pinecone
  • LangChain

これらがなんなのかわからなくても前述の仕組み自体は理解できるかと思いますが、BabyAGIに関するさらなる情報を集めようとすると必ず登場してくるものなので下記に簡単にまとめます。

Python

プログラミング言語の1種です。
Baby-AGIはPythonというプログラミング言語で書かれています。

ChatGPT API

ChatGPT自体はご存知かと思いますが、一般の方が認知しているのはChatGPTのデモサイトです。
このデモサイトと同じようなサイトを作ろうとする場合、ChatGPT APIを利用することができます。
APIとは機能にアクセスするための架け橋のようなものです。

Pinecone(パインコーン)

簡単に言うと、AI開発でデータを扱いやすくするためのものです。
AI開発では、異なる特徴を[3, 4, 5]のようなベクトル形式で扱うことが一般的で、このようなベクトル形式のデータを高速に処理できる高性能なベクトルデータベースを提供するクラウドサービスがPineconeです。
上の説明でメモリと言っていた部分の実態がPineconeです。
ちなみにパインコーンは松ぼっくりのことです。

LangChain

大規模言語モデル(Large Language Model: LLM)を利用してサービスの開発をしたいときに便利に使えるライブラリ
ライブラリとはプログラマーが開発を簡単に行えるようにするためのツールボックスのようなものです。

BabyAGIの今後

今後の開発については下記の通り挙げられています。

  • セキュリティと安全性の追加
    • システムによって生成された入力と出力が倫理的および安全性のガイドラインに準拠していることを保証し、意図しない結果のリスクを軽減
  • タスクの順序付けと並列タスク
    • 一連のタスクを生成し、特定のタスクを実行する前に完了しなければならないタスクを定義することで、システムは相互に依存しない並列タスクを実行できるようにする
  • 中間マイルストーン
    • 目標に向けた中間マイルストーンを生成することで、システムは進捗状況を監視し、それに応じて戦略を調整し、全体的な効率と有効性を向上させる
  • リアルタイムの優先度の更新
    • API への ping や電子メール アドレスの新しい優先度の確認など、リアルタイムの優先度の更新を組み込むことで、最新の情報に基づいてタスクの優先度を動的に調整

まとめ

BabyAGIはAuto-GPTと同様に

ChatGPTよりすごいのができた!

というわけではなく、ChatGPTを活用した仕組み(場合によってはGPT-4の部分を他のGPTに置き換えが可能)です。
何がすごいかというとAuto-GPT同様、ユーザーのプロンプトを待つことなく自律して新たなタスクを生み出し、こなしていくところです。

ちなみにBabyAGIは止めないと動き続けるので、うっかりしているとOpenAIのAPI利用料がめちゃめちゃに請求される可能性があります。
これはこれでとても痛いことなのですが、作者のYohei Nakajimaさんのpaperでも触れられている通り、最悪の場合「ペーパークリップ問題」が起こる可能性があります。

ペーパークリップ問題

AIに「クリップをできるだけたくさん作ってね」とお願いしたら、
目的を達成するために自然や生物を根こそぎ駆逐しながら作り続けてしまうという問題

止めないとAPI利用料金が加算され続けると言うのが何か似ている気がしますね。
これからの進化が楽しみですが、気をつけるべきところは気をつけなければならないと感じています。

Auto-GPTについては下記をご参照ください。

Auto-GPT

  • この記事を書いた人

楠 剛毅(goke)

個人開発から世界を変えるようなプロダクトづくりを目指しています

-AI関連