TradingAgents/.kiro/steering/structure.md

5.3 KiB
Raw Blame History

プロジェクト構造: 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)に洞察が保存されます。