【Dockerでワンパン】PokéLLMonを動かしてみる
PokéLLMonは、ポケモンバトルのゲームにおいて、人間並みのパフォーマンスを実現する最初のLLM(Large Language Model)を体現したエージェントです。この記事では、PokéLLMonを実際に動かすための手順を初心者向けに解説します。Dockerを使用して環境を構築し、ローカルでヒューリスティックボットと対戦する方法までを説明します。
こちらの記事もおすすめ
環境構築
まずは、PokéLLMonを動かすための環境を構築することから始めます。Dockerを活用することで、環境依存を最小限に抑えることができます。
Dockerイメージの構築
以下の`Dockerfile`を使用して、必要な環境を構築します。PythonとNode.jsがプリインストールされたイメージをベースにして、PokéLLMonの動作に必要なパッケージをインストールします。
# Python 3.11とNode.js 21を含むイメージをベースに使用
FROM nikolaik/python-nodejs:python3.11-nodejs21
# 必要なツールをインストール
RUN apt-get update && apt-get install -y git curl
# アプリケーションディレクトリを作成
WORKDIR /usr/src/app
# pokemon-showdownリポジトリをクローンし、必要な依存関係をインストール
RUN git clone https://github.com/smogon/pokemon-showdown.git
WORKDIR /usr/src/app/pokemon-showdown
RUN npm install
RUN cp config/config-example.js config/config.js
# PokéLLMon環境の依存関係をインストール
COPY requirements.txt .
RUN pip install -r requirements.txt
# アプリケーションがリッスンするポートを指定
EXPOSE 8000
# アプリケーションを起動するコマンド
CMD [ "node", "pokemon-showdown", "start", "--no-security" ]
Docker Composeを使用したサービスの起動
次に、`docker-compose.yml`ファイルを使用して、サービスを定義します。このファイルを通じて、ポートの設定や環境変数の指定を行います。
version: '3'
services:
pokemon-showdown:
build:
context: .
dockerfile: Dockerfile
ports:
- "8000:8000"
volumes:
- .:/usr/src/app/PokeLLMon
tty: true
env_file:
- .env
OpenAI APIの設定
GPT-4 APIを https://platform.openai.com/account/api-keys から取得します。
プレイヤーの設定
https://play.pokemonshowdown.com/ でアカウントに登録し、パスワードを取得します。
アカウント登録方法はこちら👇
環境変数の設定
`.env`ファイルには、PokéLLMonを動かすために必要な環境変数を設定します。
USERNAME=XXXX
PASSWORD=YYYY
OPENAI_API_KEY=sk-ZZZZ
これらの環境変数は、PokéLLMonを実行する際に、ユーザー認証やOpenAIのAPIを使用するために必要です。
PokéLLMonの起動と対戦
環境構築が完了したら、PokéLLMonを起動し、ポケモンバトルを楽しむことができます。
コンテナの起動
以下のコマンドを実行して、Dockerコンテナをビルドし、起動します。
docker-compose up --build
コンテナ内での操作
コンテナが起動したら、以下のコマンドでコンテナ内に移動します。
docker-compose exec pokemon-showdown /bin/bash
`PokeLLMon`のフォルダに移動します
root@0efdf8c76f75:/usr/src/app/pokemon-showdown# cd ../PokeLLMon/
root@0efdf8c76f75:/usr/src/app/PokeLLMon#
ヒューリスティックボットとの対戦
最後に、以下のコマンドを実行して、ローカルでヒューリスティックボットと対戦します。この時、あなたのユーザー名とパスワードを入力する必要があります。
python vs_bot.py
バトルの可視化
下記の場所にHTMLがあるので、それを開きましょう。
`PokeLLMon\battle_log\pokellmon_vs_ladder_player\win`
バトル動画
まとめ
これで、PokéLLMonを使用してポケモンバトルを楽しむ準備が整いました。
ポケモンバトルで勝利を目指して、頑張ってください!