Was this page helpful?
Voici quelques indicateurs clés qui suggèrent d'utiliser un LLM comme Claude plutôt que des approches ML traditionnelles pour votre tâche de classification :
Avant de plonger dans l'automatisation, il est crucial de comprendre votre système de ticketing existant. Commencez par examiner comment votre équipe de support gère actuellement le routage des tickets.
Considérez des questions telles que :
Plus vous en savez sur la façon dont les humains gèrent certains cas, mieux vous pouvez travailler avec Claude pour accomplir la tâche.
Une liste bien définie de catégories d'intention utilisateur est cruciale pour une classification précise des tickets de support avec Claude. La capacité de Claude à router efficacement les tickets au sein de votre système est directement proportionnelle à la qualité de définition des catégories de votre système.
Voici quelques exemples de catégories et sous-catégories d'intention utilisateur.
En plus de l'intention, le routage et la priorisation des tickets peuvent également être influencés par d'autres facteurs tels que l'urgence, le type de client, les SLA ou la langue. Assurez-vous de prendre en compte d'autres critères de routage lors de la construction de votre système de routage automatisé.
Travaillez avec votre équipe de support pour définir des critères de succès clairs avec des benchmarks, des seuils et des objectifs mesurables.
Voici quelques critères et benchmarks standard lors de l'utilisation de LLMs pour le routage des tickets de support :
Voici quelques critères de succès courants qui peuvent être utiles indépendamment de l'utilisation d'un LLM :
Le choix du modèle dépend des compromis entre coût, précision et temps de réponse.
De nombreux clients ont trouvé que claude-haiku-4-5-20251001 est un modèle idéal pour le routage des tickets, car c'est le modèle le plus rapide et le plus rentable de la famille Claude 4 tout en offrant d'excellents résultats. Si votre problème de classification nécessite une expertise approfondie en la matière ou un grand volume de catégories d'intention avec un raisonnement complexe, vous pouvez opter pour le modèle Sonnet plus grand.
Le routage des tickets est un type de tâche de classification. Claude analyse le contenu d'un ticket de support et le classifie dans des catégories prédéfinies basées sur le type de problème, l'urgence, l'expertise requise ou d'autres facteurs pertinents.
Rédigeons un prompt de classification de tickets. Notre prompt initial doit contenir le contenu de la demande de l'utilisateur et retourner à la fois le raisonnement et l'intention.
Essayez le générateur de prompts sur le Claude Console pour que Claude rédige une première ébauche pour vous.
Voici un exemple de prompt de classification pour le routage des tickets :
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.
"""Décomposons les composants clés de ce prompt :
ticket_contents dans les balises <request>.<reasoning>, suivis de l'étiquette de classification appropriée dans des balises <intent>.La raison pour laquelle nous voulons que Claude divise sa réponse en différentes sections de balises XML est que nous pouvons utiliser des expressions régulières pour extraire séparément le raisonnement et l'intention de la sortie. Cela nous permet de créer des étapes suivantes ciblées dans le workflow de routage des tickets, comme utiliser uniquement l'intention pour décider à quelle personne router le ticket.
Il est difficile de savoir dans quelle mesure votre prompt fonctionne sans le déployer dans un environnement de production de test et exécuter des évaluations.
Construisons la structure de déploiement. Commencez par définir la signature de méthode pour encapsuler notre appel à Claude. Nous prendrons la méthode que nous avons déjà commencé à écrire, qui a ticket_contents comme entrée, et retournerons maintenant un tuple de reasoning et intent comme sortie. Si vous avez une automatisation existante utilisant le ML traditionnel, vous voudrez suivre cette signature de méthode à la place.
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, intentCe code :
classify_support_request qui prend une chaîne ticket_contents.ticket_contents à Claude pour classification en utilisant le classification_promptreasoning et l'intent du modèle extraits de la réponse.Puisque nous devons attendre que l'intégralité du texte de raisonnement et d'intention soit générée avant de l'analyser, nous définissons stream=False (la valeur par défaut).
Le prompting nécessite souvent des tests et une optimisation pour être prêt pour la production. Pour déterminer la préparation de votre solution, évaluez les performances en fonction des critères de succès et des seuils que vous avez établis précédemment.
Pour exécuter votre évaluation, vous avez besoin de cas de test sur lesquels l'exécuter. Le reste de ce guide suppose que vous avez déjà développé vos cas de test.
Notre exemple d'évaluation pour ce guide mesure les performances de Claude selon trois métriques clés :
Vous devrez peut-être évaluer Claude sur d'autres axes en fonction des facteurs qui sont importants pour vous.
Pour évaluer cela, nous devons d'abord modifier le script que nous avons écrit et ajouter une fonction pour comparer l'intention prédite avec l'intention réelle et calculer le pourcentage de prédictions correctes. Nous devons également ajouter des fonctionnalités de calcul des coûts et de mesure du temps.
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, usageDécomposons les modifications que nous avons apportées :
actual_intent de nos cas de test dans la méthode classify_support_request et mis en place une comparaison pour évaluer si la classification d'intention de Claude correspond à notre classification d'intention de référence.Une évaluation appropriée nécessite des seuils et des benchmarks clairs pour déterminer ce qui constitue un bon résultat. Le script ci-dessus nous donne les valeurs d'exécution pour la précision, le temps de réponse et le coût par classification, mais nous aurions encore besoin de seuils clairement établis. Par exemple :
Avoir ces seuils vous permet de déterminer rapidement et facilement à grande échelle, et avec un empirisme impartial, quelle méthode est la meilleure pour vous et quels changements pourraient être nécessaires pour mieux répondre à vos exigences.
Dans des scénarios complexes, il peut être utile d'envisager des stratégies supplémentaires pour améliorer les performances au-delà des techniques standard d'ingénierie de prompts et des stratégies de mise en œuvre de garde-fous. Voici quelques scénarios courants :
À mesure que le nombre de classes augmente, le nombre d'exemples requis augmente également, rendant potentiellement le prompt ingérable. Comme alternative, vous pouvez envisager de mettre en œuvre un système de classification hiérarchique en utilisant un mélange de classificateurs.
Par exemple, vous pourriez avoir un classificateur de niveau supérieur qui catégorise largement les tickets en "Problèmes techniques", "Questions de facturation" et "Demandes générales". Chacune de ces catégories peut ensuite avoir son propre sous-classificateur pour affiner davantage la classification.

Avantages - plus grande nuance et précision : Vous pouvez créer différents prompts pour chaque chemin parent, permettant une classification plus ciblée et spécifique au contexte. Cela peut conduire à une précision améliorée et à une gestion plus nuancée des demandes des clients.
Inconvénients - latence accrue : Sachez que plusieurs classificateurs peuvent entraîner une latence accrue, et nous recommandons de mettre en œuvre cette approche avec notre modèle le plus rapide, Haiku.
Bien que fournir des exemples soit le moyen le plus efficace d'améliorer les performances, si les demandes de support sont très variables, il peut être difficile d'inclure suffisamment d'exemples dans un seul prompt.
Dans ce scénario, vous pourriez utiliser une base de données vectorielle pour effectuer des recherches de similarité à partir d'un ensemble d'exemples et récupérer les exemples les plus pertinents pour une requête donnée.
Cette approche, décrite en détail dans notre recette de classification, a montré qu'elle améliore les performances de 71% de précision à 93% de précision.
Voici quelques scénarios où Claude peut mal classifier les tickets (il peut y en avoir d'autres qui sont propres à votre situation). Dans ces scénarios, envisagez de fournir des instructions explicites ou des exemples dans le prompt sur la façon dont Claude doit gérer le cas limite :
Une intégration appropriée nécessite que vous preniez certaines décisions concernant la façon dont votre script de routage de tickets basé sur Claude s'intègre dans l'architecture de votre système de routage de tickets global. Il y a deux façons de procéder :
Pour l'une ou l'autre de ces approches, vous devez encapsuler votre script dans un service. Le choix de l'approche dépend des API que votre système de ticketing de support fournit.
Commencez à construire et à évaluer votre workflow sur le Claude Console.