システム概要
概要
Playable! General Agent (汎用エージェント) は、チャットボットを通して自然言語によりゲームアプリをテストプレイするためのツールです。
システム構成
汎用エージェントは主に以下の要素から構成されています。
チャットボット
- 汎用エージェントを起動するとチャットボット画面が表示されます。
- チャットボットは LLM(大規模言語モデル)を利用してユーザーが入力したテキストを解析し、コマンド・目的語・位置関係・繰り返し・数量・時間に分解し、エージェント管理が扱うタスク情報に変換します。
- テキスト解析 (LLM) には OpenAI GPT-3.5 API を利用します。
エージェント管理
- エージェント管理はタスク情報を元に、コマンドに対応するビヘイビアツリーの選択、及び、目的語・位置関係に対応するオブジェクトの特定を行い、それらを元にゲームアプリと協調行動するエージェントを実行します。これと並行してエージェント管理は、数量・時間・繰り返しの制御を行うことでタスクを管理します。
ビヘイビアツリーメイカー
- ビヘイビアツリーメイカー画面はチャットボット画面から起動します。
- ビヘイビアツリーメイカーによりビヘイビアツリーを作成します。
- 詳細は以下を参照してください。
音声認識、音声合成
- チャットボットとのインタラクションは音声入出力でも可能です。
- 音声認識には OpenAI Whisper API を利用します。
- 音声合成には以下のいずれかを選択可能です。
- OpenAI STT (Speech to text) API ※デフォルト
- VOICEVOX
関連ファイル
Python
├── .env 環境変数設定データ
├── .env.sample 環境変数設定サンプル
├── b_t_maker.py ビヘイビアツリーメイカー本体
├── general_agent.py 汎用エージェント本体
├── logging.yaml ログ設定データ
├── settings.yaml ツール設定データ
├── test_general_agent.py ツール自体の自動テスト
├── agent エージェント関連
│ ├── agent_manager.py
│ ├── agent_collector
│ │ ├── action_nodes.py
│ │ ├── formats.py
│ │ ├── key_operations.py
│ │ ├── tree_structure.py
│ │ └── trigger_nodes.py
│ ├── agent_executor
│ │ ├── agent_thread.py
│ │ ├── astar_subprocess.py
│ │ ├── dynamic_data_manager.py
│ │ ├── tree_builder.py
│ │ └── wrapper.py
│ └── btm_prompts
│ ├── _base_prompts.py
│ ├── formats_prompts.py
│ ├── item_maker_prompts.py
│ ├── item_selector_prompts.py
│ ├── key_operations_prompts.py
│ └── tree_structure_prompts.py
├── chat_bot チャットボット関連
│ ├── bot_manager.py ボット管理
│ ├── chat_llm.py チャットLLM管理
│ ├── chat_llm_data.py チャットLLMプロンプト
│ ├── chat_window_manager.py チャットウィンドウ管理
│ ├── speech 音声入出力モジュール群
│ │ ├── speech_manager.py 音声入出力管理
│ │ ├── speech_to_text.py 音声入力スレッド
│ │ └── text_to_speech.py 音声出力スレッド
├── data データフォルダ
│ ├── fonts フォントデータ
│ ├── icons アイコン画像
│ ├── Astar_model.pyd
│ ├── _default ワークスペース用デフォルトデータ
│ │ ├── command コマンド関連
│ │ │ ├── command_error_response.yaml コマンドエラーメッセージデータ
│ │ │ ├── command_reference.yaml コマンド定義データ
│ │ │ └── command_sentences.yaml コマンドエイリアスデータ
│ │ ├── object オブジェクト関連
│ │ │ ├── object_reference.yaml オブジェクト定義データ
│ │ │ └── object_sentences.yaml オブジェクトエイリアスデータ
│ │ └── tree_items ビヘイビアツリー関連
│ │ ├── action_nodes.json
│ │ ├── formats.json
│ │ ├── key_operations.json
│ │ ├── tree_structure.json
│ │ └── trigger_nodes.json
│ ├── alfort_work_space ワークスペース
│ │ ├── command コマンド関連
│ │ │ ├── command_error_response.yaml コマンドエラーメッセージデータ
│ │ │ ├── command_reference.yaml コマンド定義データ
│ │ │ └── command_sentences.yaml コマンドエイリアスデータ
│ │ ├── map_data マップデータ
│ │ │ ├── _map_list.yaml
│ │ │ ├── PL_010VIL.png
│ │ │ ├── PL_020RIV.png
│ │ │ ├── PL_030GRP.png
│ │ │ └── PL_050GRH.png
│ │ ├── map_graph マップグラフデータ
│ │ │ ├── PL_010VIL
│ │ │ │ └── graph_data.bin
│ │ │ ├── PL_020RIV
│ │ │ │ └── graph_data.bin
│ │ │ ├── PL_030GRP
│ │ │ │ └── graph_data.bin
│ │ │ └── PL_050GRH
│ │ │ └── graph_data.bin
│ │ ├── object オブジェクト関連
│ │ │ ├── object_reference.yaml オブジェクト定義データ
│ │ │ └── object_sentences.yaml オブジェクトエイリアスデータ
│ │ └── tree_items ビヘイビアツリー関連
│ │ ├── action_nodes.json
│ │ ├── formats.json
│ │ ├── key_operations.json
│ │ ├── tree_structure.json
│ │ └── trigger_nodes.json
│ └── alfort_work_space_base ワークスペースベース
│ ├── command
│ │ ├── command_error_response.yaml
│ │ └── command_sentences.yaml
│ │ ├── command_reference.yaml
│ │ └── command_sentences.yaml
│ ├── map_data
│ │ │ ├── _map_list.yaml
│ │ ├── PL_010VIL.png
│ │ ├── PL_020RIV.png
│ │ ├── PL_030GRP.png
│ │ └── PL_050GRH.png
│ ├── map_graph
│ │ ├── PL_010VIL
│ │ │ └── graph_data.bin
│ │ ├── PL_020RIV
│ │ │ └── graph_data.bin
│ │ ├── PL_030GRP
│ │ │ └── graph_data.bin
│ │ ├── PL_050GRH
│ │ │ └── graph_data.bin
│ ├── object
│ │ ├── object_reference.yaml
│ │ └── object_sentences.yaml
│ └── tree_items
│ ├── action_nodes.json
│ ├── formats.json
│ ├── key_operations.json
│ ├── tree_structure.json
│ └── trigger_nodes.json
├── data_manager データ管理関連
│ ├── _base_manager.py
│ ├── map_manager.py
│ └── static_data_manager.py
├── log ログ出力フォルダ
│ ├── log_{ツール起動日}-{起動時刻}
│ │ ├── astar_{ツール起動日}-{起動時刻}_{pid}.txt Astar関連ログ
│ │ ├── chat_{ツール起動日}-{起動時刻}.txt チャットボットとのやり取りのログ
│ │ ├── llm_{ツール起動日}-{起動時刻}.txt チャットボットのLLM関連処理のログ
│ │ ├── tree_{ツール起動日}-{起動時刻}.txt ビヘイビアツリー関連ログ
│ │ └── error_{ツール起動日}-{起動時刻}.txt エラーログ *エラーが発生した場合のみ生成
│ ...
├── test_tool テスト自動化ツール関連
│ └── test_general_agent_task.py
├── testdata テスト自動化ツール用テストデータ格納フォルダ
│ └── test_sample.txt テストデータサンプル
├── tool_components エージェント管理関連
│ ├── bot_agent.py ボットエージェント管理
│ ├── bot_btm_agent.py ボット BTM エージェント管理
│ └── btm_agent.py BTM エージェント管理
├── user_interface UI 関連
│ ├── _base_view.py ベースビュー
│ ├── bot ボット UI 関連
│ │ ├── map_view.py マップビュー
│ │ ├── running_node_view.py ツリービュー
│ │ └── task_list_view.py タスクリストビュー
│ └── btm BTM UI 関連
│ ├── action_nodes_view.py
│ ├── format_view.py
│ ├── game_info_view.py
│ ├── key_operations_view.py
│ ├── tree_structure_view.py
│ └── trigger_nodes_view.py
└── utils ユーティリティ
├── config.py 設定管理基底クラス
├── dict_searcher.py 辞書参照検索ツール
├── logging.py ログ管理
├── math_utils.py 計算処理
├── messages.py メッセージ定義
├── pseudo_console.py 仮想コンソールビュー
├── settings.py 設定管理
├── singleton.py シングルトン基底クラス
└── timer_task.py 定期処理スレッド
work_space, work_space_base
- work_space と work_space_base は同じ内容でスタートします。
- ツールは work_space のみを読み書きします。
- work_space_base は内部状態リセット時に work_space を初期化するための元データです。こちらはツールによる変更はありません。
備考
ビヘイビアツリーメイカー関連のファイルについては Behavior Tree Maker システム概要 を参照してください。