5.3 KiB
5.3 KiB
プロジェクト構造: TradingAgents
1. ルートディレクトリの構成
プロジェクトのルートには、メインのアプリケーションパッケージ、CLI、ドキュメント、および設定ファイルが含まれています。
tradingagents/: フレームワークのコアとなるPythonソースコードで、インストール可能なパッケージとして構成されています。cli/: 対話型のコマンドラインインターフェースのソースコードが含まれています。main.py:tradingagentsパッケージをプログラム的に使用する方法を示す簡単なスクリプトです。test.py: 特定の機能をテストするためのスクリプトです。assets/:README.mdやドキュメントで使用される画像、スキーマ、その他の静的アセットが含まれています。.kiro/: Kiroのスペック駆動開発用のファイルディレクトリで、ステアリングドキュメントや仕様書が含まれます。.gemini/: Gemini CLIのコマンド定義用ディレクトリです。requirements.txt/pyproject.toml: Pythonの依存関係管理ファイルです。README.md: プロジェクトのメインドキュメントです。
2. サブディレクトリの構造
tradingagents/
これがメインのパッケージディレクトリです。
agents/: すべての個別のAIエージェントのロジックが含まれています。analysts/: 特定の種類のデータ(市場、ニュースなど)を収集・分析するエージェント。researchers/: アナリストの調査結果について議論するエージェント(ブルとベア)。managers/: 議論を進行させ、高レベルの意思決定を行うエージェント(リサーチマネージャー、リスクマネージャー)。trader/: 最終的な取引計画を策定するエージェント。risk_mgmt/: トレーダーの計画を異なるリスク観点から分析するエージェント。utils/: エージェント用の共有ユーティリティ。状態定義(agent_states.py)、メモリ(memory.py)、ツール定義など。
dataflows/: 外部およびローカルのデータソースとのすべてのやり取りを管理します。interface.py: プロジェクトの設定に基づいてデータリクエストを適切なベンダー(例:Alpha Vantage, yfinance, local)にルーティングする重要なファイル。これにより、データバックエンドの構成が非常に柔軟になります。alpha_vantage.py,y_finance.pyなど: ベンダー固有のデータ取得実装。config.py: データベンダーの設定を管理します。
graph/: LangGraphワークフローの構造とロジックを定義します。trading_graph.py: エージェントグラフ全体を構築し、オーケストレーションするメインファイル。setup.py: グラフのノードとエッジの設定を処理します。conditional_logic.py: グラフ内の条件付きエッジのルーティングロジックを定義します(例:議論をいつ終了するかを決定する)。propagation.py: グラフの初期状態の作成を管理します。reflection.py: エージェントが過去の決定を振り返るためのロジックを実装します。
cli/
main.py:typerで構築されたコマンドラインアプリケーションのエントリーポイント。utils.py: CLIのヘルパー関数。対話型プロンプト(questionary)など。models.py: CLIで使用されるPydanticモデルやEnum。static/: ウェルカムメッセージなどの静的テキストファイル。
3. 主要なアーキテクチャ原則
- モジュール性と関心の分離: プロジェクトは、エージェントのロジック(
agents/)、データアクセス(dataflows/)、オーケストレーション(graph/)を分離するように構成されています。これにより、他の部分に影響を与えることなく、単一の部分を簡単に修正または拡張できます。 - 状態駆動のワークフロー: プロセス全体が状態グラフ(
AgentState)によって管理され、各ステップが次のノードに渡される状態を変更します。これにより、明確で追跡可能な実行フローが提供されます。 - 設定可能なデータ抽象化:
dataflows/interface.pyは、エージェントを特定のデータベンダーから切り離す強力な抽象化レイヤーを提供します。これにより、ユーザーはバックテストやコスト削減のために、ライブAPIとローカルデータを簡単に切り替えることができます。 - リフレクティブメモリ: エージェントは、過去のパフォーマンスから学ぶためにリフレクション(振り返り)メカニズムを通じて設計されています。これにより、将来の参照のためにベクトルデータベース(
chromadb)に洞察が保存されます。