生成AIアプリドキュメント

AIロールプレイアプリ

AIを活用したロールプレイ学習アプリケーション

医療機器営業向けのAI搭載ロールプレイトレーニングアプリケーション。 Azure OpenAIを使用したリアルタイム音声/テキスト会話で、営業スキルを向上させます。

🎯 機能

  • リアルタイム音声会話: Azure OpenAI Realtime APIを使用した自然な音声対話
  • テキストチャット: 音声なしでのテキストベース練習モード
  • AI商談相手: 難易度別(初級・中級・上級)のリアルな顧客シミュレーション
  • リアルタイム分析: 会話中のスコアリングと目標達成トラッキング
  • 詳細評価: セッション終了後の多角的フィードバック
  • 履歴管理: 過去のトレーニングセッションの振り返り

🏗️ アーキテクチャ

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Frontend      │────▶│   Backend       │────▶│  Azure Services │
│   (React)       │     │   (FastAPI)     │     │                 │
│   - Vite        │◀────│   - WebSocket   │◀────│  - OpenAI       │
│   - TailwindCSS │     │   - REST API    │     │  - Cosmos DB    │
└─────────────────┘     └─────────────────┘     │  - Blob Storage │
                                                └─────────────────┘

🚀 デプロイ (Dokploy)

1. 環境変数の設定

Dokployの環境変数に以下を設定してください:

必須

変数名説明
AZURE_OPENAI_ENDPOINTAzure OpenAI エンドポイントhttps://xxx.openai.azure.com/
AZURE_OPENAI_KEYAzure OpenAI APIキーxxxxxxxxxxxxxxxx
AZURE_OPENAI_REALTIME_DEPLOYMENTRealtime APIデプロイ名gpt-4o-realtime-preview
AZURE_OPENAI_EVALUATION_DEPLOYMENT評価用モデルデプロイ名gpt-4o-mini
COSMOS_DB_ENDPOINTCosmos DB エンドポイントhttps://xxx.documents.azure.com:443/
COSMOS_DB_KEYCosmos DB プライマリキーxxxxxxxxxxxxxxxx
COSMOS_DB_DATABASEデータベース名roleplay-db
AZURE_STORAGE_ACCOUNT_NAMEStorage アカウント名stairoleplaydev
AZURE_STORAGE_ACCOUNT_KEYStorage アカウントキーxxxxxxxxxxxxxxxx
AZURE_STORAGE_CONTAINERBlob コンテナ名avatars

オプション(アバター画像生成用)

変数名説明
AZURE_OPENAI_IMAGE_ENDPOINT画像生成用エンドポイントhttps://xxx.openai.azure.com/
AZURE_OPENAI_IMAGE_KEY画像生成用APIキーxxxxxxxxxxxxxxxx
AZURE_OPENAI_IMAGE_DEPLOYMENT画像生成モデル名dall-e-3

その他

変数名説明デフォルト
DEBUGデバッグモードfalse
FRONTEND_URLフロントエンドURL(CORS用)-

2. Dokploy設定

  1. Source: GitHubリポジトリを接続
  2. Build Method: Dockerfile
  3. Port: 8000
  4. Health Check: /api/health

3. デプロイ

# Dockerビルド確認(ローカル)
docker build -t nk-shoudan-dojo .

# テスト実行
docker run -p 8000:8000 --env-file .env nk-shoudan-dojo

💻 ローカル開発

必要条件

  • Python 3.11+
  • Node.js 20+
  • Azure サブスクリプション

セットアップ

# リポジトリをクローン
git clone <repository-url>
cd AI-Roleplay-App

# バックエンド
cd backend
python -m venv .venv
.venv/Scripts/activate  # Windows
source .venv/bin/activate  # Mac/Linux
pip install -e .

# フロントエンド
cd ../frontend
npm install

# 環境変数を設定
cp .env.example .env
# .env を編集して Azure の認証情報を設定

開発サーバー起動

# バックエンド(ターミナル1)
cd backend
uvicorn main:app --reload --port 8000

# フロントエンド(ターミナル2)
cd frontend
npm run dev

http://localhost:3000 でアプリにアクセス

📁 プロジェクト構成

AI-Roleplay-App/
├── backend/
│   ├── app/
│   │   ├── routers/       # APIエンドポイント
│   │   │   ├── health.py
│   │   │   ├── scenarios.py
│   │   │   ├── sessions.py
│   │   │   ├── websocket.py
│   │   │   └── websocket_text.py
│   │   ├── services/      # ビジネスロジック
│   │   │   ├── cosmos_service.py
│   │   │   ├── evaluation_service.py
│   │   │   └── realtime_client.py
│   │   └── config.py      # 設定管理
│   ├── main.py            # アプリエントリーポイント
│   └── pyproject.toml     # Python依存関係
├── frontend/
│   ├── src/
│   │   ├── pages/         # ページコンポーネント
│   │   ├── components/    # 共通コンポーネント
│   │   ├── lib/           # APIクライアント等
│   │   └── types/         # TypeScript型定義
│   └── package.json
├── Dockerfile             # 本番用Docker設定
├── .dockerignore
└── README.md

🔧 Azure リソース設定

Cosmos DB

  1. データベース作成: roleplay-db
  2. コンテナ作成:
    • scenarios (パーティションキー: /id)
    • sessions (パーティションキー: /userId)

Blob Storage

  1. コンテナ作成: avatars
  2. アクセスレベル: Blob (匿名読み取りアクセス)

Azure OpenAI

必要なデプロイメント:

  • gpt-4o-realtime-preview: リアルタイム音声会話用
  • gpt-4o-mini: 評価・分析用
  • dall-e-3 (オプション): アバター画像生成用

📝 ライセンス

Proprietary - 日本光電工業株式会社

🤝 コントリビューション

社内メンバーのみ

On this page