【設計編】AIに「判断」をさせる技術。メール自動トリアージの共通プロンプト設計

AI
スポンサーリンク

みなさん、こんにちは!業務ハックLabのようです。

はい、気づけばもう大晦日ですね! 12月初めに新たにブログサイトをオープンしてから14本ほど記事を書かせていただきましたが、年内最後のテーマは「生成AIによる業務自動化」です。 年末年始の休暇中に、ちょっとシステムを作ってみようかな、という方にもピッタリの内容になってますので、ぜひ最後まで読んでいってください!

ただの「要約」で満足していませんか?

「生成AIを業務に導入したい」という相談が増えていますが、多くの現場が「文章の要約」で止まってしまっています。

はい、もったいないですよね!

AIの真価は「判断(トリアージ)」にあるんです。

本シリーズでは、日々届く大量のお客様メールをAIが自動で読み込み、「緊急クレームか?」「ただの営業メールか?」を判断し、適切な担当者へ振り分けるシステムを構築します。

第1回となる今回は、Google WorkspaceでもMicrosoft 365でも使える「システム設計とプロンプトエンジニアリング」について解説します。

作成するシステムの全体像

今回構築するのは、以下のフローを持つ「メール自動トリアージシステム」です。

Input: メールを受信(Gmail / Outlook)

Process: 生成AIが内容を解析(Gemini / Azure OpenAI)

Logic: 解析結果に基づいて分岐(GAS / Power Automate)

Output: データベース保存&チャット通知(Sheets+Slack / SharePoint+Teams)

はい、いいですね!

このアーキテクチャの肝は、AIに「自然言語(日本語)」で返答させるのではなく、「構造化データ(JSON)」で返答させる点にあります。

これがめちゃくちゃ重要なポイントなんですよね。


人間の「判断基準」を言語化する

AIに適切な判断をさせるためには、曖昧さを排除した基準が必要です。

ここで少し考えてみましょう。 皆さんがメールを読むとき、頭の中でどんな基準で「これは緊急だ」って判断してますか?

おそらく、言語化されていない「感覚」で判断していることが多いと思うんですよね。 でも、AIに任せるには、この感覚を明確なルールに落とし込む必要があります。

今回は以下の3軸でトリアージを行います。

① 感情スコア(Sentiment)

まずは、相手の感情レベルを見極めます。

  • Severe(激怒/法的リスク): 即時対応必須。「訴える」「弁護士」「損害賠償」などのワードが含まれる場合。
  • Negative(不満): 一般的なクレーム。対応は必要だけど、まだ余裕がある状態。
  • Neutral(普通): 事務連絡や質問。淡々と対応すればOK。
  • Positive(感謝): お礼メールなど。嬉しいですよね!

② 緊急度(Urgency)

次に、対応の優先度を判定します。

  • High: システム障害、セキュリティ事故、Severeな感情。今すぐ動かないとヤバい。
  • Medium: 見積依頼、バグ報告。数日以内には対応したい案件。
  • Low: 営業メール、挨拶。時間があるときに見ればいいやつ。

③ カテゴリ(Category)

最後に、内容の分類です。

  • 技術的な問題(technical_issue)
  • 請求関連(billing)
  • 機能要望(feature_request)
  • 営業・スパム(sales_spam)
  • その他(other)

はい、これで判断基準が明確になりましたね!

この3つの軸をAIに教えてあげることで、しっかりと判断ができるようになるはずです。


【コピペOK】共通プロンプトの定義

ここが本記事のハイライトです!

以下のプロンプトは、GoogleのGemini 1.5 Flashでも、MicrosoftのGPT-4oでも同様に機能するようにチューニングされています。

あなたは熟練したカスタマーサポートマネージャーです。
入力された「顧客からのメール」を分析し、以下のルールに従ってJSON形式で結果を出力してください。

# 分析ルール
1. **sentiment**: 顧客の感情を `positive`, `neutral`, `negative`, `severe` (激怒・法的脅迫など) の4段階で評価。
2. **urgency**: 対応の緊急度を `high`, `medium`, `low` の3段階で評価。
   - `high`: システム障害、セキュリティ事故、解約の示唆、激しいクレーム
   - `medium`: 一般的な質問、見積依頼、バグ報告
   - `low`: 営業メール、スパム、緊急性のない報告
3. **category**: 内容を分類 (`technical_issue`, `billing`, `feature_request`, `sales_spam`, `other`)。
4. **summary**: メールの内容を日本語50文字以内で要約。
5. **draft_reply**: 返信メールのドラフト案(日本語)。相手の感情に配慮した丁寧な文章を作成すること。

# 制約事項
- 出力は**JSON形式のみ**とすること。Markdown記法(```json など)は含めないでください。
- 余計な解説や挨拶文は一切不要です。

# 入力メール文面
{{input_text}}

はい、これがプロンプトの完成形です!


なぜ「JSON」なのか?

ここで、少し技術的な話をさせてください。

Web開発者にとってJSONは馴染み深いですが、ローコード開発においてもJSONは「共通言語」としてなじみ深いんですよね。

どういうことかというと…

AIから {"urgency": "high"} というデータさえ受け取れば、プログラム側で if (urgency == "high") という明確な分岐処理が可能になります。

これが「なんとなく怒っているようです」というテキストでの返答だと、システムによる自動化が困難になるんですよね。

つまり、「人間が読んでわかる」形式ではなく、「プログラムが処理しやすい」形式でデータを受け取ることが、自動化の成功の鍵なんです。

プロンプト設計の3つのポイント

このプロンプトを作るにあたって、特に意識したポイントが3つあります。

ポイント① 出力形式の明確化

「JSON形式で」とだけ伝えても、AIは親切心から “`json というMarkdown記法を付けて返してくることがあるんですよね。

(これが意外と厄介なんですw)

なので、「Markdown記法は含めないでください」と明示的に禁止しています。

ポイント② ルールの具体化

「緊急度を判断してください」だけでは、AIの判断基準がブレます。

なので、highの定義として「システム障害、セキュリティ事故、解約の示唆、激しいクレーム」と具体例を列挙しています。

この具体性が、精度の高い判断につながるんです。

ポイント③ 余計な出力の抑制

AIはデフォルトだと「それでは分析結果をお伝えします」みたいな前置きを入れたがるんですよね。

(人間には親切ですけど、プログラムには邪魔ですw)

「余計な解説や挨拶文は一切不要」と明示することで、純粋なJSONのみを返してもらうようにしています。

実際の動作イメージ

では、このプロンプトが実際にどう動くか、想定してみましょう。

入力例1:激怒クレーム

件名: 至急対応願います
本文: 
御社のシステムが3時間も停止しており、業務に重大な支障が出ています。
このままでは損害賠償を請求せざるを得ません。
すぐに責任者から連絡をください。

AIの出力

{
  "sentiment": "severe",
  "urgency": "high",
  "category": "technical_issue",
  "summary": "システム障害により業務停止。法的措置を示唆。即時対応必要。",
  "draft_reply": "この度はシステム障害によりご迷惑をおかけし、誠に申し訳ございません。現在、最優先で原因究明と復旧作業を進めております。担当者より30分以内にご連絡させていただきます。"
}

はい、完璧ですね!

"urgency": "high" というデータが返ってきているので、プログラム側で「これは緊急案件だ!」と即座に判断できます。


入力例2:営業メール

件名: 新サービスのご案内
本文:
この度、弊社では新しいクラウドサービスをリリースいたしました。
貴社のビジネスにお役立ていただけると存じます。
詳細は添付の資料をご覧ください。

AIの出力

{
  "sentiment": "neutral",
  "urgency": "low",
  "category": "sales_spam",
  "summary": "新サービスの営業メール。対応優先度は低い。",
  "draft_reply": "ご案内ありがとうございます。資料を拝見し、必要に応じて改めてご連絡させていただきます。"
}

はい、これなら自動でフィルタリングできますね!

"urgency": "low" なので、後回しにしても問題ないと判断できます。

プラットフォーム選択のヒント

このプロンプトは、GoogleとMicrosoft、どちらの環境でも使えるように設計しました。

では、どちらを選べばいいのか?

Googleを選ぶべき人

  • とにかく速く、安く実装したい
  • JavaScriptが書ける(またはこれから学びたい)
  • 個人利用やプロトタイプ作成が目的

Microsoftを選ぶべき人

  • 全社システムとして展開したい
  • セキュリティとガバナンスが重視される環境
  • ノーコード/ローコードで実装したい

どちらが優れているというわけではなく、「解決したい課題の規模」と「組織のフェーズ」に合わせて使い分けることが大切です。

比較項目Google Workspace × GeminiMicrosoft 365 × Azure OpenAI
開発アプローチコードベース(JavaScript)ノーコード/ローコード(ビジュアル)
開発速度⚡ 速い(慣れれば10〜30分)🐢 慣れるまで時間がかかる(初回は1〜2時間)
初期コスト💰 無料枠が充実💳 Azure OpenAIは従量課金(無料枠なし)
ランニングコスト低コスト(Gemini無料枠内なら0円)中コスト(APIリクエスト数に応じて課金)
学習曲線JavaScript基礎知識が必要プログラミング不要、直感的
セキュリティ実行アカウントが個人に紐づく組織のEntra ID(Azure AD)で一元管理
ガバナンス属人化しやすいフローが可視化され、管理しやすい
メンテナンスコードレビューが必要GUIで誰でも編集可能
拡張性制限なし、自由にカスタマイズ標準コネクタ中心、HTTPで拡張可能
エラー対応console.logでデバッグ実行履歴で各ステップを確認
推奨組織規模個人〜小規模チーム(〜10名)中規模〜大企業(10名以上)
推奨ユースケース・個人の業務効率化
・プロトタイプ作成
・スタートアップの初期システム
・全社展開システム
・コンプライアンス要件が厳しい環境
・非エンジニアチーム

まとめと次回予告

はい、いかがでしたでしょうか?

今回は、AIによるメール自動トリアージシステムの「設計図」を作成しました。

ポイントは、人間の判断基準を言語化し、JSONという共通フォーマットでAIに返答させることでした。

次回は、この設計図をもとに、Google Workspace(GAS) × Geminiを使って、短時間で実装する方法を解説します!

「コードを書く」というアプローチがいかに柔軟で高速か、その威力を体験してください。

それでは皆さん、良い業務ハックライフを~

コメント