Routage des tickets
Ce guide explique comment exploiter les capacités avancées de compréhension du langage naturel de Claude pour classifier les tickets de support client à grande échelle en fonction de l’intention du client, de l’urgence, de la priorisation, du profil client, et plus encore.
Déterminer s’il faut utiliser Claude pour le routage des tickets
Voici quelques indicateurs clés qui suggèrent que vous devriez utiliser un LLM comme Claude plutôt que des approches d’apprentissage automatique traditionnelles pour votre tâche de classification :
Construire et déployer votre flux de travail de support LLM
Comprendre votre approche de support actuelle
Avant de vous lancer dans l’automatisation, il est crucial de comprendre votre système de billetterie existant. Commencez par étudier comment votre équipe de support gère actuellement le routage des tickets.
Posez-vous des questions comme :
- Quels critères sont utilisés pour déterminer quel SLA/offre de service est appliqué ?
- Le routage des tickets est-il utilisé pour déterminer vers quel niveau de support ou spécialiste produit un ticket est dirigé ?
- Y a-t-il déjà des règles ou des flux de travail automatisés en place ? Dans quels cas échouent-ils ?
- Comment les cas particuliers ou les tickets ambigus sont-ils traités ?
- Comment l’équipe priorise-t-elle les tickets ?
Plus vous en savez sur la façon dont les humains gèrent certains cas, mieux vous serez en mesure de travailler avec Claude pour accomplir la tâche.
Définir les catégories d’intention utilisateur
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 dans 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é.
Établir des critères de succès
Travaillez avec votre équipe de support pour définir des critères de succès clairs avec des repères mesurables, des seuils et des objectifs.
Voici quelques critères et repères standard lors de l’utilisation des LLM pour le routage des tickets de support :
Voici quelques critères de succès courants qui peuvent être utiles, qu’un LLM soit utilisé ou non :
Choisir le bon modèle Claude
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-3-5-haiku-20241022
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 3 tout en offrant d’excellents résultats. Si votre problème de classification nécessite une expertise approfondie du sujet ou un grand volume de catégories d’intention avec un raisonnement complexe, vous pourriez opter pour le modèle Sonnet plus grand.
Construire un prompt solide
Le routage des tickets est un type de tâche de classification. Claude analyse le contenu d’un ticket de support et le classe dans des catégories prédéfinies en fonction du type de problème, de l’urgence, de l’expertise requise ou d’autres facteurs pertinents.
Écrivons un prompt de classification de tickets. Notre prompt initial devrait contenir le contenu de la demande de l’utilisateur et renvoyer à la fois le raisonnement et l’intention.
Essayez le générateur de prompts sur la Console Anthropic pour que Claude vous rédige une première ébauche.
Voici un exemple de prompt de classification pour le routage des tickets :
Décomposons les éléments clés de ce prompt :
- Nous utilisons les f-strings Python pour créer le modèle de prompt, permettant au
ticket_contents
d’être inséré dans les balises<request>
. - Nous donnons à Claude un rôle clairement défini en tant que système de classification qui analyse soigneusement le contenu du ticket pour déterminer l’intention principale et les besoins du client.
- Nous instruisons Claude sur le formatage de sortie approprié, dans ce cas pour fournir son raisonnement et son analyse à l’intéri eur des balises
<reasoning>
, suivi de l’étiquette de classification appropriée à l’intérieur des balises<intent>
. - Nous spécifions les catégories d’intention valides : “Support, Feedback, Réclamation”, “Suivi de commande” et “Remboursement/Échange”.
- Nous incluons quelques exemples (aussi appelé few-shot prompting) pour illustrer comment la sortie doit être formatée, ce qui améliore la précision et la cohérence.
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 ciblées suivantes dans le flux de travail de routage des tickets, comme utiliser uniquement l’intention pour décider à qui acheminer le ticket.
Déployer votre prompt
Il est difficile de savoir à quel point votre prompt fonctionne bien sans le déployer dans un environnement de test de production et exécuter des évaluations.
Construisons la structure de déploiement. Commençons par définir la signature de méthode pour encapsuler notre appel à Claude. Nous allons prendre la méthode que nous avons déjà commencé à écrire, qui a ticket_contents
comme entrée, et maintenant renvoyer un tuple de reasoning
et intent
comme sortie. Si vous avez une automatisation existante utilisant l’apprentissage automatique traditionnel, vous voudrez suivre cette signature de méthode à la place.
Ce code :
- Importe la bibliothèque Anthropic et crée une instance de client en utilisant votre clé API.
- Définit une fonction
classify_support_request
qui prend une chaîneticket_contents
. - Envoie le
ticket_contents
à Claude pour classification en utilisant leclassification_prompt
- Renvoie le
reasoning
et l’intent
du modèle extraits de la réponse.
Puisque nous devons attendre que tout le texte de raisonnement et d’intention soit généré avant de l’analyser, nous définissons stream=False
(la valeur par défaut).
Évaluer votre prompt
Le prompting nécessite souvent des tests et une optimisation pour être prêt pour la production. Pour déterminer l’état de 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 aurez 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.
Construire une fonction d’évaluation
Notre exemple d’évaluation pour ce guide mesure la performance de Claude selon trois métriques clés :
- Précision
- Coût par classification
Vous pourriez avoir besoin d’é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.
Décomposons les modifications que nous avons apportées :
- Nous avons ajouté l’
actual_intent
de nos cas de test dans la méthodeclassify_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. - Nous avons extrait les statistiques d’utilisation pour l’appel API afin de calculer le coût en fonction des tokens d’entrée et de sortie utilisés
Exécuter votre évaluation
Une évaluation appropriée nécessite des seuils et des repères clairs pour déterminer ce qu’est un bon résultat. Le script ci-dessus nous donnera 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 :
- Précision : 95% (sur 100 tests)
- Coût par classification : réduction de 50% en moyenne (sur 100 tests) par rapport à la méthode de routage actuelle
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 devoir être apportés pour mieux répondre à vos exigences.
Améliorer les performances
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 :
Utiliser une hiérarchie taxonomique pour les cas avec plus de 20 catégories d’intention
À mesure que le nombre de classes augmente, le nombre d’exemples requis s’étend également, rendant potentiellement le prompt difficile à gérer. Comme alternative, vous pouvez envisager de mettre en œuvre un système de classification hiérarchique utilisant un mélange de classificateurs.
- Organisez vos intentions dans une structure d’arbre taxonomique.
- Créez une série de classificateurs à chaque niveau de l’arbre, permettant une approche de routage en cascade.
Par exemple, vous pourriez avoir un classificateur de premier niveau 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 de nuance et de 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 à un traitement plus nuancé 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.
Utiliser des bases de données vectorielles et la recherche de similarité pour gérer des tickets hautement variables
Bien que fournir des exemples soit la façon la 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 employer une base de données vectorielle pour effectuer des recherches de similarité à partir d’un ensemble de données d’exemples et récupérer les exemples les plus pertinents pour une requête donnée.
Cette approche, détaillée dans notre recette de classification, a montré une amélioration des performances de 71% à 93% de précision.
Tenir compte spécifiquement des cas particuliers attendus
Voici quelques scénarios où Claude pourrait mal classifier les tickets (il peut y en avoir d’autres qui sont uniques à votre situation). Dans ces scénarios, envisagez de fournir des instructions explicites ou des exemples dans le prompt sur la façon dont Claude devrait gérer le cas particulier :
Intégrer Claude dans votre flux de travail de support plus large
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 plus large. Il y a deux façons de procéder :
- Basé sur le push : Le système de tickets de support que vous utilisez (par exemple Zendesk) déclenche votre code en envoyant un événement webhook à votre service de routage, qui classifie ensuite l’intention et l’achemine.
- Cette approche est plus évolutive pour le web, mais nécessite que vous exposiez un point de terminaison public.
- Basé sur le pull : Votre code extrait les derniers tickets selon un calendrier donné et les achemine au moment de l’extraction.
- Cette approche est plus facile à mettre en œuvre mais pourrait faire des appels inutiles au système de tickets de support lorsque la fréquence d’extraction est trop élevée ou pourrait être trop lente lorsque la fréquence d’extraction est trop basse.
Pour l’une ou l’autre de ces approches, vous devrez encapsuler votre script dans un service. Le choix de l’approche dépend des API que votre système de billetterie de support fournit.