⚙️ 拡張構想
| 機能 | 概要 |
|---|---|
| 🔄 ストリーミング表示 | OpenAI APIのstreamオプションでリアルタイム出力 |
| 💾 会話履歴保存 | DB保存済み、タイトル自動生成(最初の質問を要約) |
| 🧍♀️ ユーザー認証 | Laravel Sanctumで個別チャット管理 |
| 🎭 AI人格設定 | 「コーチ風」「エンジニア風」などプリセット人格選択 |
| 🧩 ファイル添付 | 画像・PDFをアップロードしてAIに送信(Vision対応) |
OpenAI API の stream: true オプション を使えば、ChatGPTのように1文字ずつ(または文単位)リアルタイムに出力することができます。
ここでは、Laravel + React構成で「リアルタイム出力するChatGPT風チャットUI」を実装する方法を具体的に示します。
| 要素 | 技術 | 役割 |
|---|---|---|
| Laravel | APIサーバ | OpenAI APIを呼び出し、ストリームデータを返す |
| React | フロント | SSE(Server-Sent Events)またはFetchのReadableStreamで逐次受信 |
| OpenAI | GPT-4o / GPT-4o-mini | 返信生成(stream: true) |
💡 改良アイデア
| 機能 | 実装例 |
|---|---|
| ⏳ ローディングアニメーション | isStreaming中にドットアニメーション |
| 💾 履歴保存 | ストリーム完了時にDB保存 |
| 💬 複数チャット管理 | /chat/{id} 単位で履歴ロード |
| 🪶 Markdown対応 | react-markdown でAI出力を整形表示 |
| 🔉 読み上げ機能 | SpeechSynthesis APIと連携 |
💬 機能要件まとめ
| 機能 | 内容 |
|---|---|
| ✅ リアルタイム出力 | OpenAI APIの stream: true を使用してトークン単位で描画 |
| ✅ ローディングアニメーション | ストリーム中に「・・・」を表示 |
| ✅ 複数チャット管理 | チャット一覧 → 選択 → メッセージ表示 |
| ✅ 履歴保存 | DB(chats, messages)に永続化 |
| ✅ UI | ChatGPT風(左サイドにチャットリスト、右に対話画面) |
まずは 「Laravel Blade版のChatGPT風チャットUI(管理画面内統合)」 を構築します。
リアルタイム出力(stream)+ローディングアニメーション+複数チャット管理を、LaravelのBlade内で完結する形にします。
とおもったのだが、最終的には、Reactでフロントエンドを構築するので、最初からそれでいく。