こんにちは。ファンリピートの鳴海です。
VoyagerというMinecraftでまるで人間が操作しているかのように木を掘ったり、ピッケルを作ったりと自らAIが学習して進めるという驚愕的な内容について説明していこうと思います。
どんなものか?
自身のサーバーにbotというのが参加し、設定されたタスクにおいて、どのように行えばいいかというのをOpenAIにリクエストし、返却された値をスクリプト化して実行しているみたいです。
左がminecraftの画面で、右がスクリプト実行画面です。
歩いて、木を獲得している動画
石を掘るためにピッケル作成
石を掘る
Minecraftとは
Minecraftは、独特なゲーム体験と幅広い人気を誇るサンドボックス型ビデオゲームになっています。
開発の歴史

スウェーデンのソフトウェアプログラマーのマルクス・ぺルソン(Notch)によって2009年にMojang Specificationsを設立し、Minecraftが開発されました。
公式リリースとしては、2010年5月にユーザーがプレイ可能なアルファ版がリリースされて、2011年11月に正式にリリースされたとのことです。
また、2014年にMicrosoftがMojangを約25億ドルで買収し、Minecraftの開発及び管理など引き継ぎ、強力なブランドとプレイヤーベースを獲得し、ゲームを活用した学習体験にも力を入れたとのことです。

ゲームの特徴

土や木といった3Dブロックで構成されたシンプルなグラフィックスで、プレイヤーが仮想環境を操作する自由自在なオープンワールドのゲームです。RPG要素としても備わっており、ゾンビやスケルトン、洞窟などといった冒険もすることが可能になっています。
人気度
2023年時点でMinecraftは、史上2番目に高い売上を記録したゲームとなっており、特に10代層に人気があるとのことでした。
Minecraftのプランの中に、「Minecraft: Education Edition」という教育目的で、学校のカリキュラムでコーディング、歴史、地理、数学などの分野で創造性と問題解決能力を養うことができるようになっており、今後もそういった世界中の多くの学校のカリキュラムに取り入れていくみたいです。

Voyagerとは
OpenAIのGPT-4を活用した学習型のbotとなっており、人間の操作なしに探索や探検を自ら行うボットになります。
Voyagerの概要

自動カリキュラム、スキルライブラリ、および環境フィードバックを取り入れた反復プロンプトメカニズムという三つに構成されており、自動的な操作が可能になっています。
Voyagerと従来のAI手法の違い

今までは大量のデータを読み込ませてAIを学習させて、行動させるという基本的な行動を行ってきましたが、それでは人間のような探索、解釈などが難しいということがありました。
ですが、OpenAIのLLM(自然言語モデル)という言葉を理解して処理を行うという技術を使っているため、どのようなタスクや内容においてもそのツールを行い、実行するためのコードを生成して、評価を行うことで動作の自動化を行えるようになっています。
Voyagerの実装と運用

Voyagerには、実行結果やエラーのフィードバックを通じて自動的にコードを修正する機能が含まれています。
そのため、タスクに成功した場合のみ、そのコードがスキルライブラリに保存され、後に同様の状況で再利用することができます。
また、OpenAI APIの利用には1時間あたり約5ドルのコストがかかります。さらに、Voyagerを実行すると、イベントの履歴などがプロジェクトルートにある/ckptディレクトリに保存され、GPTへのリクエストも公開されているため、私が普段使っているchatgptにおいても、参考になるようなプロンプトがあるかもしれません。
OpenAIとは
上記で度々でてきたOpenAIについて、簡単な説明をしたいと思います。
OpenAIについての概要

人工知能(AI)分野の研究と開発を目的とする非営利団体です。
2015年に設立され、イーロン・マスクやサム・アルトマンなどの著名な技術者や起業家によって支援されています。OpenAIの主な目標は、人類全体に利益をもたらすことができる安全で強力なAIを開発することです。
OpenAIの主要プロジェクト

多くの注目すべきプロジェクトを手掛けています。
その中でも特に知られているのが、自然言語処理における先進的なモデル「GPT」シリーズです。
GPT-3や最近のGPT-4は、深層学習を用いて人間のようなテキストを生成する能力を持ち、多くの産業で応用されています。また、コンピュータビジョンやロボティクス分野でも革新的な研究を行っており、AIの可能性を広げています。
OpenAIの影響と未来

OpenAIの取り組みは、AI技術の発展に大きな影響を与えています。
特に、教育、医療、エンターテイメントなど様々な分野でのAIの応用は、社会に新たな価値をもたらしています。今後もOpenAIは、AIの倫理的な使用を推進し、安全で責任あるAI技術の開発に貢献することが期待されています。
構築方法について
主に下記GithubのREADME.mdで説明していければなと思います。
また私の環境はWindowsとなっていますので、macの方はREADME.mdの方を参考にしていただければなと思います。
はじめに
コマンドプロンプトで以下を実行し、Voyagerのクローン、pythonライブラリのインストールを行います。
git clone https://github.com/MineDojo/Voyager
cd Voyager
pip install -e .
次にNode.jsをインストールします。
cd voyager/env/mineflayer
npm install -g npx
npm install
cd mineflayer-collectblock
npx tsc
cd ..
npm install
Minecraftの準備
Voyager側でもしタイムアウトが発生した場合、手動で再起動させないといけないのですが、それを自動化してくれる機能がAzure側で提供されていますが、一時的に試したいことであれば飛ばしていただいて問題ありません。
完全自動化したい方は下記のMicrosoft Azure Loginを参照してください。
FabricというMOD(Voyagerを動作させるために必要なライブラリ)を読み込ませるために、下記サイトで、1.19versionをインストールします。

次にダウンロードしたfabricを開き、Minecraftのversionを1.9にしてinstallします。

次にMinecraft launcherを開き、赤枠のランチャーを指定し、プレイを押下します。

左下にfabricと表示されていればOKです。

MODの追加
YOUR_MINECRAFT_GAME_LOCATION/modsのフォルダに以下それぞれを1.9のversionに対応するようにインストールします。
※READMEでは、Better Respawnをコンパイルしていれないといけないのですが、少し手順が複雑なので、スキップします。
- https://modrinth.com/mod/fabric-api/version/0.58.0+1.19
- https://cdn.modrinth.com/data/mOgUt4GM/versions/4.0.4/modmenu-4.0.4.jar
- https://www.curseforge.com/minecraft/mc-mods/completeconfig/download/3821056
- https://www.curseforge.com/minecraft/mc-mods/multiplayer-server-pause-fabric/download/3822586

スクリプトの実行
次にVoyagerを実行させるためのファイルを作成します。
from voyager import Voyager
openai_api_key = "${OpenaiのAPIキー}"
voyager = Voyager(
openai_api_key=openai_api_key,
mc_port="${ポート番号}",
resume=False
)
# start lifelong learning
voyager.learn()

${OpenaiのAPIキー}に入力を忘れないように注意してください。
ポート番号は、サーバーを作成しないといけないので、Minecraftの画面からシングルプレイ>ゲームモードをクリエイティブ>難易度をピースフルにして、作成します。

作成後にEscを押下>LANに公開>ゲームモードをサバイバル、チートを許可をONにして、公開します。

そうするとチャット欄にポート番号が表示されるので、そちらを先ほどのスクリプト内の${ポート番号}に置き換えします。

そして、Voyager側で、以下コマンドを実行するとbotがサーバーに入り、自動的に探索が始まります。
python main.py
まとめ
今回はVoyagerについて解説しました。
OpenAIの言語モデルでもはや人間のように探索している姿を見ていて、本当にAIモデルが進化しているなと感じました。