ITADN

Agent in Agent

#226ClosedGeson-anko 创建于 2024-11-13
enhancementrefactoring
G
Geson-ankocommented
## 概要 Agentの中にAgentを持つことで、単純な機能のAgentを複合してより複雑なAgentを実装可能なフレームワークを実装します。 ## 背景と目的 Agentの実装は複雑化し、一つのクラスでマルチモーダル化や時系列対応等を行うことが困難になってきました。 そこで、Agentクラスの中に複数のAgentを実装し、特徴量抽出や時系列予測、行動生成を行い、コードの再利用性や見通しを良くすることが目的です。 ## 提案内容 BaseAgentのコンストラクタ`__init__`に他のAgentのインスタンスを渡せるようにします。 `attach_inference_models`やそのコールバック関数を内部的に呼び出すようにします。 また、破壊的な変更として、`setup`, `teardown`の引数を無くし、また返り値を`None`にします。 予測誤差による報酬計算のための1stepの準備は`common_step`を実装していることから、`step`メソッド内でその判定処理を行い、実行するようにします。 ### スケッチ ```py class BaseAgent: def __init__(self, *agents: BaseAgent) -> None: self._agents = agents def attach_inference_wrappers_dict(self, inference_wrappers_dict): for agent in self._agents: self.agent.attach_inference_wrappers_dict(inference_wrappers_dict) self._inference_wrappers_dict = inference_wrappers_dict self.on_inference_wrappers_dict_attached() def setup(self) -> None: for agent in self._agents: agent.setup() def teardown(self) -> None: for agent in self._agents: agent.teardown() class MultiModalAgent(BaseAgent): def __init__(self, image_encoding_agent, audio_encoding_agent): super().__init__(image_encoding_agent, audio_encoding_agent) ``` ## タスク - [ ] BaseAgentがBaseAgentを受け取れるよう変更 - [ ] モッククラスでテスト ## 参考
关闭于 2024-11-15 0 条评论