Was this page helpful?
以下是一些關鍵指標,說明您應該使用像 Claude 這樣的 LLM,而非傳統 ML 方法來執行分類任務:
在深入自動化之前,了解您現有的工單系統至關重要。首先調查您的支援團隊目前如何處理工單路由。
考慮以下問題:
您越了解人類如何處理某些案例,就越能與 Claude 合作完成任務。
一份定義明確的使用者意圖類別清單對於使用 Claude 準確分類支援工單至關重要。Claude 在您系統中有效路由工單的能力與您系統類別的定義明確程度直接相關。
以下是一些使用者意圖類別和子類別的範例。
除了意圖之外,工單路由和優先排序也可能受到其他因素的影響,例如緊急程度、客戶類型、SLA 或語言。在建立自動化路由系統時,請務必考慮其他路由標準。
與您的支援團隊合作,定義明確的成功標準,包含可測量的基準、閾值和目標。
以下是使用 LLM 進行支援工單路由時的一些標準標準和基準:
以下是一些無論是否使用 LLM 都可能有用的常見成功標準:
模型的選擇取決於成本、準確性和回應時間之間的權衡。
許多客戶發現 claude-haiku-4-5-20251001 是工單路由的理想模型,因為它是 Claude 4 系列中速度最快、最具成本效益的模型,同時仍能提供出色的結果。如果您的分類問題需要深度主題專業知識或大量需要複雜推理的意圖類別,您可以選擇更大的 Sonnet 模型。
工單路由是一種分類任務。Claude 分析支援工單的內容,並根據問題類型、緊急程度、所需專業知識或其他相關因素將其分類到預定義的類別中。
讓我們撰寫一個工單分類提示。我們的初始提示應包含使用者請求的內容,並同時返回推理和意圖。
在 Claude Console 上試用提示生成器,讓 Claude 為您撰寫初稿。
以下是一個工單路由分類提示範例:
def classify_support_request(ticket_contents):
# Define the prompt for the classification task
classification_prompt = f"""You will be acting as a customer support ticket classification system. Your task is to analyze customer support requests and output the appropriate classification intent for each request, along with your reasoning.
Here is the customer support request you need to classify:
<request>{ticket_contents}</request>
Please carefully analyze the above request to determine the customer's core intent and needs. Consider what the customer is asking for has concerns about.
First, write out your reasoning and analysis of how to classify this request inside <reasoning> tags.
Then, output the appropriate classification label for the request inside a <intent> tag. The valid intents are:
<intents>
<intent>Support, Feedback, Complaint</intent>
<intent>Order Tracking</intent>
<intent>Refund/Exchange</intent>
</intents>
A request may have ONLY ONE applicable intent. Only include the intent that is most applicable to the request.
As an example, consider the following request:
<request>Hello! I had high-speed fiber internet installed on Saturday and my installer, Kevin, was absolutely fantastic! Where can I send my positive review? Thanks for your help!</request>
Here is an example of how your output should be formatted (for the above example request):
<reasoning>The user seeks information in order to leave positive feedback.</reasoning>
<intent>Support, Feedback, Complaint</intent>
Here are a few more examples:
<examples>
<example 2>
Example 2 Input:
<request>I wanted to write and personally thank you for the compassion you showed towards my family during my father's funeral this past weekend. Your staff was so considerate and helpful throughout this whole process; it really took a load off our shoulders. The visitation brochures were beautiful. We'll never forget the kindness you showed us and we are so appreciative of how smoothly the proceedings went. Thank you, again, Amarantha Hill on behalf of the Hill Family.</request>
Example 2 Output:
<reasoning>User leaves a positive review of their experience.</reasoning>
<intent>Support, Feedback, Complaint</intent>
</example 2>
<example 3>
...
</example 8>
<example 9>
Example 9 Input:
<request>Your website keeps sending ad-popups that block the entire screen. It took me twenty minutes just to finally find the phone number to call and complain. How can I possibly access my account information with all of these popups? Can you access my account for me, since your website is broken? I need to know what the address is on file.</request>
Example 9 Output:
<reasoning>The user requests help accessing their web account information.</reasoning>
<intent>Support, Feedback, Complaint</intent>
</example 9>
Remember to always include your classification reasoning before your actual intent output. The reasoning should be enclosed in <reasoning> tags and the intent in <intent> tags. Return only the reasoning and the intent.
"""讓我們分解此提示的關鍵組成部分:
ticket_contents 插入到 <request> 標籤中。<reasoning> 標籤內提供其推理和分析,然後在 <intent> 標籤內提供適當的分類標籤。我們希望 Claude 將其回應分成各種 XML 標籤部分的原因是,我們可以使用正規表示式從輸出中分別提取推理和意圖。這允許我們在工單路由工作流程中建立有針對性的後續步驟,例如僅使用意圖來決定將工單路由給哪個人。
在不將提示部署到測試生產環境並執行評估的情況下,很難知道您的提示效果如何。
讓我們建立部署結構。首先定義包裝我們對 Claude 呼叫的方法簽名。我們將採用已經開始撰寫的方法,該方法以 ticket_contents 作為輸入,現在返回 reasoning 和 intent 的元組作為輸出。如果您有使用傳統 ML 的現有自動化,您將需要遵循該方法簽名。
import re
# Create an instance of the Claude API client
client = anthropic.Anthropic()
# Set the default model
DEFAULT_MODEL = "claude-haiku-4-5-20251001"
def classify_support_request(ticket_contents):
# Define the prompt for the classification task
classification_prompt = f"""You will be acting as a customer support ticket classification system.
...
... The reasoning should be enclosed in <reasoning> tags and the intent in <intent> tags. Return only the reasoning and the intent.
"""
# Send the prompt to the API to classify the support request.
message = client.messages.create(
model=DEFAULT_MODEL,
max_tokens=500,
temperature=0,
messages=[{"role": "user", "content": classification_prompt}],
stream=False,
)
reasoning_and_intent = message.content[0].text
# Use Python's regular expressions library to extract `reasoning`.
reasoning_match = re.search(
r"<reasoning>(.*?)</reasoning>", reasoning_and_intent, re.DOTALL
)
reasoning = reasoning_match.group(1).strip() if reasoning_match else ""
# Similarly, also extract the `intent`.
intent_match = re.search(r"<intent>(.*?)</intent>", reasoning_and_intent, re.DOTALL)
intent = intent_match.group(1).strip() if intent_match else ""
return reasoning, intent此程式碼:
ticket_contents 字串的 classify_support_request 函數。classification_prompt 將 ticket_contents 發送給 Claude 進行分類。reasoning 和 intent。由於我們需要等待整個推理和意圖文字生成完畢才能進行解析,我們將 stream=False(預設值)。
提示通常需要測試和優化才能達到生產就緒狀態。要確定您的解決方案是否就緒,請根據您之前建立的成功標準和閾值評估效能。
要執行評估,您需要測試案例來運行它。本指南的其餘部分假設您已經開發了您的測試案例。
本指南的範例評估沿三個關鍵指標衡量 Claude 的效能:
根據對您重要的因素,您可能需要在其他維度上評估 Claude。
為了評估這一點,我們首先必須修改我們撰寫的腳本,並添加一個函數來比較預測意圖與實際意圖,並計算正確預測的百分比。我們還必須添加成本計算和時間測量功能。
import re
# Create an instance of the Claude API client
client = anthropic.Anthropic()
# Set the default model
DEFAULT_MODEL = "claude-haiku-4-5-20251001"
def classify_support_request(request, actual_intent):
# Define the prompt for the classification task
classification_prompt = f"""You will be acting as a customer support ticket classification system.
...
...The reasoning should be enclosed in <reasoning> tags and the intent in <intent> tags. Return only the reasoning and the intent.
"""
message = client.messages.create(
model=DEFAULT_MODEL,
max_tokens=500,
temperature=0,
messages=[{"role": "user", "content": classification_prompt}],
)
usage = message.usage # Get the usage statistics for the API call for how many input and output tokens were used.
reasoning_and_intent = message.content[0].text
# Use Python's regular expressions library to extract `reasoning`.
reasoning_match = re.search(
r"<reasoning>(.*?)</reasoning>", reasoning_and_intent, re.DOTALL
)
reasoning = reasoning_match.group(1).strip() if reasoning_match else ""
# Similarly, also extract the `intent`.
intent_match = re.search(r"<intent>(.*?)</intent>", reasoning_and_intent, re.DOTALL)
intent = intent_match.group(1).strip() if intent_match else ""
# Check if the model's prediction is correct.
correct = actual_intent.strip() == intent.strip()
# Return the reasoning, intent, correct, and usage.
return reasoning, intent, correct, usage讓我們分解我們所做的編輯:
actual_intent 添加到 classify_support_request 方法中,並設置比較以評估 Claude 的意圖分類是否與我們的黃金意圖分類匹配。適當的評估需要明確的閾值和基準來確定什麼是好的結果。上面的腳本為我們提供了準確率、回應時間和每次分類成本的運行時值,但我們仍然需要明確建立的閾值。例如:
擁有這些閾值使您能夠快速輕鬆地在規模上,以及以公正的實證主義,判斷哪種方法最適合您,以及可能需要做哪些更改以更好地符合您的要求。
在複雜場景中,考慮超越標準提示工程技術和防護欄實施策略的額外策略可能會有所幫助。以下是一些常見場景:
隨著類別數量的增長,所需的範例數量也會擴大,可能使提示變得難以管理。作為替代方案,您可以考慮使用分類器混合實施層次分類系統。
例如,您可能有一個頂層分類器,將工單廣泛分類為「技術問題」、「帳單問題」和「一般查詢」。這些類別中的每一個都可以有自己的子分類器來進一步細化分類。

優點 - 更大的細微差別和準確性: 您可以為每個父路徑建立不同的提示,允許更有針對性和上下文特定的分類。這可以提高準確性並更細緻地處理客戶請求。
缺點 - 增加延遲: 請注意,多個分類器可能導致延遲增加,我們建議使用我們最快的模型 Haiku 來實施此方法。
儘管提供範例是提高效能最有效的方式,但如果支援請求高度可變,在單個提示中包含足夠的範例可能很困難。
在這種情況下,您可以使用向量資料庫對範例資料集進行相似性搜尋,並為給定查詢檢索最相關的範例。
這種方法在我們的分類食譜中有詳細說明,已被證明可以將效能從 71% 的準確率提高到 93% 的準確率。
以下是 Claude 可能錯誤分類工單的一些場景(可能還有其他對您的情況獨特的場景)。在這些場景中,考慮在提示中提供明確的指示或範例,說明 Claude 應如何處理邊緣案例:
適當的整合需要您就基於 Claude 的工單路由腳本如何融入您更大的工單路由系統架構做出一些決定。有兩種方式可以做到這一點:
對於這兩種方法,您都需要將您的腳本包裝在服務中。方法的選擇取決於您的支援工單系統提供哪些 API。
在 Claude Console 上開始建立和評估您的工作流程。