【ChatGPTを使って再帰的に思考】誰でも簡単!DockerでBabyAGIをセットアップ!日本語でも動作?

この記事の内容

  • BabyAGIの概要と、AutoGPTとの違いについて解説します
  • DockerコンテナでBabyAGIを動作させるセットアップ手順を紹介します
  • 「世界の飢餓を解決する」という目標を与えて実際に動かした結果を確認します
  • 日本語でのプロンプト入力が動作するかどうかを検証します
  • Pineconeを使った場合との違いについても触れます

BabyAGIとは

BabyAGIは、AGI(Artificial General Intelligence:汎用人工知能)の名を冠したAIタスク管理システムです。AGIとは、人間が実行可能なあらゆる知的な作業をこなせるとされる人工知能のことで、まだ実現はされていませんが、BabyAGIはその「赤ちゃん版」として、そこに向かうコンセプトを体現したプロジェクトです。

公式の説明によると、BabyAGIはOpenAIとPinecone APIを利用してタスクの生成・優先順位付け・実行を行います。前のタスクの結果と事前に定義された目的に基づいて新しいタスクを生成し、OpenAIの自然言語処理機能で目的に沿ったタスクを作成、Pineconeにタスクの結果を保存してコンテキストを取得するという仕組みになっています。このループを無限に繰り返すのがBabyAGIの基本的な動作です。

AutoGPTとの比較

BabyAGIはAutoGPTと似たコンセプトを持っていますが、実際に動かしてみると違いが見えてきます。AutoGPTは具体的なアクション(ファイル操作、Web検索など)を実行しながら目標に向かって進む傾向があります。一方、BabyAGIは現時点では「考え続ける思想家」のような動きをしており、具体的なアクションを自律実行するところまでは達していない印象です。


セットアップ手順

1. リポジトリのクローン

任意のディレクトリで以下のコマンドを実行し、BabyAGIのリポジトリをクローンします。

git clone https://github.com/yoheinakajima/babyagi.git
cd babyagi

2. 仮想環境の作成(任意)

必須ではありませんが、環境を分けるために仮想環境を作成しておくことをおすすめします。

python -m venv babyagi
source babyagi/bin/activate  # Windowsの場合: babyagi\Scripts\activate

3. .envファイルの作成

サンプルファイルをコピーして .env ファイルを作成します。

cp .env.example .env

.env ファイルを開き、以下の項目を設定します。

OPENAI_API_KEY=your_openai_api_key_here
OPENAI_API_MODEL=gpt-4  # 使用するモデルを指定
# PINECONE_API_KEY=  # Pineconeを使わない場合はコメントアウトのまま
# PINECONE_ENVIRONMENT=
OBJECTIVE=世界の飢餓を解決せよ
INITIAL_TASK=タスクリストを作りなさい

ポイント: PINECONE_API_KEY がコメントアウトされた状態だと、ローカルのデータベースが使用されます。まず試してみるだけであれば、Pineconeなしでも動作させることができます。

OBJECTIVE には達成したい目標を、INITIAL_TASK には最初に実行するタスクを設定します。

4. Dockerコンテナでの実行

通常の pip install では動作しない場合もあるため、Dockerコンテナでの実行がおすすめです。Dockerがインストールされている環境で、以下のコマンドを実行します。

docker compose up

実際の動作確認

「世界の飢餓を解決せよ」で実行

OBJECTIVE に「世界の飢餓を解決せよ」、INITIAL_TASK に「タスクリストを作りなさい」を設定して実行すると、以下のような動作になります。

まず最初のタスクとして「タスクリストの作成」が実行され、次の7つのステップが生成されました。

  1. 世界の飢餓の根本原因について調査を行い、最も影響を受けている地域の人口を特定する
  2. 地域の組織や政府と協力し、現在の食料生産と流通のシステムを評価する
  3. 食料生産を増やし廃棄物を減らすために、持続可能な農業のやり方を開発し実行する
  4. 食料不安の高い地域にフードバンクと流通センターを設立する
  5. 個人と地域社会が自分たちで食料を育て自給自足できるようにするための教育と訓練プログラムを提供する
  6. 貧困・不平等・気候変動など世界の飢餓の原因となっている体系的な問題に取り組む政策を提唱する
  7. 実施された解決策の効果を監視・評価し、必要に応じて戦略を調整する

注目すべき点として、次のタスクリストへの落とし込みでは「1番から順番に」ではなく、「食料不安の高い遠隔地にフードバンクや流通センターを設立するためのフィジビリティスタディを実施する」というタスクが選ばれていました。全体を俯瞰して優先度の高いタスクを判断するような動きが見られます。

この処理をループで繰り返すことで、タスクが徐々に具体化されていく仕組みになっています。ただし、タスクの抽象度が劇的に下がるわけではなく、目標が壮大すぎる場合はいつまでも終わらないため、APIコストには注意が必要です。


日本語でのプロンプトは動くのか?

OBJECTIVEINITIAL_TASK を日本語で記述して試してみました。

OBJECTIVE=YouTubeのチャンネル登録者数を10万人まで伸ばす
INITIAL_TASK=行うべきことを明確にしたリストを作成する

結果として、日本語でのプロンプト入力は動作しました。 出力結果も日本語で返ってきており、日本語話者にとっては読みやすい内容になっています。

ただし、試験中にOpenAI APIのレートリミットに達してしまい、途中から英語での出力になったり、タスクの実行結果が「了解しました」という形でループから抜け出せなくなる状況も発生しました。目標の設定方法によっては、タスクリストが変化しないまま意味のないループに陥る可能性があることも確認できました。


Pineconeを使った場合

.env ファイルに PINECONE_API_KEYPINECONE_ENVIRONMENT を設定することで、Pineconeをベクターデータベースとして使用できます。

PINECONE_API_KEY=your_pinecone_api_key_here
PINECONE_ENVIRONMENT=your_environment_here

今回の検証では、ローカルデータベースとPineconeを使った場合で動作の大きな差は見られませんでした。


BabyAGIとAutoGPTの違い(まとめとして)

項目BabyAGIAutoGPT
特徴タスクを再帰的に思考・生成し続ける具体的なアクション(ファイル操作など)を実行する
イメージ思想家・プランナー実行者
現状タスク生成・優先順位付けが中心Webブラウジング等の実行まで対応

まとめ

BabyAGIは、目標を与えると再帰的にタスクを生成し続けるAIタスク管理システムです。Dockerを使えば比較的簡単にセットアップでき、日本語でのプロンプト入力にも対応しています。

現時点では、タスクを「考え続ける」フェーズが中心で、AutoGPTのように具体的なアクションを自律実行するところまでは達していない印象です。一方で、目標に対してタスクを階層的に分解し優先順位を付けるというコンセプトは明確で、今後の発展が期待されるプロジェクトです。

まずはローカルのデータベースとDockerで気軽に試してみることができますので、興味のある方はぜひ動かしてみてください。APIの使用量とコストには注意しながら実験してみましょう。