Skip to main content
Glama
Agentic Support Agent MCP

Agentic Support Agent MCP

エージェント型カスタマーサポートアシスタント (FastAPI + RAG + MCP)

実際の注文データを検索し、RAG を介して FAQ に基づいたポリシー質問に回答し、問題を解決できない場合は自律的にサポートチケットを発行する eコマース向けサポートエージェントです。これらはすべて、ハードコードされた if/else ロジックではなく、ツール使用ループ内で LLM が決定します。

これは、単純な「ドキュメント Q&A」RAG プロジェクトとは意図的に異なるドメインです(注文検索とチケット作成は、単なる検索ではなくアクションです)。同じアイデアを2回ではなく、履歴書に異なる2つの作品を載せたい場合に役立ちます。

デモの内容

  • エージェント型 AI: マルチステップのツール使用 — 必要に応じて、モデルは1つの会話内で check_order_status → faq_search → create_support_ticket を連鎖させます。

  • FastAPI: Pydantic によるリクエスト検証と自動生成ドキュメントを備えた REST エンドポイント。

  • RAG: ポリシー質問に回答する前に、FAQ ドキュメントをチャンク化し、関連性に基づいて取得します。

  • MCP: 同じ注文/チケット/FAQ ツールが MCP サーバー(app/mcp_server.py)として公開され、この API の外部(例: Claude Desktop)から使用できます。

Related MCP server: Commerce MCP Server

セットアップ

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env   # add your GROQ_API_KEY

実行

uvicorn app.main:app --reload --port 8001

ドキュメントは http://localhost:8001/docs にあります。

例: 完全なエージェント型フロー

curl -X POST http://localhost:8001/agent/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "My order ORD1002 seems delayed and I need it urgently, my email is a@b.com. What can you do?"}'

期待される推論チェーン: check_order_status(ORD1002) → まだ Processing であることを確認 → ポリシーコンテキストのために faq_search("shipping delay") → 顧客のエスカレーションが必要と判断 → create_support_ticket(...) → チケット ID と明確な説明を返します。

モックデータ

  • data/faq.txt — RAG レイヤーが取得元とする返品/配送/キャンセルポリシー。

  • app/tools.py — インメモリのフェイク注文 DB(ORD1001、ORD1002、ORD1003)とチケットストア。本番環境では実際のデータベース/CRM に置き換えてください。ツール関数のシグネチャは同じままです。

MCP サーバーとして実行

python -m app.mcp_server

faq_search、check_order_status、create_support_ticket、get_ticket_status を任意の MCP ホストに公開します。

面接でのアピールポイント

  • ツールが自由テキストではなく構造化された dict を返す理由: LLM は構造化データに対してより確実に推論でき、同じ関数を通常の REST エンドポイント(/orders/{id})とエージェントループの両方で再利用できるようにするためです。

  • システムプロンプトは、FAQ/注文データから回答する場合と比較して、いつチケットにエスカレーションするかをモデルに明示的に指示します — これは重要なエージェント設計上の決定です(チケットを過剰に作成することは、言及に値する一般的な失敗モードです)。

  • max_steps は無限のツール呼び出しループを防ぎます — これはエージェント型システムにおける実際の信頼性上の懸念事項です。

考えられる拡張

  • インメモリ dict の代わりに Postgres にチケット/注文を永続化する。

  • マルチターンのサポートチャット用に /agent/chat 会話 ID + 保存された履歴を追加する。

  • チケット作成時にヒューマン・イン・ザ・ループのエスカレーション(Slack webhook)を追加する。

  • 公開デプロイ前にレート制限と API キー認証を追加する。

Related MCP Connectors

Related MCP Servers