Ecco alcuni indicatori chiave che suggeriscono di utilizzare un LLM come Claude invece di approcci ML tradizionali per il tuo compito di classificazione:
Prima di tuffarti nell'automazione, è fondamentale comprendere il tuo sistema di ticketing esistente. Inizia investigando come il tuo team di supporto gestisce attualmente l'instradamento dei ticket.
Considera domande come:
Più conosci come gli umani gestiscono determinati casi, meglio sarai in grado di lavorare con Claude per svolgere il compito.
Un elenco ben definito di categorie di intento dell'utente è fondamentale per una classificazione accurata dei ticket di supporto con Claude. La capacità di Claude di instradare i ticket efficacemente all'interno del tuo sistema è direttamente proporzionale a quanto bene sono definite le categorie del tuo sistema.
Ecco alcuni esempi di categorie e sottocategorie di intento dell'utente.
Oltre all'intento, l'instradamento e la prioritizzazione dei ticket possono anche essere influenzati da altri fattori come urgenza, tipo di cliente, SLA o lingua. Assicurati di considerare altri criteri di instradamento quando costruisci il tuo sistema di instradamento automatizzato.
Lavora con il tuo team di supporto per definire chiari criteri di successo con benchmark, soglie e obiettivi misurabili.
Ecco alcuni criteri e benchmark standard quando si utilizzano LLM per l'instradamento dei ticket di supporto:
Ecco alcuni criteri di successo comuni che potrebbero essere utili indipendentemente dal fatto che venga utilizzato un LLM:
La scelta del modello dipende dai compromessi tra costo, accuratezza e tempo di risposta.
Molti clienti hanno trovato claude-haiku-4-5-20251001 un modello ideale per l'instradamento dei ticket, poiché è il modello più veloce e conveniente della famiglia Claude 4 pur fornendo risultati eccellenti. Se il tuo problema di classificazione richiede una profonda esperienza in materia o un grande volume di categorie di intento con ragionamento complesso, potresti optare per il modello Sonnet più grande.
L'instradamento dei ticket è un tipo di compito di classificazione. Claude analizza il contenuto di un ticket di supporto e lo classifica in categorie predefinite in base al tipo di problema, all'urgenza, all'expertise richiesta o ad altri fattori rilevanti.
Scriviamo un prompt di classificazione dei ticket. Il nostro prompt iniziale dovrebbe contenere il contenuto della richiesta dell'utente e restituire sia il ragionamento che l'intento.
Prova il generatore di prompt sulla Claude Console per far scrivere a Claude una prima bozza per te.
Ecco un esempio di prompt di classificazione dell'instradamento dei ticket:
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.
"""Analizziamo i componenti chiave di questo prompt:
ticket_contents nei tag <request>.<reasoning>, seguito dall'etichetta di classificazione appropriata all'interno dei tag <intent>.Il motivo per cui vogliamo che Claude divida la sua risposta in varie sezioni di tag XML è in modo che possiamo utilizzare espressioni regolari per estrarre separatamente il ragionamento e l'intento dall'output. Questo ci consente di creare passaggi successivi mirati nel flusso di lavoro di instradamento dei ticket, come utilizzare solo l'intento per decidere a quale persona instradare il ticket.
È difficile sapere quanto bene funziona il tuo prompt senza distribuirlo in un'impostazione di produzione di test ed eseguire valutazioni.
Costruiamo la struttura di distribuzione. Inizia definendo la firma del metodo per avvolgere la nostra chiamata a Claude. Prenderemo il metodo che abbiamo già iniziato a scrivere, che ha ticket_contents come input, e ora restituiremo una tupla di reasoning e intent come output. Se hai un'automazione esistente utilizzando ML tradizionale, vorrai seguire quella firma del metodo.
import anthropic
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, intentQuesto codice:
classify_support_request che accetta una stringa ticket_contents.ticket_contents a Claude per la classificazione utilizzando classification_promptreasoning e l'intent del modello estratti dalla risposta.Poiché abbiamo bisogno di attendere che l'intero testo di ragionamento e intento sia generato prima di analizzarlo, impostiamo stream=False (il valore predefinito).
Il prompting spesso richiede test e ottimizzazione per essere pronto per la produzione. Per determinare la prontezza della tua soluzione, valuta le prestazioni in base ai criteri di successo e alle soglie che hai stabilito in precedenza.
Per eseguire la tua valutazione, avrai bisogno di casi di test su cui eseguirla. Il resto di questa guida presuppone che tu abbia già sviluppato i tuoi casi di test.
La nostra valutazione di esempio per questa guida misura le prestazioni di Claude lungo tre metriche chiave:
Potrebbe essere necessario valutare Claude su altri assi a seconda di quali fattori sono importanti per te.
Per valutare questo, dobbiamo prima modificare lo script che abbiamo scritto e aggiungere una funzione per confrontare l'intento previsto con l'intento effettivo e calcolare la percentuale di previsioni corrette. Dobbiamo anche aggiungere funzionalità di calcolo dei costi e misurazione del tempo.
import anthropic
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, usageAnalizziamo le modifiche che abbiamo apportato:
actual_intent dai nostri casi di test nel metodo classify_support_request e impostato un confronto per valutare se la classificazione dell'intento di Claude corrisponde alla nostra classificazione dell'intento dorato.Una valutazione corretta richiede soglie e benchmark chiari per determinare quale sia un buon risultato. Lo script sopra ci darà i valori di runtime per accuratezza, tempo di risposta e costo per classificazione, ma avremmo comunque bisogno di soglie chiaramente stabilite. Ad esempio:
Avere queste soglie ti consente di dire rapidamente e facilmente su larga scala, e con empirismo imparziale, quale metodo è migliore per te e quali cambiamenti potrebbero essere necessari per adattarsi meglio ai tuoi requisiti.
In scenari complessi, potrebbe essere utile considerare strategie aggiuntive per migliorare le prestazioni oltre le tecniche standard di prompt engineering e le strategie di implementazione dei guardrail. Ecco alcuni scenari comuni:
Man mano che il numero di classi cresce, cresce anche il numero di esempi richiesti, rendendo potenzialmente il prompt ingombrante. In alternativa, puoi considerare l'implementazione di un sistema di classificazione gerarchico utilizzando una miscela di classificatori.
Ad esempio, potresti avere un classificatore di primo livello che categorizza ampiamente i ticket in "Problemi tecnici", "Domande sulla fatturazione" e "Richieste generali". Ognuna di queste categorie può quindi avere il suo proprio sotto-classificatore per affinare ulteriormente la classificazione.

Pro - maggiore sfumatura e accuratezza: Puoi creare prompt diversi per ogni percorso genitore, consentendo una classificazione più mirata e specifica del contesto. Questo può portare a una maggiore accuratezza e a una gestione più sfumata delle richieste dei clienti.
Contro - latenza aumentata: Tieni presente che più classificatori possono portare a una latenza aumentata, e consigliamo di implementare questo approccio con il nostro modello più veloce, Haiku.
Nonostante la fornitura di esempi sia il modo più efficace per migliorare le prestazioni, se le richieste di supporto sono altamente variabili, può essere difficile includere abbastanza esempi in un singolo prompt.
In questo scenario, potresti utilizzare un database vettoriale per eseguire ricerche di somiglianza da un set di dati di esempi e recuperare gli esempi più rilevanti per una determinata query.
Questo approccio, descritto in dettaglio nella nostra ricetta di classificazione, ha dimostrato di migliorare le prestazioni dal 71% di accuratezza al 93% di accuratezza.
Ecco alcuni scenari in cui Claude potrebbe classificare erroneamente i ticket (potrebbero essercene altri unici per la tua situazione). In questi scenari, considera di fornire istruzioni esplicite o esempi nel prompt di come Claude dovrebbe gestire il caso limite:
L'integrazione corretta richiede che tu prenda alcune decisioni riguardanti il modo in cui il tuo script di instradamento dei ticket basato su Claude si adatta all'architettura del tuo sistema di instradamento dei ticket più ampio. Ci sono due modi in cui potresti farlo:
Per uno di questi approcci, dovrai avvolgere il tuo script in un servizio. La scelta dell'approccio dipende da quali API fornisce il tuo sistema di ticketing di supporto.
Visita il nostro classification cookbook per ulteriori codici di esempio e una guida di valutazione dettagliata.