TypeScript、Supabase、LangChainを活用した知的な質問応答システムです。専門知識を持つAIエージェントが、ユーザーからの質問に対して質の高い回答を提供します。
主な機能 ✨
- 🔍 直感的な質問投稿と管理機能
- 🤖 LangChainによる高度な回答生成
- 📊 回答の品質評価と継続的な改善
- 👥 ユーザー別の専用インターフェース
- 💾 Supabaseを用いた安全なデータ管理
- 🎯 各分野に特化したAIエージェント
- 📈 詳細なパフォーマンス分析
- 🌐 自動エージェント選択機能
技術スタック 🛠️
フロントエンド
- Next.js (App Router)
- TypeScript
- Tailwind CSS
- Heroicons
バックエンド
- Node.js
- Express
- TypeScript
- LangChain
- Google Gemini Pro
データベース
- Supabase (PostgreSQL)
動作環境 📋
- Node.js (v16以上)
- npm または yarn
- Supabaseアカウント
- Google AI (Gemini Pro) APIキー
セットアップ手順 🚀
-
リポジトリのクローン
git clone <repository-url> cd <repository-name>
-
パッケージのインストール
# バックエンドの依存関係をインストール npm install # フロントエンドの依存関係をインストール cd frontend npm install cd ..
-
環境設定
cp .env.example .env
必要な環境変数:
- GOOGLE_API_KEY: Google Gemini Pro APIキー
- SUPABASE_URL: SupabaseプロジェクトのURL
- SUPABASE_ANON_KEY: Supabaseの匿名キー
- PORT: サーバーポート(デフォルト: 3001)
-
データベースの準備
- Supabaseでプロジェクトを作成
- init.sqlでテーブルを作成
- update_agents.sqlで設定を適用
-
アプリケーションの起動 🎯
バックエンドの起動:
# ルートディレクトリで実行 npm run devサーバーが http://localhost:3001 で起動します
フロントエンドの起動:
# 新しいターミナルを開いて実行 cd frontend npm run dev
アプリケーションが http://localhost:3000 で起動します
※ 両方のサーバーを起動する必要があります。
起動確認:
- フロントエンド: http://localhost:3000 にアクセス
- バックエンドAPI: http://localhost:3001/api/questions でテスト
データベース構成 📚
users(ユーザー管理)
- id: ユーザーID
- name: 名前
- role: 権限
- created_at: 作成日時
questions(質問管理)
- id: 質問ID
- content: 質問内容
- user_id: 質問者ID
- status: 状態
- created_at: 作成日時
answers(回答管理)
- id: 回答ID
- question_id: 質問ID
- content: 回答内容
- score: 評価スコア
- agent_id: 回答者ID
- created_at: 作成日時
agents(AIエージェント管理)
- id: エージェントID
- name: 名前
- description: 説明
- specialization: 専門分野
- prompt_template: 応答テンプレート
- performance_score: 性能評価
- chat_history: 過去の対話履歴
APIエンドポイント 🔄
質問関連
- GET /api/questions - 質問一覧の取得
- GET /api/questions/pending - 未回答質問の取得
- GET /api/questions/:userId - ユーザーごとの質問取得
- POST /api/questions - 新規質問の作成
- POST /api/questions/auto-answer - 自動エージェント選択による回答生成
回答関連
- POST /api/answers - 回答の生成
エージェント関連
- GET /api/agents - エージェント一覧の取得
- POST /api/agents - 新規エージェントの作成
- PUT /api/agents/:id - エージェント情報の更新
- DELETE /api/agents/:id - エージェントの削除
ユーザー関連
- GET /api/users - ユーザー一覧の取得
- POST /api/users - 新規ユーザーの作成
- DELETE /api/users/:id - ユーザーの削除
使い方 🎯
質問をする
- ホーム画面から「質問する」を選択
- 質問を入力して送信
- AIエージェントが自動で回答を生成
- (オプション) 自動モードでは、質問内容に最適なエージェントが自動選択されます
エージェントを管理する
- 「エージェント管理」画面を開く
- エージェントの作成・編集
- 専門分野の設定
- プロンプトテンプレートの作成
- パフォーマンスの確認
ユーザーを管理する
- 管理画面でユーザーを作成
- 適切な権限を設定
- アクセス管理
特化型エージェントの例 🧠
システムには以下のような専門分野に特化したエージェントを作成できます:
- 旅行アドバイザー: 旅行計画、ホテル、観光スポット情報の提供
- 技術コンサルタント: プログラミング、システム設計に関する質問対応
- 健康アドバイザー: 健康、栄養、フィットネスに関するアドバイス
- 金融専門家: 投資、節税、資産運用のアドバイス
- 教育メンター: 学習方法、試験対策のサポート
サンプル質問 ❓
以下のようなクエリに対応できます:
- フランスのパリに5月に旅行予定です。おすすめのホテルエリアと観光スポットを教えてください。
- イタリアのローマとフィレンツェを7日間で回るプランを考えています。効率的な回り方と必見スポットを教えてください。
- Reactでカスタムフックを作成する最適な方法を教えてください。
- 糖質制限ダイエットを始めたいのですが、おすすめの食事メニューはありますか?
- つみたてNISAとiDeCoのメリット・デメリットを比較して教えてください。
セキュリティ対策 🔒
- Supabaseの認証システムを活用
- 環境変数による機密情報の保護
- CORSによる安全なアクセス制御
- 入力データの検証
ライセンス 📝
本プロジェクトはMITライセンスで提供されています。
開発に参加する 👥
- リポジトリをフォーク
- 開発用ブランチを作成
- コードの変更をコミット
- プルリクエストを作成
既知の問題 🐛
現在、重大な問題は報告されていません。
セキュリティ情報 🛡️
重要: セキュリティ脆弱性に関する最新情報については、SECURITY-ADVISORY-CVE-2025-55182.md を参照してください。
- CVE-2025-55182 / CVE-2025-66478: React Server Components における重大なRCE脆弱性
- 対応済み: React 19.0.1、Next.js 15.1.9 に更新済み
- 推奨:
npm installを実行して依存関係を更新してください
サポート 📞
ご不明な点や問題がございましたら、GitHubのIssueにてご連絡ください。