./docs/全体構成図.md

---
title: 時代考証アシストAIシステム - 全体構成図
---

graph TB
subgraph "フロントエンド (Next.js)"
UI[ユーザーインターフェース]
ChatInput[チャット入力<br/>画像/テキスト]
AgentResponse[エージェント応答表示]
ThemeProvider[テーマプロバイダー]
end

    subgraph "バックエンドAPI (FastAPI)"
        API[POST /api/analyze]
        JobAPI[GET /api/jobs/:job_id]
        AgentListAPI[GET /api/agents]
        StreamLogic[ストリーミング処理]
        AsyncJobLogic[非同期ジョブ処理]
    end

    subgraph "時代考証エージェント (LangGraph)"
        TaskMgr[タスク管理エージェント]
        ListAll[文字・物体列挙エージェント]
        ListUp[検証観点リストアップエージェント<br/>画像]
        ListUpText[検証観点リストアップエージェント<br/>テキスト]
        Verify[検証エージェント<br/>アンサンブル判定]

        TaskMgr -->|画像入力| ListAll
        TaskMgr -->|画像入力| ListUp
        TaskMgr -->|テキスト入力| ListUpText
        TaskMgr --> Verify
        ListAll -->|enumerated_items| TaskMgr
        ListUp -->|observations| TaskMgr
        ListUpText -->|observations| TaskMgr
        Verify -->|verifications| TaskMgr
    end

    subgraph "LLMモデル (LiteLLM経由)"
        GPT5[GPT-5-mini<br/>デフォルト]
        GPT52[GPT-5.2<br/>アンサンブル]
        Claude[Claude Sonnet 4<br/>アンサンブル]
        Gemini[Gemini 2.5 Flash<br/>アンサンブル]
        GPT5Search[GPT-5<br/>検索用]
    end

    subgraph "外部ツール"
        WebSearch[Web検索ツール<br/>DuckDuckGo]
        ImageSearch[画像検索ツール<br/>DuckDuckGo]
    end

    subgraph "AWS/LocalStack (非同期モード)"
        Lambda[Lambda Worker]
        S3[S3バケット<br/>results/]
        S3Input[S3バケット<br/>inputs/]
    end

    UI --> ChatInput
    ChatInput -->|POST /api/analyze| API

    API -->|同期モード| StreamLogic
    API -->|非同期モード| AsyncJobLogic

    StreamLogic --> TaskMgr
    AsyncJobLogic --> Lambda
    Lambda --> TaskMgr

    Lambda -->|結果保存| S3
    AsyncJobLogic -->|画像/テキスト保存| S3Input

    JobAPI -->|ロングポーリング| S3
    JobAPI --> AgentResponse

    AgentListAPI --> UI

    ListAll --> GPT5
    ListUp --> GPT5
    ListUpText --> GPT5

    Verify -->|Phase1: 曖昧さ判定| GPT52
    Verify -->|Phase1: 曖昧さ判定| Claude
    Verify -->|Phase1: 曖昧さ判定| Gemini
    Verify -->|Phase2: 検索実行| GPT5Search

    GPT5Search --> WebSearch
    GPT5Search --> ImageSearch

    TaskMgr -->|最終結果| StreamLogic
    TaskMgr -->|最終結果| Lambda

    style TaskMgr fill:#e1f5ff
    style ListAll fill:#fff4e6
    style ListUp fill:#fff4e6
    style ListUpText fill:#fff4e6
    style Verify fill:#e8f5e9
    style API fill:#f3e5f5
    style Lambda fill:#fce4ec