メインコンテンツまでスキップ
バージョン: 1.2.0

システム概要

概要

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 システム概要 を参照してください。