チケットルーティング
このガイドでは、Claudeの高度な自然言語理解能力を活用して、顧客の意図、緊急性、優先順位、顧客プロファイルなどに基づいて大規模にカスタマーサポートチケットを分類する方法を説明します。
チケットルーティングにClaudeを使用するかどうかを判断する
以下は、分類タスクに従来のML手法ではなく、ClaudeのようなLLMを使用すべき主な指標です:
LLMサポートワークフローの構築とデプロイ
現在のサポートアプローチを理解する
自動化に取り組む前に、既存のチケットシステムを理解することが重要です。まず、サポートチームが現在どのようにチケットルーティングを処理しているかを調査することから始めましょう。
以下のような質問を検討してください:
- どのような基準でSLA/サービス提供が適用されるかを決定していますか?
- チケットルーティングは、チケットがどのサポートレベルまたは製品スペシャリストに行くかを決定するために使用されていますか?
- すでに自動化されたルールやワークフローはありますか?どのような場合に失敗しますか?
- エッジケースや曖昧なチケットはどのように処理されていますか?
- チームはどのようにチケットに優先順位をつけていますか?
人間がどのようにして特定のケースを処理しているかについて知れば知るほど、Claudeとともにタスクを行うことがより良くできるようになります。
ユーザー意図カテゴリを定義する
明確に定義されたユーザー意図カテゴリのリストは、Claudeによる正確なサポートチケット分類に不可欠です。Claudeがシステム内でチケットを効果的にルーティングする能力は、システムのカテゴリがどれだけ明確に定義されているかに直接比例します。
以下はユーザー意図カテゴリとサブカテゴリの例です。
意図に加えて、チケットのルーティングと優先順位付けは、緊急性、顧客タイプ、SLA、または言語などの他の要因によっても影響を受ける場合があります。自動ルーティングシステムを構築する際には、他のルーティング基準も考慮してください。
成功基準を確立する
サポートチームと協力して、測定可能なベンチマーク、しきい値、および目標を持つ明確な成功基準を定義してください。
以下は、サポートチケットルーティングにLLMを使用する際の標準的な基準とベンチマークです:
以下は、LLMが使用されているかどうかに関わらず有用な一般的な成功基準です:
適切なClaudeモデルを選択する
モデルの選択は、コスト、精度、応答時間のトレードオフによって異なります。
多くの顧客は、claude-3-5-haiku-20241022
がチケットルーティングに理想的なモデルであると考えています。これはClaude 3ファミリーの中で最も高速でコスト効率が良いモデルでありながら、優れた結果を提供します。分類問題が深い専門知識や大量の意図カテゴリの複雑な推論を必要とする場合は、より大きなSonnetモデルを選択することもできます。
強力なプロンプトを構築する
チケットルーティングは分類タスクの一種です。Claudeはサポートチケットの内容を分析し、問題のタイプ、緊急性、必要な専門知識、またはその他の関連要因に基づいて、事前定義されたカテゴリに分類します。
チケット分類プロンプトを作成しましょう。初期プロンプトには、ユーザーリクエストの内容を含め、推論と意図の両方を返すようにします。
Anthropic Consoleのプロンプトジェネレーターを試して、Claudeに最初の草案を書いてもらいましょう。
以下はチケットルーティング分類プロンプトの例です:
このプロンプトの主要な構成要素を分解してみましょう:
- Pythonのf文字列を使用してプロンプトテンプレートを作成し、
ticket_contents
を<request>
タグ内に挿入できるようにしています。 - Claudeに顧客の核心的な意図とニーズを慎重に分析するチケット内容を分類システムとしての明確に定義された役割を与えています。
- Claudeに適切な出力フォーマットを指示し、この場合は
<reasoning>
タグ内に理由と分析を提供し、その後に<intent>
タグ内に適切な分類ラベルを提供するよう指示しています。 - 有効な意図カテゴリを指定しています:「サポート、フィードバック、苦情」、「注文追跡」、「返金/交換」。
- 出力がどのようにフォーマットされるべきかを示すためにいくつかの例(いわゆるfew-shotプロンプティング)を含めており、これにより精度と一貫性が向上します。
Claudeに様々なXMLタグセクションに応答を分割させたい理由は、正規表現を使用して出力から理由と意図を別々に抽出できるようにするためです。これにより、チケットルーティングワークフローで次のステップを対象とすることができます。例えば、チケットをルーティングする人を決定するために意図のみを使用するなどです。
プロンプトをデプロイする
テスト生産環境にデプロイして評価を実行せずに、プロンプトがどれだけうまく機能するかを知ることは難しいです。
デプロイ構造を構築しましょう。まず、Claudeへの呼び出しをラップするメソッドシグネチャを定義します。すでに書き始めているメソッドを使用し、入力としてticket_contents
を取り、出力としてreasoning
とintent
のタプルを返します。従来のMLを使用した既存の自動化がある場合は、代わりにそのメソッドシグネチャに従ってください。
このコードは:
- Anthropicライブラリをインポートし、APIキーを使用してクライアントインスタンスを作成します。
ticket_contents
文字列を取るclassify_support_request
関数を定義します。classification_prompt
を使用して分類のためにticket_contents
をClaudeに送信します。- レスポンスから抽出した
reasoning
とintent
を返します。
生成全体の理由と意図のテキストを解析する前に待つ必要があるため、stream=False
(デフォルト)を設定しています。
プロンプトを評価する
プロンプティングは、本番環境に対応するためにテストと最適化が必要なことがよくあります。ソリューションの準備状況を判断するには、先に確立した成功基準としきい値に基づいてパフォーマンスを評価します。
評価を実行するには、テストケースが必要です。このガイドの残りの部分では、すでにテストケースを開発していることを前提としています。
評価関数を構築する
このガイドの例の評価では、Claudeのパフォーマンスを3つの主要な指標に沿って測定します:
- 精度
- 分類あたりのコスト
あなたにとって重要な要素に応じて、他の軸でClaudeを評価する必要があるかもしれません。
これを評価するために、まず私たちが書いたスクリプトを修正し、予測された意図と実際の意図を比較して正確な予測の割合を計算する関数を追加する必要があります。また、コスト計算と時間測定機能も追加する必要があります。
行った編集を分解してみましょう:
- テストケースから
actual_intent
をclassify_support_request
メソッドに追加し、Claudeの意図分類が私たちのゴールデン意図分類と一致するかどうかを評価するための比較を設定しました。 - 入力および出力トークンの使用に基づいてコストを計算するために、APIコールの使用統計を抽出しました。
評価を実行する
適切な評価には、何が良い結果かを判断するための明確なしきい値とベンチマークが必要です。上記のスクリプトは精度、応答時間、分類あたりのコストのランタイム値を提供しますが、明確に確立されたしきい値が必要です。例えば:
- 精度: 95%(100テスト中)
- 分類あたりのコスト: 現在のルーティング方法から平均50%削減(100テスト全体)
これらのしきい値があれば、どの方法があなたに最適か、そしてあなたの要件により適合させるためにどのような変更が必要かを、規模を拡大しても偏りのない実証的な方法で迅速かつ簡単に判断できます。
パフォーマンスを向上させる
複雑なシナリオでは、標準的なプロンプトエンジニアリング技術やガードレール実装戦略を超えて、パフォーマンスを向上させるための追加戦略を検討することが役立つ場合があります。以下はいくつかの一般的なシナリオです:
20以上の意図カテゴリがある場合は分類階層を使用する
クラスの数が増えるにつれて、必要な例の数も増加し、プロンプトが扱いにくくなる可能性があります。代替案として、分類器の混合を使用した階層的分類システムの実装を検討できます。
- 意図を分類木構造で整理します。
- ツリーのすべてのレベルで一連の分類器を作成し、カスケードルーティングアプローチを可能にします。
例えば、チケットを「技術的な問題」、「請求に関する質問」、「一般的な問い合わせ」に大まかに分類するトップレベルの分類器を持つことができます。これらの各カテゴリには、分類をさらに絞り込むための独自のサブ分類器があります。
-
メリット - より大きなニュアンスと精度: 各親パスに対して異なるプロンプトを作成でき、より対象を絞ったコンテキスト固有の分類が可能になります。これにより、精度が向上し、顧客リクエストのより微妙な処理が可能になります。
-
デメリット - レイテンシーの増加: 複数の分類器によりレイテンシーが増加する可能性があることに注意してください。このアプローチは最も高速なモデルであるHaikuで実装することをお勧めします。
高度に可変なチケットを処理するためにベクトルデータベースと類似性検索検索を使用する
例を提供することがパフォーマンスを向上させる最も効果的な方法ですが、サポートリクエストが非常に多様な場合、単一のプロンプトに十分な例を含めるのが難しい場合があります。
このシナリオでは、ベクトルデータベースを使用して例のデータセットから類似性検索を行い、特定のクエリに最も関連性の高い例を取得することができます。
この分類レシピで詳細に説明されているこのアプローチは、精度を71%から93%に向上させることが示されています。
予想されるエッジケースを特に考慮する
以下は、Claudeがチケットを誤分類する可能性のあるシナリオです(あなたの状況に固有の他のシナリオもあるかもしれません)。これらのシナリオでは、Claudeがエッジケースをどのように処理すべきかについて、プロンプトに明示的な指示や例を提供することを検討してください:
Claudeをより大きなサポートワークフローに統合する
適切な統合には、Claude ベースのチケットルーティングスクリプトがより大きなチケットルーティングシステムのアーキテクチャにどのように適合するかについて、いくつかの決定を行う必要があります。これには2つの方法があります:
- プッシュベース: 使用しているサポートチケットシステム(例:Zendesk)が、ルーティングサービスにウェブフックイベントを送信することでコードをトリガーし、そのサービスが意図を分類してルーティングします。
- このアプローチはウェブスケーラビリティが高いですが、パブリックエンドポイントを公開する必要があります。
- プルベース: コードが特定のスケジュールに基づいて最新のチケットをプルし、プル時にそれらをルーティングします。
- このアプローチは実装が容易ですが、プル頻度が高すぎると不必要なサポートチケットシステムへの呼び出しが発生したり、プル頻度が低すぎると過度に遅くなる可能性があります。
これらのアプローチのいずれについても、スクリプトをサービスにラップする必要があります。アプローチの選択は、サポートチケットシステムが提供するAPIによって異なります。