AI日程調整エージェント
業務委託
概要
ユーザーとの対話を通じて暗黙的な嗜好を学習し,日程提案の精度を向上させるAIエージェントを設計・開発.LangGraphによる4つのLLMエージェントとルールベース処理を組み合わせたハイブリッドアーキテクチャを採用し,FastAPIバックエンド + Next.js 16フロントエンドのフルスタック構成で実装.
アーキテクチャ
柔軟な意図理解・優先度推定・提案生成にはLLMエージェントを,精密なカレンダー計算や嗜好フィルタリングにはルールベース処理を適用するハイブリッド設計.LLMの柔軟性とルールの正確性を組み合わせることで,ハルシネーションリスクを抑えつつ高精度な日程調整を実現.
Human-in-the-Loop(LangGraphのinterrupt())により,候補確認・追加質問のインタラクティブなループを実装.ユーザーが候補を却下した場合,却下理由をコンテキストとして次回提案に反映し,同じパターンの繰り返しを回避.
- parse_request(LLM): 自然言語リクエストの意図解析と構造化
- estimate_priority(LLM): ミーティング優先度の推定
- extract_free_busy(RULE): カレンダーの空き時間抽出・祝日除外・移動可能イベント検出
- load_memory(STORE): ユーザー嗜好・QA履歴の読み込み
- apply_prefs_filters(RULE): 8種の嗜好フィルタによる候補絞り込み
- propose_schedule(LLM): 学習済み嗜好を考慮した日程候補の提案生成
- confirm / select_questions(HITL): ユーザー確認・追加質問による嗜好学習ループ
メモリ・学習機構
LangGraph Store(BaseStore)を活用し,Semantic Memoryの2つのパターンを実装.Profileパターンでは,ユーザーごとに1ドキュメントの構造化嗜好データを管理し,deep mergeによる差分更新で嗜好を継続的に学習.Collectionパターンでは,QA履歴を追記専用の個別レコードとして蓄積し,過去の対話コンテキストを検索可能な形で保持.
6カテゴリ24種の質問テンプレート(時間帯・予定移動・参加者・形式・スケジュール・負荷)によるプログレッシブな嗜好収集を実装.候補が見つからない場合は,段階的な制約緩和(ランチ枠活用 → 予定移動 → 参加者削減 → 時間短縮 → 期限延長)により探索空間を拡大.
主要機能
嗜好フィルタエンジン: タイムスロットソート,ランチ保護,ハードブロック除外,キャパシティ制限,移動可能イベント判定,作業ブロック再配置,外部/内部優先度制御,任意参加者マッチングの8種のルールベースフィルタを実装.
空き時間解析エンジン: 全参加者のカレンダーを横断的に分析し,祝日除外,ランチタイム検出,移動可能イベント抽出を含む共通空き時間の算出を実現.
フロントエンド: Next.js 16 / React 19によるSPA.FullCalendarによるカレンダー表示,Zustandによるエージェント通信の状態管理,TanStack Queryによるサーバー状態管理,Tailwind CSS 4によるスタイリングを実装.
開発環境・品質管理
pytestによる単体テスト・シナリオテストを整備し,LLMモック・カレンダーフィクスチャによる再現性の高いテスト基盤を構築.LangSmithによるLLMトレーシング・モニタリング,Dockerによるコンテナ化デプロイ,LangGraph Studioによるグラフの可視化・デバッグ環境を整備.Pydantic v2のwith_structured_output()による全LLM出力の型検証を実装.