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_ENDPOINT | Azure OpenAI エンドポイント | https://xxx.openai.azure.com/ |
AZURE_OPENAI_KEY | Azure OpenAI APIキー | xxxxxxxxxxxxxxxx |
AZURE_OPENAI_REALTIME_DEPLOYMENT | Realtime APIデプロイ名 | gpt-4o-realtime-preview |
AZURE_OPENAI_EVALUATION_DEPLOYMENT | 評価用モデルデプロイ名 | gpt-4o-mini |
COSMOS_DB_ENDPOINT | Cosmos DB エンドポイント | https://xxx.documents.azure.com:443/ |
COSMOS_DB_KEY | Cosmos DB プライマリキー | xxxxxxxxxxxxxxxx |
COSMOS_DB_DATABASE | データベース名 | roleplay-db |
AZURE_STORAGE_ACCOUNT_NAME | Storage アカウント名 | stairoleplaydev |
AZURE_STORAGE_ACCOUNT_KEY | Storage アカウントキー | xxxxxxxxxxxxxxxx |
AZURE_STORAGE_CONTAINER | Blob コンテナ名 | 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設定
- Source: GitHubリポジトリを接続
- Build Method: Dockerfile
- Port:
8000 - 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 devhttp://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
- データベース作成:
roleplay-db - コンテナ作成:
scenarios(パーティションキー:/id)sessions(パーティションキー:/userId)
Blob Storage
- コンテナ作成:
avatars - アクセスレベル: Blob (匿名読み取りアクセス)
Azure OpenAI
必要なデプロイメント:
- gpt-4o-realtime-preview: リアルタイム音声会話用
- gpt-4o-mini: 評価・分析用
- dall-e-3 (オプション): アバター画像生成用
📝 ライセンス
Proprietary - 日本光電工業株式会社
🤝 コントリビューション
社内メンバーのみ