49 lines
5.3 KiB
Markdown
49 lines
5.3 KiB
Markdown
<!-- Inclusion Mode: Always -->
|
||
# プロジェクト構造: 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`)に洞察が保存されます。 |