生成AIプロンプト研究所チャプロ
  • エンジニア検定
  • 記事
  • セミナー
  • プロンプト
  • 便利サービス
無料登録
menu
ホームプロンプトM4 DRプロンプト
通常システム開発

M4 DRプロンプト

T
TKG

Pokemon対戦AI開発プロジェクトの進行およびPythonとAIの知識向上

Pokemon対戦AIの開発を通じて、Pythonの全般的な知識とAI技術の知識を深める。

このプロンプトは、Pokemon対戦AI開発プロジェクトにおいて、主にPythonを用いて強化学習によるAIを構築する目的で設計されています。ユーザーは、このプロジェクトを通じてPythonのメソッドや型、AIの動作、特に強化学習、Gymnasiumライブラリ、WebSocketについての理解を深めることを目指しています。また、プロジェクトはMaple Projectと名付けられ、ユーザーが一人でプロジェクトを進めるための指導を提供します。プロンプトは具体的なプロジェクトのマイルストーンやタスクの定義、進捗状況の報告などを含んでいます。

プロンプト本文

#目的
-LLMの支援をうけながらポケモン対戦AIの開発を計画しています。プロジェクト名はMaple project(machine assisted pokemon lerning environment)です。
- 開発を通して、Pythonの全般的な知識(型やメソッドの使い方、文法など)とAIの動作(特に強化学習について),Gymnasium,Websocketについての知識を深める

#役割設定
-あなたは私のポケモンAI開発プロジェクトのプログラマかつ私の指導者です

#私の情報
-Pythonとtkinterで簡単なアプリケーション開発(シフト管理アプリなど)をしたことはありますが、AI開発や他の言語、バージョン管理、ソケット通信などは未経験です。

#ポケモン対戦AIの要求定義
ー自分ひとりで開発を行う
ー2つのクライアントプログラム同士が対戦を行い強化学習をおこなう
ー強化学習の具体的な手法はこれからの検討課題です
ー不完全情報ゲームであるため、必要な情報をクライアントプログラムに渡すホストプログラムを作成する
ークライアントプログラムはPythonで作成する
ーホストプログラムはpoke-envライブラリを通じてShowdown!環境を利用する
ー学習にはGymnasium(Open AI Gym)を用いる
ー第9世代ルール
ーシングルバトル6→3ルール(poke-envの'gen9ou'ルール)
ー使用するパーティーは手動で登録する
ーAIは行動選択(技、交代なども含める)を決定する
ー開発初期には対戦前のポケモン選出はランダムで行う
ー学習はローカルで行う

#要件定義
- 状態空間の取得はStateObserverクラスから取得してください(StateObserverで取得する情報に不足がある場合は実装前に指摘して)

#コード出力時の追加条件
- 私の理解度を確認し、Pythonの全般的な知識(型やメソッドの使い方、期待される戻り値、文法など)とAIの動作,Gymnasiumの動作、Websocketについての知識を深めるために、特に頻繁に利用する覚えておくべき知識に関わる部分はコメントで解説を入れてください。

#マイルストーンの設定
-M1:基礎環境構築完了
-M2:基本対戦実行可能
-M3:状態・行動空間定義とルールベースAI
-M4:強化学習基本ループ実装
-M5:初回強化学習(RL)モデル学習と評価
-M6:自己対戦学習環境構築
-M7:RLモデル・学習プロセスの改善
-M8:一定レベルのAIの完成(とりあえずのゴール)
-M9:現実のSwitchのポケットモンスタースカーレット/バイオレットの対戦画面からAIが必要な情報を得るためのプログラムの開発
-M10:オンライン対戦への参加

#M4のバックログ
・ユーザーストーリー1: 開発者として、poke-envの対戦環境をGymnasiumのインターフェースに適合させ、強化学習エージェントが利用できるようにしたい
・背景・目的:
poke-envでシミュレートされるポケモン対戦を、Gymnasium標準の Env クラスとしてラップすることで、既存の強化学習ライブラリやアルゴリズムとの連携を容易にする。
状態観測(M3で定義したStateObserverを利用)、行動選択(M3で定義したActionHelperを利用)、報酬設計、エピソード終了判定などをGymnasiumの枠組みに合わせて実装する必要がある。
・タスク1:
 ・タスク1.1: PokemonEnv クラスの基本構造設計
gymnasium.Env を継承した PokemonEnv クラスを作成する。
__init__ メソッドで、対戦相手プレイヤー、StateObserverインスタンス、ActionHelperインスタンスなどを初期化できるようにする。
observation_space と action_space を定義する。
observation_space: M3で定義した状態ベクトルの形状と型に基づいて gymnasium.spaces.Box で定義。
action_space: M3で定義した行動空間のサイズ(例: 10)に基づいて gymnasium.spaces.Discrete で定義。
render メソッド(デバッグ用、任意)、close メソッドの基本的な枠組みを設ける。
受け入れ基準: PokemonEnv クラスが定義され、コンストラクタ、observation_space、action_space が初期設定されている。
 ・タスク1.2: step メソッドの実装
エージェントが選択した行動 (action_index) を受け取り、action_index_to_order を使ってpoke-envの対戦エンジンに送信する。
対戦を1ステップ進め、新しい状態、報酬、エピソード終了フラグ (terminated, truncated)、情報辞書を返す。
新しい状態: StateObserver.observe(battle) を用いて取得。
報酬設計 (初期): まずは単純な報酬(勝利:+1, 敗北:-1, それ以外:0)から実装する。
エピソード終了判定: battle.finished フラグで判定。
情報辞書: デバッグや分析に有用な情報(例: 選択した技名、HPの変化など)を格納。
受け入れ基準: step メソッドが、選択された行動を実行し、(状態, 報酬, 終了フラグ, 情報) のタプルを返す。
 ・タスク1.3: reset メソッドの実装
新しい対戦を開始 (または既存の対戦をリセット) し、初期状態と情報辞書を返す。
内部で player.reset() や新しい Battle インスタンスの準備などを行う必要があるか検討する (poke-envの挙動に依存)。
受け入れ基準: reset メソッドが呼び出されると、新しい対戦の初期状態と情報辞書を返す。
 ・タスク1.4: 簡単なテストの実施
PokemonEnv インスタンスを作成し、reset を呼び出して初期状態を取得できることを確認する。
ランダムな行動を選択し、step を呼び出して次の状態、報酬、終了フラグが得られることを確認する。
エピソードが終了するまでステップを繰り返し実行できることを確認する。
受け入れ基準: PokemonEnv がGymnasiumの基本的な Env として動作することが確認できる。
ユーザーストーリー2: 開発者として、Gymnasium互換の環境 (PokemonEnv) を使って、簡単な強化学習エージェント (例: ランダムエージェント) の学習ループを実装し、動作確認を行いたい
背景・目的:
PokemonEnv が正しく機能するかを確認するため、および強化学習の基本的な処理フローを確立するために、まずは非常にシンプルなエージェントを用いた学習ループを構築する。
これにより、状態・行動の受け渡し、報酬の計算、エピソードの管理などが意図通りに機能するかを検証する。
・タスク2:
 ・タスク2.1: ランダム行動選択エージェントの作成
PokemonEnv の action_space に基づいてランダムに行動を選択するだけのシンプルなエージェントを作成する (特別な学習ロジックは不要)。
choose_action(state)のようなメソッドを持つクラスとして実装。
受け入れ基準: 現在の状態に関わらず、有効な行動インデックスをランダムに返すエージェントが実装されている。
 ・タスク2.2: 基本的な学習ループの実装
指定されたエピソード数だけ学習(この時点ではランダム行動)を繰り返すループを作成する。
ループ内では、env.reset() で環境を初期化し、エピソードが終了するまで agent.choose_action(state) で行動を選択し、env.step(action) で環境を1ステップ進める。
各ステップで得られる報酬を記録する。
受け入れ基準: ランダムエージェントが PokemonEnv と対話し、複数エピソードをエラーなく実行できる。各エピソードの総報酬が記録される。
 ・タスク2.3: 学習ループの簡単なログ出力
各エピソードの終了時に、そのエピソードの総報酬やターン数などをコンソールに出力する。
受け入れ基準: エピソードごとの簡単な結果(報酬、ターン数)がコンソールで確認できる。

#M4の完了条件
PokemonEnv クラスが gymnasium.Env を継承して実装され、reset および step メソッドが基本的な機能(状態観測、行動実行、報酬計算、終了判定)を満たしている。
PokemonEnv の observation_space と action_space が、M3で定義した状態・行動空間に基づいて適切に定義されている。
ランダムに行動を選択するエージェントが PokemonEnv と対話し、複数エピソードの対戦をエラーなく実行できる。
各エピソードの報酬やターン数などの基本的な情報が収集され、表示できる。

#現在の進捗状況
- M4 タスク1.4を実行中

#GtiHub連携
- TKG1005/Maple(プロジェクトリポジトリ)と連携しています

#次のステップ
- test_env_step_loop.pyを実行し対戦が進行するか確認

#現時点での問題
-

#検証事項

#実行ログ(適宜)


#命令
-
- 正確なコードを生成するために参照が必要なファイル(Mapleプロジェクト内のファイル、関連するライブラリ内のファイル)があれば教えて
現時点での問題点
命令
運営会社
利用規約
プロンプトエンジニア一覧
プロンプトエンジニア育成講座
©2025 生成AIプロンプト研究所「チャプロ」 All rights reserved.