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

M3プロンプト

T
TKG

ポケモン対戦AI開発プロジェクトのアシスト

Pythonスキルを基にポケモン対戦AIを開発するためのサポートを受ける

本プロンプトは、ポケモン対戦AIを開発することを目的としており、主に初心者開発者が強化学習を用いてAIを開発するためのサポートを提供します。開発の進捗を管理するためのツール選択や、発展的な手法を教えることを目的としています。

プロンプト本文


Gemini との会話

#目的
-LLMの支援をうけながらポケモン対戦AIの開発を計画しています。プロジェクト名はMaple project(machine assisted pokemon lerning environment)です。

#役割設定
-あなたは私のポケモンAI開発プロジェクトのアシスタントです。私のAI開発をサポートしてください。

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

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

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


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

#M3のバックログ
-ユーザーストーリー 1: 開発者として、AI が参照する状態情報を定義し、プログラム上で扱いやすい形にまとめたい
・背景・目的
poke-env から得られる対戦状況(自分・相手のポケモン情報、HP、技の使用可能状況、天候や場の状態など)は非常に多岐にわたる。今後の強化学習やルールベースAI開発に向けて、どの情報をどのようにまとめるかを決める必要がある。

-タスク 1.1: 状態として表現すべき対戦情報の洗い出し
・内容: AIの意思決定に必要と思われる情報をリストアップする(例: 自分のポケモンのHP、能力ランク、状態異常、場の効果、相手のポケモンの情報(分かっている範囲)、技のPPなど)。
・受け入れ基準: 状態として含めるべき情報のリストが作成されている。
-タスク 1.2: poke-envのBattleオブジェクトから必要な情報を取得する方法の調査
・内容: Battleオブジェクトの属性やメソッドを調査し、タスク1.1でリストアップした情報を取得できるか確認する。
・受け入れ基準: 各情報に対応するBattleオブジェクトの属性/メソッドが特定されている。取得が難しい情報があれば、それも明確になっている。
-タスク 1.3: 状態情報の表現形式の決定
・内容: 取得した情報をAIが扱いやすい形式(数値ベクトル、辞書など)に変換する方法を決定する。正規化(例: HPを0~1の範囲にする)やカテゴリカルな情報のエンコーディング方法も検討する。
・受け入れ基準: 各状態情報をどのように数値やカテゴリに変換するかのルールが定義されている。状態全体のデータ構造(例: ベクトルの各要素が何を表すか)が明確になっている。
-タスク 1.4: 状態観測関数の実装
・内容: Battleオブジェクトを入力として受け取り、タスク1.3で定義した形式の状態表現を出力する関数(またはクラスメソッド)を実装する。
・受け入れ基準: Battleオブジェクトを渡すと、定義された形式の状態データが返される関数が実装され、テストされている。

-ユーザーストーリー 2: 開発者として、AI が取りうる行動の定義(行動空間)を行い、プログラム上で管理したい
・背景・目的
ポケモンバトルの行動には「技選択」だけでなく「交代」や「ダイマックス」「テラスタル」など世代特有の要素が存在する(第9世代ではテラスタル)。必要な行動種を洗い出したうえで、どのようにコーディング・管理するかを整理する。

-タスク 2.1: AIが取りうる基本的な行動の洗い出し
・内容: ポケモン対戦におけるプレイヤーの選択肢(技1-4、交代1-5、(将来的に)テラスタル)をリストアップする。
・受け入れ基準: AIが選択すべき行動の種類が明確になっている。
-タスク 2.2: poke-envで利用可能な行動を取得する方法の確認
・内容: Battleオブジェクトから現在選択可能な行動(技、交代先)のリストを取得する方法を確認する(例: battle.available_moves, battle.available_switches)。
・受け入れ基準: 現在の状況で実行可能な行動のリストをBattleオブジェクトから取得できることが確認されている。
-タスク 2.3: 行動空間の表現形式の決定
・内容: タスク2.1で洗い出した行動を、AIが扱いやすい形式(例: 0-3を技1~4、4-7をテラスタル+技1~4、8,9を交代に対応させるインデックス)にマッピングする方法を決定する。
・受け入れ基準: 各行動とそれを表すインデックス(または他の識別子)の対応ルールが定義されている。行動空間全体のサイズ(取りうる選択肢の総数)が明確になっている。
-タスク 2.4: 行動選択ヘルパー関数の実装
・内容: Battleオブジェクトを入力として受け取り、タスク2.3で定義した形式で表現された「現在可能な行動のリスト」を出力する関数を実装する。また、AIが選択した行動インデックスをpoke-envが理解できる形式(MoveオブジェクトやPokemonオブジェクト)に変換する関数も実装する。
・受け入れ基準: Battleオブジェクトから、定義した形式で利用可能な行動リストを取得できる関数と、選択した行動インデックスをpoke-envの形式に変換する関数が実装され、テストされている。

-ユーザーストーリー 3: 開発者として、定義した状態・行動空間を用いてルールベースAIを試作し、その挙動を確認したい
・背景・目的
強化学習の前段階として、まずはルールベース(if/else や簡易的なロジック)で動作する AI を作成し、状態・行動空間の定義が妥当かを検証する。ルールベースAIがうまく動けば、次のステップ(強化学習)のベースラインとなる。

-タスク 3.1: ルールベースAI用Playerクラスの作成
・内容: M2で作成したMySimplePlayerを参考に、poke_env.player.Playerを継承した新しいクラス(例: RuleBasedPlayer)を作成する。
・受け入れ基準: RuleBasedPlayer.pyファイルが作成され、クラス定義とchoose_moveメソッドの基本的な枠組みが記述されている。
-タスク 3.2: choose_moveメソッドへの状態・行動観測の組み込み
・内容: choose_moveメソッド内で、タスク1.4で実装した状態観測関数と、タスク2.4で実装した行動取得関数を呼び出し、現在の状態と可能な行動を取得する処理を追加する。
・受け入れ基準: choose_moveメソッドが呼び出されるたびに、現在の対戦状態と選択可能な行動が、定義した形式で取得できている。
-タスク 3.3: 最初のルールベースロジックの実装(例: ランダム選択)
・内容: まずは最も単純なルールとして、取得した「可能な行動リスト」の中からランダムに行動を選択し、それをpoke-env形式に変換して返すロジックをchoose_moveメソッド内に実装する。
・受け入れ基準: RuleBasedPlayerが、エラーを起こさずにランダムな有効手を選択して対戦を実行できる。
-タスク 3.4: より具体的なルールの実装(例: 効果抜群の技優先)
・内容: 状態情報(相手ポケモンのタイプなど)と可能な技リストを利用し、「相手に効果抜群の技があれば、その中で最も威力が高い技を選択する」といったルールを実装する。該当する技がなければ、別のルール(例: ランダムな技)にフォールバックする。
・受け入れ基準: 特定の条件下(相手に効果抜群の技がある場合など)で、ルールに基づいた技選択が行われることが確認できる。
タスク 3.5行動と結果の出力
内容: 行動と結果を簡易ログに出力し、ルールベースAIの挙動が妥当かを分析できるようにする。
受け入れ基準: ターンごとに「選択された技or交代」などが表示され、開発者がルールに対して意図通りの挙動になっているか判断できること。

-ユーザーストーリー 4: 開発者として、ルールベースAI の評価や改善の方向性を考えるために、対戦データを収集・可視化したい
・背景・目的
ルールベースAI の完成度合いを把握し、強化学習導入前に改善点を洗い出す。簡単な勝率や、どのような状況で負けやすいかなどを把握できるようにしたい。

-タスク 4.1: ルールベースAI同士の対戦テスト
・内容: M2で作成した対戦実行スクリプトを修正し、2つのRuleBasedPlayerインスタンス同士で対戦を複数戦(例えば10戦)実行する。
・受け入れ基準: ルールベースAI同士の対戦が最後まで実行され、勝敗が決まる。対戦中にエラーが発生しない。
-タスク4.2:情報の収集
・内容:タスク4.1で実行した対戦について、勝率やターン数などのメトリクスを収集するスクリプトを作成する。
・受け入れ基準: 「○試合中 ○勝○敗、平均ターン数 ○ターン」などの結果が CSV やコンソール出力で確認できる。
-タスク4.3:収集したデータを簡単に可視化、分析する
・内容:matplotlibを使ったグラフなどで情報を分析する
・受け入れ基準:勝率推移や平均ダメージ量など必要な指標をグラフや統計データの形で確認できる
-タスク 4.4 ルールベースAI vs ランダムAIの対戦テスト
・内容: RuleBasedPlayerとpoke-env提供のRandomPlayerを対戦させる。
・受け入れ基準: 対戦が最後まで実行され、勝敗が決まる。ルールベースAIがランダムAIに対してある程度の勝率を示すことが期待される(ルールの有効性による)。
-タスク 4.5 対戦ログとデバッグ情報の拡充
・内容: AIがどの状態を認識し、どのルールに基づいてどの行動を選択したかを出力するログ機能を追加する。choose_moveメソッド内での判断プロセスが追えるようにする。
・受け入れ基準: 対戦中にAIの選択とその理由(適用されたルールなど)がsコンソールやファイルに出力され、デバッグや分析に利用できる。



#M3の完了条件
1.状態空間・行動空間が定義され、ドキュメントやスプレッドシートなどにまとめられている。
2.ルールベースAI が実装され、少なくともランダムAI と対戦して最後まで進行できる。
3.ルールベースAI の動作ログ(行動選択や勝敗結果)がある程度確認できる。
4.簡単な勝率や試合内容を集計して、ルールベースAI の改善・強化学習への展望を検討できる段階にある。

#現在の進捗状況
- M2を完了しました
- M3を完了しました

#添付ファイル
-現在までの成果物です


#次のステップ




#開発における現時点での制限


#命令
次のステップ
命令
運営会社
利用規約
プロンプトエンジニア一覧
プロンプトエンジニア育成講座
©2025 生成AIプロンプト研究所「チャプロ」 All rights reserved.