Voyagerインストールメモ

下記内容は、上記リンクに基づいたVoyagerのインストール方法メモです。
VoyagerはMinecraft統合版では動作しません。Java版のみの動作となります。


Voyagerが動作している様子を視聴したい方は、以下動画で視聴できます。



1.Python インストール

1A.Python3.9環境の構築

VoyagerはPython3.9環境が必要です。下記内容ではAnacondaを用いて環境を構築しています。Anacondaがインストールされていない場合は、任意の方法で3.9環境を用意してください。

# Python3.9環境の作成
conda create -n voyager python=3.9 anaconda

# 作成した環境のロード
conda activate voyager

1B.Voyagerインストール

git clone https://github.com/MineDojo/Voyager
cd voyager
pip install -e .

2.Node.js Install

2A.Node.js のインストール

Node.jsがインストールされていない場合、上記リンクよりインストールする必要があります。

2B.mineflayer ラッパー インストール

cd voyager/env/mineflayer
npm install -g npx
npm install
cd mineflayer-collectblock
npx tsc
cd ..
npm install

メモ:

mineflayer-collectblockとは?
このプラグインはmineflayerのラッパーで、ブロックやアイテムドロップを収集する際にAPIをより簡単に使用できるようにします。このプラグインはブロックへのパスファインディング(mineflayer-pathfinderで処理される)、そのブロックを採掘するのに最適なツールの選択(mineflayer-toolで処理される)、実際の採掘、そしてそのブロックからアイテムドロップを収集するための移動といった行為に基づく定型的なコードを減らすように設計されている。このプラグインはこの基本的なコンセプトのすべてを一つのAPI関数にまとめることができる。
https://github.com/PrismarineJS/mineflayer-collectblock

3.Minecraft Instance Install

https://github.com/MineDojo/Voyager/blob/main/installation/minecraft_instance_install.md

Voyager を使い始めるには、まず公式の Minecraft ゲーム(バージョン 1.19)がインストールされていることを確認してください。

Voyager 用の Minecraft インスタンスを起動するには 2 つの方法があります。GPT-4 が無限ループを書き込んで永遠に実行することがあります。この場合、リクエストタイムアウトが発生します。Azure ログインを使うと、リクエストタイムアウトが発生しても自動的に実行を再開できます。

※Gitでは3Aを推奨しているが、うまく動作しなかったため、ゴリラは3Bを実行

3A.Microsoft Azure Login (推奨)

このメソッドを使うと、リクエストタイムアウト時に Voyager が自動的に再開するようになります。これは minecraft-launcher-lib ライブラリに依存します。

  1. Azure Portalにサインインする。

  2. Azure Active Directoryに移動する。

  3. 左パネルの App Registrations タブをクリックします。

  4. New registration ボタンをクリックします。

  5. フォームに以下の値を入力します:

    1. 名前 名前:YOUR_APP_NAME

    2. サポートされるアカウントの種類: サポートされるアカウントの種類:任意の組織ディレクトリのアカウント(任意の Azure AD ディレクトリ - マルチテナント)および個人の Microsoft アカウント

    3. リダイレクトURIタイプ: Public client/native (mobile & desktop)、Value: https://127.0.0.1/auth-response (KeyError: 'access_token' が最後に表示される場合は、タイプを Web に変更してみてください。詳細は FAQ を参照してください)

  6. 登録ボタンをクリックしてください。

  7. アプリケーション(クライアント)IDがあなたのclient_idになります。

  8. オプション] [Certificates & Secrets]タブに移動し、[New client secret]ボタンをクリックします。説明を自分で入力します。Addをクリックすると、値が表示されます。これがあなたのsecret_valueになります。

  9. [YOUR_MINECRAFT_GAME_LOCATION/versions]に移動し、すべてのバージョンを確認します。すべてのフォルダ名があなたの有効なバージョンです。

以上の手順で、ようやく azure_login 情報が得られます:

azure_login = {
    "client_id": "CLIENT_ID FROM STEP 7",
    "redirect_url": "https://127.0.0.1/auth-response",
    "secret_value": "[OPTIONAL] SECRET_KEY FROM STEP 8",
    "version": "MINECRAFT VERSION YOU WANT TO USE",
}

Voyagerはすべての実験を実行するためにfabric-loader-0.14.18-1.19バージョンを使用します。
現在このバージョンを持っていないかもしれませんが、Fabric Mods Installセクションに移動し、そこの指示に従ってファブリックバージョンをインストールしてください。

3B.Minecraft Official Launcher

Minecraft公式ランチャーがあるはずなので、公式ランチャーを開き、こちらの指示に従ってください:

  1. プレイしたいバージョンを選択し、ゲームを開始します。

  2. Singleplayerを選択し、新しいワールドを作成します。

  3. Game ModeをCreativeに、DifficultyをPeacefulに設定します。

  4. ワールド作成後、Escを押し、Open to LANを選択します。
    注意:Open to LANで公開する際、LANワールドのDifficultyをサバイバルに設定してください。Creativeで公開すると、BOTがアイテムを回収できなくなるため、永遠に木をこり続けるようになってしまいます。

  5. Allow cheatsを選択します:チャットログにポート番号が表示されますが、これがあなたのmcポートです。 この番号を使用して後でVoyagerを起動します。
    メモ:mcポートは、「mc_port="mc_num"」で設定します。

4.Fabric Mods Install

https://github.com/MineDojo/Voyager/blob/main/installation/fabric_mods_install.md

おそらくここが一番詰まりやすいと思われます。
MinecraftにModをインストールしていきます。

  1. Java JDK17をインストールします。(JDK20は対応していません。)
    https://www.oracle.com/jp/java/technologies/downloads/#java17

  2. 最新のFabric・インストーラーは、こちらからダウンロードできます。
    https://fabricmc.net/use/installer/
    Windowsユーザーの方は、.exeファイルをダウンロードしてください。MacまたはUbuntuユーザーの方は、jarファイルをダウンロードし、java -jar fabric-installer-0.11.2.jarを呼び出してインストールしてください。
    ゲームのバージョンは1.19、ローダーのバージョンは0.14.18を選択してください。Minecraftゲームのインストール場所を自動的に検出します。

    メモ:
    -Fabricインストールは以下参照するとわかりやすいです。
    https://goli-carft.com/minecraft-fabric-installation/
    -ローダーバージョンは最新のモノを用いても問題ないと思いますが(テスト時:0.14.21)マイクラバージョンは正しく選択してください。

  3. Fabricをインストールすると、YOUR_MINECRAFT_GAME_LOCATION/modsフォルダができます。このフォルダの下にすべてのMODを置く必要があります。
    (例:C:\Users\user_name\AppData\Roaming.minecraft\mods)
    また、YOUR_MINECRAFT_GAME_LOCATION/versions/fabric-loader-0.14.18-1.19ができます。これがゲームを実行するバージョンです。

4.Mod導入

4-1.[メモ]Mod導入の際、過去バージョンModの導入方法

Voyagerではマイクラバージョン1.19を持ちるため、Mod導入の際正しいバージョンを選択する必要があります。

2.Fileを選択する
3.Filterにてマイクラバージョンを設定する。
  1. Modリンクを開く

  2. Fliesを選択する。

  3. Filterにてマイクラバージョンを設定する。

  4. Mod LoadersをFabricに設定する。

  5. Uploadedを最新ソートにして最新ものをインストールする。

4-2.Fabric API

Basic Fabric APIs.
URL:https://www.curseforge.com/minecraft/mc-mods/fabric-api

4-3.Mod Menu

Used to manage all the mods that you download.
https://modrinth.com/mod/modmenu/versions

4-4.CompleteConfig

Dependency of server pause.
https://www.curseforge.com/minecraft/mc-mods/completeconfig

4-5.Multiplayer Server Pause (Fabric)

Used to pause the server when waiting for GPT-4 to reply.
https://www.curseforge.com/minecraft/mc-mods/multiplayer-server-pause-fabric

4-6.Better Respawn

Better Respawnはコンパイルする必要があるため、JDK17をインストールする必要があります。

GIT情報

  • リポジトリをクローンしたら、settings.gradleの最後の行にある'forge'という文字列を削除してください。
    それからgradlew buildを実行してmodをコンパイルします。コンパイルされたjarファイルはbetter-respawn/fabric/build/libs/better-respawn-fabric-1.19-2.0.0.jarにあります。このjarファイルをmodフォルダに入れてください。

    • better-respawnをビルドするにはJava Runtime Environment v17+が必要です。これより新しいバージョンのJREでは、ビルド時にエラーが発生します。JRE v17のアーカイブはこちら。

  • ゲームを起動したら、YOUR_MINECRAFT_GAME_LOCATION/config/better-respawnに移動し、プロパティファイルを以下のように変更します:

respawn_block_range=32
max_respawn_distance=32
min_respawn_distance=0

メモ

  • Better Respawnは、下記URLGITより、Code→Download Zipにてローカルに解凍してください。マイクラディレクトリに置く必要はありません。
    https://github.com/xieleo5/better-respawn/tree/1.19

  • GIT情報では、「最後の行にある'forge'という文字列を削除してください。」と書いてありますが、私の環境では消去すると正しくコンパイルできなかったため、消去せず、「gradlew.bat」にてコンパイルを実施しました。

  • batを実行する際、ログを見たい場合、Powershell等でbatを実行するか、batを編集して最終行に「pause」を記述してください。

  • batを実行し、コンパイル後、jarが生成されない場合、以下リンクより適合するjarをダウンロードしてください。
    https://www.curseforge.com/minecraft/mc-mods/better-respawn

  • Better Respawn 導入ここまで


5.azure_loginのバージョンを使用しているfabric-loader-0.14.18-1.19に変更することを忘れないでください。YOUR_MINECRAFT_GAME_LOCATION/versionフォルダの下にあります。

5.Getting Started

Voyagerは言語モデルとしてOpenAIのGPT-4を使用しています。Voyagerを使うにはOpenAIのAPIキーが必要です。こちらから入手できます。

インストールが完了したら、以下の手順でVoyagerを起動します:
(ローカルにて、main.py等適当なPythonファイルを作成し以下のコードを貼り付けて実行してください。)

Azure の場合

from voyager import Voyager

# You can also use mc_port instead of azure_login, but azure_login is highly recommended
azure_login = {
    "client_id": "YOUR_CLIENT_ID",
    "redirect_url": "https://127.0.0.1/auth-response",
    "secret_value": "[OPTIONAL] YOUR_SECRET_VALUE",
    "version": "fabric-loader-0.14.18-1.19", # the version Voyager is tested on
}
openai_api_key = "YOUR_API_KEY"

voyager = Voyager(
    azure_login=azure_login,
    openai_api_key=openai_api_key,
)

# start lifelong learning
voyager.learn()
  • Azure Loginを初めて実行する場合、コマンドラインの指示に従って設定ファイルを生成するよう求められます。

  • Azureログインのためには、ワールドを選択し、自分でワールドを開いてLANに接続する必要がある。voyager.learn()を実行すると、すぐにゲームがポップアップするので、それを実行する必要がある:
    1. Singleplayerを選択し、Create New Worldを押す。
    2. ゲームモードをクリエイティブに、難易度をピースフルに設定する。
    3.ワールドが作成されたら、Escキーを押し、Open to LANを選択。
    4.チートを許可するを選択します:ON を選択し、Start LAN World を押します。この際、LANワールドの設定はサバイバルにしてください。すぐにボットがワールドに参加するのが見えます。

Official Launcherの場合

from voyager import Voyager

# You can also use mc_port instead of azure_login, but azure_login is highly recommended
openai_api_key = "YOUR_API_KEY"

voyager = Voyager(
    openai_api_key=openai_api_key,
    mc_port="ports num"
)

# start lifelong learning
voyager.learn() 
  • LAN ポートを設定する。
    1. Singleplayerを選択し、Create New Worldを押す。
    2. ゲームモードをクリエイティブに、難易度をピースフルに設定する。
    3.ワールドが作成されたら、Escキーを押し、「LANに公開」を選択。
    4.ゲームモードを「サバイバル」に、チーとの許可を「オン」に設定し、「LANワールドを公開」をクリックします。
    5.チャットメッセージに表示されたポート番号を、メモします。

  • メモしたポート番号を、「mc_port="ports num"」のports numの部分に入力します。

  • Pythonプログラムを動作させるとBotが出現します。

6.セーブロードを可能にする

セーブ

ckpt_dirを以下のように追加することで、BOT動作をセーブすることが出来るようになります。セーブは動作のたびに行われるため、セーブコマンド等はありません。
セーブデータは下記内容では、saveフォルダーに保存されます。

voyager = Voyager(
    openai_api_key=openai_api_key,
    mc_port="49757",
    ckpt_dir="save"
)

ロード

コードを以下のように修正することで、前回のセーブより再開することができます。
セーブデータが存在しない時に、resume=Trueにすると、エラーが発生します。そのため、初回はFalseにする必要があります。

voyager = Voyager(
    openai_api_key=openai_api_key,
    mc_port="49757",
    ckpt_dir="save",
    resume=True
)

7.学習したスキルライブラリを使って特定のタスクのためにVoyagerを実行する

学習したスキルライブラリを使って特定のタスクのためにVoyagerを実行したい場合は、まずスキルライブラリディレクトリをVoyagerに渡す必要がある:

from voyager import Voyager

# First instantiate Voyager with skill_library_dir.
voyager = Voyager(
    azure_login=azure_login,
    openai_api_key=openai_api_key,
    skill_library_dir="./skill_library/trial1", # Load a learned skill library.
    ckpt_dir="YOUR_CKPT_DIR", # Feel free to use a new dir. Do not use the same dir as skill library because new events will still be recorded to ckpt_dir. 
    resume=False, # Do not resume from a skill library because this is not learning.
)

そして、タスク分解を実行することができる。注意時折、タスクの分解が論理的でないことがある。印刷されたサブゴールに欠陥があることに気づいたら、分解を再実行することができる。

# Run task decomposition
task = "YOUR TASK" # e.g. "Craft a diamond pickaxe"
sub_goals = voyager.decompose_task(task=task)

最後に、学習したスキル・ライブラリを使ってサブ目標を実行することができる:

voyager.inference(sub_goals=sub_goals)

すべての有効なスキルライブラリについては、学習済みスキルライブラリを参照してください。

この記事が気に入ったらサポートをしてみませんか?