Skip to content

sonodd/future-diary-agent

Repository files navigation

未来日記エージェント (Future Diary Agent)

未来日記エージェントは、ユーザーが実現したい未来の目標を相談すると、その目標を視覚化した実際の動画と、目標達成までのステップを示した計画案を自動で生成するAIエージェントシステムです。

🌟 主な機能

  • 🎬 実際の動画生成: Google Veo 3を使用した8秒間の720p高品質動画を自動生成
  • 📊 段階的計画作成: 目標達成までの具体的なマイルストーン計画を生成
  • 👥 パーソナライズ: ユーザーのプロフィール(年代、家族構成、興味・関心、現在の状況等)に基づいた個別対応
  • 📅 カレンダー連携: 生成された計画をカレンダー登録用形式で出力
  • 📋 高度な履歴管理:
    • 🎬 動画ファイルの有無でフィルタリング
    • 🙈 不要な履歴の非表示機能
    • 👁️ 非表示履歴の表示切り替え
    • 📊 統計情報とサマリー表示
    • ☁️ Google Cloud Storage永続化: コンテナ再起動後もデータ保持
    • 🔄 自動バックアップ: タイムスタンプ付きバックアップ自動作成
    • 🛠️ データ復旧機能: 履歴消失時の復旧スクリプト提供
  • 🌐 Web フォーム: ブラウザから簡単に計画を作成できる直感的なインターフェース
  • 📋 Web履歴閲覧: ブラウザで動画と計画を確認できる専用インターフェース
  • ▶️ 動画再生・ダウンロード: 生成された動画をブラウザで再生・ダウンロード可能
  • 📺 統合ビュー: 動画とマイルストーンを同一画面で表示する完全な計画体験
  • 🔍 詳細動画説明: 動画生成に失敗した場合でも詳細なシナリオ説明を提供

🏗️ システム構成

アーキテクチャ

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│  Web Interface  │    │  ユーザー       │    │  カレンダー     │
│  (履歴閲覧)     │    │  プロフィール   │    │  アプリ連携     │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         ▼                       ▼                       ▼
┌───────────────────────────────────────────────────────────────────┐
│                   FastAPI REST API + Static Files                │
├───────────────────────────────────────────────────────────────────┤
│                    統合エンジン (Integration)                      │
├───────────────────────────────────────────────────────────────────┤
│  入力処理 │ プロフィール │    動画生成    │ 計画  │ 履歴管理 │
│  エンジン │  分析エンジン │ (Veo 3対応)   │ 生成  │ エンジン │
└───────────────────────────────────────────────────────────────────┘
         │                       │                       │
         ▼                       ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│  Google Veo 3   │    │  Google Gemini  │    │   LangSmith     │
│ + Imagen 3.0    │    │   2.5 Flash     │    │   トレース      │
└─────────────────┘    └─────────────────┘    └─────────────────┘

主要コンポーネント

  1. 入力データ処理エンジン - ユーザープロファイルとVisionを構造化
  2. プロファイル分析エンジン - パーソナライゼーション情報を抽出
  3. 動画生成エンジン - Google Veo 3 + Imagen 3.0を使用した実際の動画生成
  4. マイルストーン計画生成エンジン - 段階的な実行計画を生成
  5. 実行履歴管理エンジン - 過去の実行結果を管理
  6. Web履歴インターフェース - 動画再生・ダウンロード機能付きのWeb UI

🚀 セットアップ

必要要件

  • Python 3.11+
  • Google Gemini API キー
  • LangSmith API キー(オプション)

インストール

  1. リポジトリのクローン
git clone <repository-url>
cd vision-planning-agent
  1. 仮想環境の作成
python -m venv venv
source venv/bin/activate  # Windowsの場合: venv\\Scripts\\activate
  1. 依存関係のインストール
pip install -r requirements.txt
  1. 環境変数の設定
cp .env.example .env
# .envファイルを編集してAPIキーを設定

環境変数

# Google Gemini API設定
GOOGLE_GEMINI_API_KEY=your_google_gemini_api_key_here

# Google Cloud Storage設定(Cloud Run環境用)
USE_GCS=true
GCS_BUCKET_NAME=future-diary-agent-storage

# LangSmith設定(オプション)
LANGSMITH_API_KEY=your_langsmith_api_key_here
LANGSMITH_PROJECT=future-diary-agent

# アプリケーション設定
ENVIRONMENT=development
DEBUG=true

🏃‍♂️ 実行方法

1. ローカル開発サーバー(推奨)

# 仮想環境を有効化
source venv/bin/activate

# 開発サーバーを起動
uvicorn src.future_diary_agent.api.main:app --reload --host 0.0.0.0 --port 8000

2. Docker

# Docker イメージをビルド
# Apple Silicon (M1/M2) Mac の場合は --platform linux/amd64 を指定
docker build -t future-diary-agent .

# コンテナを実行
docker run -p 8000:8080 --env-file .env future-diary-agent

3. Cloud Run(本番デプロイ)

# 簡単デプロイ(推奨)
./deploy.sh YOUR_PROJECT_ID asia-northeast1

# 手動デプロイ
gcloud run deploy future-diary-agent \
  --source . \
  --platform managed \
  --region asia-northeast1 \
  --allow-unauthenticated \
  --memory 2Gi

⚠️ 重要: Apple Silicon (M1/M2) Macでのデプロイ時の注意事項や、トラブルシューティングについては Cloud Run デプロイメントガイド を参照してください。

4. アクセス方法

サーバー起動後、以下のURLでサービスにアクセスできます:

5. 使用例(curlコマンド)

# 計画生成のテスト
curl -X POST "http://localhost:8000/api/generate-plan" \
  -H "Content-Type: application/json" \
  -d '{
    "request_id": "test_001",
    "user_profile": {
      "age": 35,
      "marital_status": "married",
      "children": [{"age": 8, "gender": "male"}],
      "interests": ["旅行", "家族の時間", "写真撮影"],
      "current_situation": "会社員"
    },
    "vision": "3年後に息子とラスベガス旅行に行きたい"
  }'

# 動画ファイルがある履歴のみ取得
curl "http://localhost:8000/api/execution-history?video_only=true&limit=5"

# 履歴を非表示にする
curl -X POST "http://localhost:8000/api/execution-history/exec_1234567890/hide"

# 非表示履歴も含めて取得
curl "http://localhost:8000/api/execution-history?show_hidden=true"

# データ復旧スクリプトの使用
python restore_history.py --list
python restore_history.py --restore execution_history_20250818_051234.json

📡 API 使用方法

1. 計画生成

POST /api/generate-plan

{
  \"user_profile\": {
    \"age\": 35,
    \"marital_status\": \"married\",
    \"children\": [
      {\"age\": 8, \"gender\": \"male\"},
      {\"age\": 5, \"gender\": \"female\"}
    ],
    \"interests\": [\"旅行\", \"家族の時間\", \"写真撮影\"],
    \"current_situation\": \"会社員\",
    \"calendar_categories\": [\"家族\", \"旅行\", \"仕事\"]
  },
  \"vision\": \"3年後に息子とラスベガス旅行に行きたい\"
}

レスポンス例:

{
  \"success\": true,
  \"request_id\": \"req_1234567890\",
  \"result\": {
    \"video_file\": \"base64_encoded_mp4_video_data\",
    \"video_metadata\": {
      \"duration\": 8,
      \"resolution\": \"720p\",
      \"model\": \"veo-3.0-generate-preview\",
      \"audio\": true
    },
    \"milestones\": [
      {
        \"title\": \"旅行予算の計画立案\",
        \"description\": \"ラスベガス旅行に必要な予算を詳細に計算し、貯蓄計画を立てる\",
        \"target_date\": \"2025-02-17\",
        \"priority\": \"high\",
        \"estimated_duration\": 120
      }
    ],
    \"summary\": \"3年間の段階的な旅行準備計画\",
    \"recommendations\": [
      \"各マイルストーンをカレンダーに登録して、定期的にリマインダーを設定しましょう\",
      \"月に1回、進捗を見直して必要に応じて計画を調整しましょう\"
    ]
  },
  \"processing_time\": 45000
}

2. 実行履歴取得(拡張版)

GET /api/execution-history?limit=10&video_only=false&show_hidden=false

パラメータ:

  • limit: 取得件数(1-50、デフォルト: 10)
  • video_only: 動画ファイルがある履歴のみ表示(デフォルト: false)
  • show_hidden: 非表示履歴も含めて表示(デフォルト: false)

レスポンス例:

{
  \"success\": true,
  \"records\": [...],
  \"count\": 5,
  \"limit\": 10,
  \"show_hidden\": false,
  \"video_only\": true
}

3. 履歴の非表示/表示切り替え

POST /api/execution-history/{execution_id}/hide

  • 指定した履歴を非表示にする

POST /api/execution-history/{execution_id}/show

  • 指定した履歴を表示に戻す

4. 動画取得・再生

GET /api/video/{execution_id}

5. 統合ビュー表示

GET /api/view/{execution_id}

動画とマイルストーンを統合したWebページを表示します。

6. デモサンプル取得

GET /api/demo-samples

7. 統計情報取得

GET /api/statistics

🧪 テスト

# 全てのテストを実行
pytest

# カバレッジ付きでテスト実行
pytest --cov=src

# 特定のテストファイルを実行
pytest tests/test_api.py -v

🛠️ 開発

プロジェクト構造

vision-planning-agent/
├── src/future_diary_agent/
│   ├── api/              # FastAPI関連
│   ├── engines/          # 各種処理エンジン
│   ├── models/           # Pydanticモデル
│   └── __init__.py
├── tests/                # テストコード
├── config/               # 設定ファイル
├── docs/                 # ドキュメント
├── data/history/         # ローカル履歴データ
├── static/               # フロントエンドファイル
├── restore_history.py    # データ復旧スクリプト
├── requirements.txt      # 依存関係
├── Dockerfile           # Docker設定
└── README.md

コード品質

# フォーマット
black src/ tests/

# リント
flake8 src/ tests/

# 型チェック
mypy src/

🌟 使用例

例1: 家族旅行計画

入力:

  • 年齢: 35歳
  • 家族構成: 既婚、子供2人(8歳男児、5歳女児)
  • 目標: "3年後に息子とラスベガス旅行に行きたい"

出力:

  • 🎬 実際の動画: 家族でラスベガスを楽しむ8秒間の720p動画(Veo 3生成)
  • 📊 計画: 5つの段階的マイルストーン計画
  • 📅 カレンダー: 登録用テキスト
  • 🌐 Web閲覧: 履歴画面で動画再生・ダウンロード可能

例2: キャリア目標

入力:

  • 年齢: 28歳
  • 家族構成: 独身
  • 目標: "5年後に自分のカフェを開きたい"

出力:

  • 🎬 実際の動画: カフェ経営の理想シーンを映した高品質動画
  • 📊 計画: スキルアップから開業までの詳細計画
  • ✅ ステップ: 実現可能性の高い段階的ステップ
  • 📱 アクセス: Webインターフェースでいつでも確認可能

Webインターフェースの機能

計画作成フォーム(/create)

  1. 📝 直感的フォーム: プロフィールと目標を簡単入力
  2. 🎯 サンプルボタン: 夫婦旅行、キャリア、健康の3種類のサンプル
  3. 👨‍👩‍👧‍👦 動的子供情報: お子様の年齢・性別を追加・削除可能
  4. ⚡ リアルタイム生成: フォーム送信で即座に計画・動画を生成

Web履歴閲覧画面(/history)

  1. 📋 実行履歴一覧: 過去の全ての計画生成結果を表示
  2. 🎬 高度なフィルタリング:
    • 動画ファイルの有無でフィルタリング
    • 非表示履歴の表示/非表示切り替え
  3. 🙈 履歴管理:
    • 不要な履歴を個別に非表示にする機能
    • 非表示履歴を表示に戻す機能
  4. 📺 統合ビュー: 動画とマイルストーンを同一画面で表示
  5. 🎬 動画再生: ブラウザで直接動画を視聴
  6. 💾 動画ダウンロード: MP4ファイルとしてローカル保存
  7. 📊 統計情報: 総実行数・成功数・平均処理時間を表示
  8. 🔍 詳細表示: プロファイル・マイルストーン・動画説明を確認
  9. 📋 プロファイル情報: 年齢、結婚状況、お子様、興味・関心、現在の状況を正確に表示

統合ビューページの特徴

  • 🎯 ワンストップ体験: 動画視聴からマイルストーン確認まで一つの画面で完結
  • 📱 レスポンシブデザイン: モバイル・タブレット・デスクトップに対応
  • 🎨 美しいUI: 直感的で使いやすいインターフェースデザイン
  • ⚡ 高速表示: 効率的な読み込みと快適な操作性

🤝 貢献

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 ライセンス

このプロジェクトはMITライセンスの下で配布されています。詳細はLICENSEファイルを参照してください。

🔗 関連リンク

API・サービス

フレームワーク・ライブラリ

ドキュメント

🛠️ データ管理・復旧

履歴データの永続化

  • ローカル開発: data/history/execution_history.json
  • Cloud Run本番: gs://future-diary-agent-storage/execution_history.json
  • 自動切り替え: USE_GCS環境変数で自動判定

バックアップ・復旧

# 利用可能なバックアップ確認
python restore_history.py --list

# バックアップから復元
python restore_history.py --restore execution_history_YYYYMMDD_HHMMSS.json

# ローカル履歴をCloud Runに同期
gcloud storage cp data/history/execution_history.json gs://future-diary-agent-storage/execution_history.json

自動バックアップ機能

履歴保存時に以下のバックアップが自動作成されます:

  • GCS: gs://future-diary-agent-storage/backups/execution_history_YYYYMMDD_HHMMSS.json
  • ローカル: data/history/execution_history_backup.json

📞 サポート

質問や問題がある場合は、Issueを作成してください。


未来日記エージェント - あなたの夢を現実にする第一歩をサポートします 🌟

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages