Avant de construire avec Claude

Décider d’utiliser Claude pour le chat de support

Voici quelques indicateurs clés qui suggèrent que vous devriez employer un LLM comme Claude pour automatiser des portions de votre processus de support client :
Claude excelle dans la gestion efficace d’un grand nombre de questions similaires, libérant les agents humains pour des problèmes plus complexes.
Claude peut rapidement récupérer, traiter et combiner des informations provenant de vastes bases de connaissances, tandis que les agents humains peuvent avoir besoin de temps pour rechercher ou consulter plusieurs sources.
Claude peut fournir un support continu sans fatigue, alors que doter en personnel des agents humains pour une couverture continue peut être coûteux et difficile.
Claude peut gérer des augmentations soudaines du volume de requêtes sans avoir besoin d’embaucher et de former du personnel supplémentaire.
Vous pouvez instruire Claude pour représenter de manière cohérente le ton et les valeurs de votre marque, tandis que les agents humains peuvent varier dans leurs styles de communication.
Quelques considérations pour choisir Claude plutôt que d’autres LLM :
  • Vous privilégiez une conversation naturelle et nuancée : La compréhension sophistiquée du langage de Claude permet des conversations plus naturelles et contextuelles qui semblent plus humaines que les chats avec d’autres LLM.
  • Vous recevez souvent des requêtes complexes et ouvertes : Claude peut gérer une large gamme de sujets et de demandes sans générer de réponses toutes faites ou nécessiter une programmation extensive de permutations d’énoncés utilisateur.
  • Vous avez besoin d’un support multilingue évolutif : Les capacités multilingues de Claude lui permettent de s’engager dans des conversations dans plus de 200 langues sans avoir besoin de chatbots séparés ou de processus de traduction étendus pour chaque langue supportée.

Définir votre interaction de chat idéale

Esquissez une interaction client idéale pour définir comment et quand vous attendez que le client interagisse avec Claude. Cette esquisse aidera à déterminer les exigences techniques de votre solution. Voici un exemple d’interaction de chat pour le support client d’assurance automobile :
  • Client : Initie l’expérience de chat de support
    • Claude : Accueille chaleureusement le client et initie la conversation
  • Client : Pose des questions sur l’assurance pour sa nouvelle voiture électrique
    • Claude : Fournit des informations pertinentes sur la couverture des véhicules électriques
  • Client : Pose des questions liées aux besoins uniques des assurances de véhicules électriques
    • Claude : Répond avec des réponses précises et informatives et fournit des liens vers les sources
  • Client : Pose des questions hors sujet non liées à l’assurance ou aux voitures
    • Claude : Clarifie qu’il ne discute pas de sujets non liés et redirige l’utilisateur vers l’assurance automobile
  • Client : Exprime son intérêt pour un devis d’assurance
    • Claude : Pose une série de questions pour déterminer le devis approprié, s’adaptant à leurs réponses
    • Claude : Envoie une demande pour utiliser l’outil API de génération de devis avec les informations nécessaires collectées auprès de l’utilisateur
    • Claude : Reçoit les informations de réponse de l’utilisation de l’outil API, synthétise les informations en une réponse naturelle, et présente le devis fourni à l’utilisateur
  • Client : Pose des questions de suivi
    • Claude : Répond aux questions de suivi selon les besoins
    • Claude : Guide le client vers les prochaines étapes du processus d’assurance et clôt la conversation
Dans l’exemple réel que vous écrirez pour votre propre cas d’usage, vous pourriez trouver utile d’écrire les mots réels de cette interaction afin que vous puissiez également avoir une idée du ton idéal, de la longueur de réponse et du niveau de détail que vous voulez que Claude ait.

Décomposer l’interaction en tâches uniques

Le chat de support client est une collection de plusieurs tâches différentes, de la réponse aux questions à la récupération d’informations en passant par la prise d’action sur les demandes, le tout enveloppé dans une seule interaction client. Avant de commencer à construire, décomposez votre interaction client idéale en chaque tâche que vous voulez que Claude soit capable d’effectuer. Cela garantit que vous pouvez prompter et évaluer Claude pour chaque tâche, et vous donne une bonne idée de la gamme d’interactions que vous devez prendre en compte lors de l’écriture de cas de test.
Les clients trouvent parfois utile de visualiser cela comme un organigramme d’interaction des points d’inflexion de conversation possibles selon les demandes des utilisateurs.
Voici les tâches clés associées à l’exemple d’interaction d’assurance ci-dessus :
  1. Salutation et orientation générale
    • Accueillir chaleureusement le client et initier la conversation
    • Fournir des informations générales sur l’entreprise et l’interaction
  2. Information sur les produits
    • Fournir des informations sur la couverture des véhicules électriques
      Cela nécessitera que Claude ait les informations nécessaires dans son contexte, et pourrait impliquer qu’une intégration RAG soit nécessaire.
    • Répondre aux questions liées aux besoins uniques d’assurance de véhicules électriques
    • Répondre aux questions de suivi sur le devis ou les détails de l’assurance
    • Offrir des liens vers les sources quand approprié
  3. Gestion de conversation
    • Rester sur le sujet (assurance automobile)
    • Rediriger les questions hors sujet vers des sujets pertinents
  4. Génération de devis
    • Poser les questions appropriées pour déterminer l’éligibilité au devis
    • Adapter les questions basées sur les réponses du client
    • Soumettre les informations collectées à l’API de génération de devis
    • Présenter le devis fourni au client

Établir des critères de succès

Travaillez avec votre équipe de support pour définir des critères de succès clairs et écrire des évaluations détaillées avec des références et objectifs mesurables. Voici des critères et références qui peuvent être utilisés pour évaluer avec quel succès Claude effectue les tâches définies :
Cette métrique évalue avec quelle précision Claude comprend les demandes des clients à travers divers sujets. Mesurez cela en examinant un échantillon de conversations et en évaluant si Claude a la bonne interprétation de l’intention du client, les prochaines étapes critiques, à quoi ressemble une résolution réussie, et plus encore. Visez une précision de compréhension de 95% ou plus.
Cela évalue à quel point la réponse de Claude traite la question ou le problème spécifique du client. Évaluez un ensemble de conversations et notez la pertinence de chaque réponse (en utilisant la notation basée sur LLM pour l’échelle). Ciblez un score de pertinence de 90% ou plus.
Évaluez la justesse des informations générales sur l’entreprise et les produits fournies à l’utilisateur, basées sur les informations fournies à Claude en contexte. Ciblez 100% de précision dans ces informations d’introduction.
Suivez la fréquence et la pertinence des liens ou sources offerts. Ciblez la fourniture de sources pertinentes dans 80% des interactions où des informations supplémentaires pourraient être bénéfiques.
Mesurez à quel point Claude reste sur le sujet, comme le sujet de l’assurance automobile dans notre exemple d’implémentation. Visez 95% des réponses directement liées à l’assurance automobile ou à la requête spécifique du client.
Mesurez avec quel succès Claude détermine quand générer du contenu informatif et à quel point ce contenu est pertinent. Par exemple, dans notre implémentation, nous déterminerions à quel point Claude comprend quand générer un devis et à quel point ce devis est précis. Ciblez 100% de précision, car c’est une information vitale pour une interaction client réussie.
Cela mesure la capacité de Claude à reconnaître quand une requête nécessite une intervention humaine et à escalader de manière appropriée. Suivez le pourcentage de conversations correctement escaladées versus celles qui auraient dû être escaladées mais ne l’ont pas été. Visez une précision d’escalade de 95% ou plus.
Voici des critères et références qui peuvent être utilisés pour évaluer l’impact commercial de l’emploi de Claude pour le support :
Cela évalue la capacité de Claude à maintenir ou améliorer le sentiment du client tout au long de la conversation. Utilisez des outils d’analyse de sentiment pour mesurer le sentiment au début et à la fin de chaque conversation. Visez un sentiment maintenu ou amélioré dans 90% des interactions.
Le pourcentage de demandes clients gérées avec succès par le chatbot sans intervention humaine. Visez généralement un taux de déviation de 70-80%, selon la complexité des demandes.
Une mesure de la satisfaction des clients avec leur interaction avec le chatbot. Généralement fait par des enquêtes post-interaction. Visez un score CSAT de 4 sur 5 ou plus.
Le temps moyen qu’il faut au chatbot pour résoudre une demande. Cela varie largement selon la complexité des problèmes, mais généralement, visez un AHT plus bas comparé aux agents humains.

Comment implémenter Claude comme agent de service client

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. Pour le chat de support client, claude-opus-4-1-20250805 est bien adapté pour équilibrer intelligence, latence et coût. Cependant, pour les instances où vous avez un flux de conversation avec plusieurs prompts incluant RAG, utilisation d’outils, et/ou prompts de contexte long, claude-3-haiku-20240307 peut être plus approprié pour optimiser la latence.

Construire un prompt solide

Utiliser Claude pour le support client nécessite que Claude ait suffisamment de direction et de contexte pour répondre de manière appropriée, tout en ayant suffisamment de flexibilité pour gérer une large gamme de demandes clients. Commençons par écrire les éléments d’un prompt solide, en commençant par un prompt système :
IDENTITY = """Vous êtes Eva, une assistante IA amicale et compétente pour Acme Insurance 
Company. Votre rôle est d'accueillir chaleureusement les clients et de fournir des informations sur 
les offres d'assurance d'Acme, qui incluent l'assurance automobile et l'assurance 
automobile électrique. Vous pouvez également aider les clients à obtenir des devis pour leurs besoins d'assurance."""
Bien que vous puissiez être tenté de mettre toutes vos informations dans un prompt système comme moyen de séparer les instructions de la conversation utilisateur, Claude fonctionne en fait mieux avec la majeure partie de son contenu de prompt écrit dans le premier tour User (à la seule exception du prompting de rôle). Lisez plus sur Donner un rôle à Claude avec un prompt système.
Il est préférable de décomposer les prompts complexes en sous-sections et d’écrire une partie à la fois. Pour chaque tâche, vous pourriez trouver plus de succès en suivant un processus étape par étape pour définir les parties du prompt dont Claude aurait besoin pour bien faire la tâche. Pour cet exemple de support client d’assurance automobile, nous écrirons par morceaux toutes les parties d’un prompt en commençant par la tâche “Salutation et orientation générale”. Cela rend également le débogage de votre prompt plus facile car vous pouvez plus rapidement ajuster des parties individuelles du prompt global. Nous mettrons toutes ces pièces dans un fichier appelé config.py.
STATIC_GREETINGS_AND_GENERAL = """
<static_context>
Acme Auto Insurance : Votre Compagnon de Confiance sur la Route

À propos :
Chez Acme Insurance, nous comprenons que votre véhicule est plus qu'un simple moyen de transport—c'est votre billet pour les aventures de la vie. 
Depuis 1985, nous créons des polices d'assurance automobile qui donnent aux conducteurs la confiance d'explorer, de faire la navette et de voyager en toute tranquillité d'esprit.
Que vous naviguiez dans les rues de la ville ou que vous vous embarquiez dans des voyages à travers le pays, Acme est là pour vous protéger, vous et votre véhicule. 
Nos polices d'assurance automobile innovantes sont conçues pour s'adapter à vos besoins uniques, couvrant tout des accrochages mineurs aux collisions majeures.
Avec le service client primé d'Acme et la résolution rapide des réclamations, vous pouvez vous concentrer sur la joie de conduire pendant que nous nous occupons du reste. 
Nous ne sommes pas seulement un fournisseur d'assurance—nous sommes votre copilote dans les voyages de la vie.
Choisissez Acme Auto Insurance et expérimentez l'assurance qui vient avec une couverture supérieure et un soin authentique. Parce que chez Acme, nous n'assurons pas seulement votre voiture—nous alimentons vos aventures sur la route ouverte.

Note : Nous offrons également une couverture spécialisée pour les véhicules électriques, garantissant que les conducteurs de tous types de voitures peuvent bénéficier de notre protection.

Acme Insurance offre les produits suivants :
- Assurance automobile
- Assurance automobile électrique
- Assurance deux-roues

Heures d'ouverture : Lundi-Vendredi, 9h - 17h EST
Numéro de service client : 1-800-123-4567
</static_context>
"""
Nous ferons ensuite la même chose pour nos informations d’assurance automobile et d’assurance automobile électrique.
STATIC_CAR_INSURANCE="""
<static_context>
Couverture d'Assurance Automobile :
Les polices d'assurance automobile d'Acme couvrent généralement :
1. Couverture de responsabilité : Paie pour les blessures corporelles et les dommages matériels que vous causez à autrui.
2. Couverture collision : Paie pour les dommages à votre voiture dans un accident.
3. Couverture complète : Paie pour les dommages à votre voiture d'incidents non-collision.
4. Couverture des paiements médicaux : Paie pour les frais médicaux après un accident.
5. Couverture automobiliste non assuré/sous-assuré : Vous protège si vous êtes frappé par un conducteur avec une assurance insuffisante.

Les couvertures optionnelles incluent :
- Remboursement de voiture de location
- Assistance routière
- Remplacement de voiture neuve
</static_context>
"""

STATIC_ELECTRIC_CAR_INSURANCE="""
<static_context>
Assurance Automobile Électrique :
Notre assurance automobile électrique spécialisée va au-delà de la couverture automobile traditionnelle, 
offrant une protection sur mesure pour votre investissement high-tech. En plus des couvertures standard, nous offrons :
- Protection des systèmes de batterie coûteux
- Couverture de l'équipement de charge à domicile
- Adaptation au monde en évolution rapide des véhicules électriques

Que vous conduisiez une Rivian, Nissan Leaf, Chevrolet Bolt, 
ou tout autre véhicule électrique, nos agents compétents sont prêts à créer une police 
qui vous donne la confiance de profiter de chaque mile alimenté par électron.
</static_context>
"""
Maintenant que nous avons notre contenu statique, ajoutons au moins 4-5 exemples d’interactions “bonnes” pour guider les réponses de Claude. Ces exemples devraient être représentatifs de votre interaction client idéale et peuvent inclure des garde-fous, des appels d’outils, etc.
EXAMPLES="""
Voici quelques exemples de comment vous pouvez interagir avec les clients :

<example 1>
H: Salut, offrez-vous une assurance commerciale pour les petites entreprises ?

A: Ah ! Malheureusement, nous n'offrons pas d'assurance commerciale en ce moment. 
Cependant, nous fournissons une gamme de produits d'assurance personnelle incluant l'assurance automobile et l'assurance automobile électrique. 
Aimeriez-vous en savoir plus sur ces offres ?
</example 1>

<example 2>
H: Salut, quelles sont vos heures d'ouverture ?

A: Nos heures d'ouverture sont du lundi au vendredi, de 9h à 17h EST. 
Si vous avez des questions ou avez besoin d'assistance, n'hésitez pas à nous contacter pendant ces heures. 
Comment puis-je vous aider d'autre aujourd'hui ?
</example 2>

<example 3>
H: Je cherche une assurance automobile. Qu'est-ce qu'Acme offre ?

A: Excellent choix ! Les polices d'assurance automobile d'Acme incluent généralement :
- Couverture de responsabilité : Vous protège si vous êtes en faute dans un accident
- Couverture collision : Paie pour les dommages à votre voiture dans un accident
- Couverture complète : Couvre les incidents non-collision comme le vol ou le vandalisme
- Couverture des paiements médicaux : Paie pour les frais médicaux après un accident
- Couverture automobiliste non assuré/sous-assuré : Vous protège des conducteurs avec une assurance insuffisante

Nous offrons également des couvertures optionnelles comme le remboursement de voiture de location, l'assistance routière, et le remplacement de voiture neuve. 
Aimeriez-vous plus de détails sur l'une de ces couvertures, ou avez-vous des questions spécifiques sur l'assurance de votre véhicule ?
</example 3>

<example 4>
H: J'aimerais entendre parler de votre assurance automobile électrique.

A: Certainement ! Notre assurance automobile électrique est spécialement conçue pour répondre aux besoins uniques des propriétaires de véhicules électriques. 
En plus de toutes les couvertures standard que nous offrons pour les voitures régulières, nos polices de voitures électriques incluent :

- Couverture de batterie : Protection contre les dommages ou la dégradation du système de batterie coûteux de votre véhicule
- Pack technologique : Couvre les réparations ou le remplacement de l'électronique avancée et des systèmes informatiques embarqués
- Couverture de station de charge : Protège à la fois l'équipement de charge à domicile et portable
- Protection cybersécurité : Couverture contre le piratage ou les menaces numériques
- Assistance routière spécialisée : Inclut le remorquage sur plateau pour protéger le dessous de caisse du véhicule

Nous couvrons une large gamme de véhicules électriques, incluant les modèles populaires de Tesla, Rivian, Nissan, Chevrolet, et plus encore. 
Y a-t-il un véhicule électrique spécifique que vous cherchez à assurer, ou aimeriez-vous plus de détails sur l'une de ces cou vertures ?
</example 4>

<example 5>
H: J'aimerais obtenir un devis pour mon assurance automobile.

A: Certainement ! Je serais ravi de vous aider à obtenir un devis pour votre assurance automobile. 
Pour vous fournir un devis précis, je vais devoir collecter quelques informations sur votre véhicule et le conducteur principal. 
Commençons par les bases :

1. Quelle est la marque et le modèle de votre véhicule ?
2. En quelle année a-t-il été fabriqué ?
3. Approximativement combien de miles avez-vous conduit ?
4. Quel est l'âge du conducteur principal ?

Une fois que vous fournirez ces informations, j'utiliserai notre outil de devis pour générer un devis d'assurance personnalisé pour vous.
</example 5>
"""
Vous voudrez également inclure toutes instructions importantes décrivant les À faire et À ne pas faire pour comment Claude devrait interagir avec le client. Cela peut provenir de garde-fous de marque ou de politiques de support.
ADDITIONAL_GUARDRAILS = """Veuillez adhérer aux garde-fous suivants :
1. Fournissez seulement des informations sur les types d'assurance listés dans nos offres.
2. Si on vous demande un type d'assurance que nous n'offrons pas, déclarez poliment 
que nous ne fournissons pas ce service.
3. Ne spéculez pas sur les futures offres de produits ou les plans de l'entreprise.
4. Ne faites pas de promesses ou n'entrez pas dans des accords qu'il n'est pas autorisé à faire.
Vous fournissez seulement des informations et des conseils.
5. Ne mentionnez aucun produit ou service de concurrent.
"""
Maintenant combinons toutes ces sections en une seule chaîne à utiliser comme notre prompt.
TASK_SPECIFIC_INSTRUCTIONS = ' '.join([
   STATIC_GREETINGS_AND_GENERAL,
   STATIC_CAR_INSURANCE,
   STATIC_ELECTRIC_CAR_INSURANCE,
   EXAMPLES,
   ADDITIONAL_GUARDRAILS,
])

Ajouter des capacités dynamiques et agentiques avec l’utilisation d’outils

Claude est capable de prendre des actions et de récupérer des informations dynamiquement en utilisant la fonctionnalité d’utilisation d’outils côté client. Commencez par lister tous les outils externes ou API que le prompt devrait utiliser. Pour cet exemple, nous commencerons avec un outil pour calculer le devis.
Pour rappel, cet outil n’effectuera pas le calcul réel, il signalera simplement à l’application qu’un outil devrait être utilisé avec les arguments spécifiés.
Exemple de calculateur de devis d’assurance :
TOOLS = [{
  "name": "get_quote",
  "description": "Calculer le devis d'assurance basé sur l'entrée utilisateur. La valeur retournée est la prime par mois.",
  "input_schema": {
    "type": "object",
    "properties": {
      "make": {"type": "string", "description": "La marque du véhicule."},
      "model": {"type": "string", "description": "Le modèle du véhicule."},
      "year": {"type": "integer", "description": "L'année de fabrication du véhicule."},
      "mileage": {"type": "integer", "description": "Le kilométrage du véhicule."},
      "driver_age": {"type": "integer", "description": "L'âge du conducteur principal."}
    },
    "required": ["make", "model", "year", "mileage", "driver_age"]
  }
}]

def get_quote(make, model, year, mileage, driver_age):
    """Retourne la prime par mois en USD"""
    # Vous pouvez appeler un endpoint http ou une base de données pour obtenir le devis.
    # Ici, nous simulons un délai de 1 seconde et retournons un devis fixe de 100.
    time.sleep(1)
    return 100

Déployer vos prompts

Il est difficile de savoir à quel point votre prompt fonctionne sans le déployer dans un environnement de production de test et exécuter des évaluations alors construisons une petite application utilisant notre prompt, le SDK Anthropic, et streamlit pour une interface utilisateur. Dans un fichier appelé chatbot.py, commencez par configurer la classe ChatBot, qui encapsulera les interactions avec le SDK Anthropic. La classe devrait avoir deux méthodes principales : generate_message et process_user_input.
from anthropic import Anthropic
from config import IDENTITY, TOOLS, MODEL, get_quote
from dotenv import load_dotenv

load_dotenv()

class ChatBot:
   def __init__(self, session_state):
       self.anthropic = Anthropic()
       self.session_state = session_state

   def generate_message(
       self,
       messages,
       max_tokens,
   ):
       try:
           response = self.anthropic.messages.create(
               model=MODEL,
               system=IDENTITY,
               max_tokens=max_tokens,
               messages=messages,
               tools=TOOLS,
           )
           return response
       except Exception as e:
           return {"error": str(e)}

   def process_user_input(self, user_input):
       self.session_state.messages.append({"role": "user", "content": user_input})

       response_message = self.generate_message(
           messages=self.session_state.messages,
           max_tokens=2048,
       )

       if "error" in response_message:
           return f"Une erreur s'est produite : {response_message['error']}"

       if response_message.content[-1].type == "tool_use":
           tool_use = response_message.content[-1]
           func_name = tool_use.name
           func_params = tool_use.input
           tool_use_id = tool_use.id

           result = self.handle_tool_use(func_name, func_params)
           self.session_state.messages.append(
               {"role": "assistant", "content": response_message.content}
           )
           self.session_state.messages.append({
               "role": "user",
               "content": [{
                   "type": "tool_result",
                   "tool_use_id": tool_use_id,
                   "content": f"{result}",
               }],
           })

           follow_up_response = self.generate_message(
               messages=self.session_state.messages,
               max_tokens=2048,
           )

           if "error" in follow_up_response:
               return f"Une erreur s'est produite : {follow_up_response['error']}"

           response_text = follow_up_response.content[0].text
           self.session_state.messages.append(
               {"role": "assistant", "content": response_text}
           )
           return response_text
      
       elif response_message.content[0].type == "text":
           response_text = response_message.content[0].text
           self.session_state.messages.append(
               {"role": "assistant", "content": response_text}
           )
           return response_text
      
       else:
           raise Exception("Une erreur s'est produite : Type de réponse inattendu")

   def handle_tool_use(self, func_name, func_params):
       if func_name == "get_quote":
           premium = get_quote(**func_params)
           return f"Devis généré : ${premium:.2f} par mois"
      
       raise Exception("Un outil inattendu a été utilisé")

Construire votre interface utilisateur

Testez le déploiement de ce code avec Streamlit en utilisant une méthode principale. Cette fonction main() configure une interface de chat basée sur Streamlit. Nous ferons cela dans un fichier appelé app.py
import streamlit as st
from chatbot import ChatBot
from config import TASK_SPECIFIC_INSTRUCTIONS

def main():
   st.title("Chattez avec Eva, l'Assistante d'Acme Insurance Company🤖")

   if "messages" not in st.session_state:
       st.session_state.messages = [
           {'role': "user", "content": TASK_SPECIFIC_INSTRUCTIONS},
           {'role': "assistant", "content": "Compris"},
       ]

   chatbot = ChatBot(st.session_state)

   # Afficher les messages utilisateur et assistant en sautant les deux premiers
   for message in st.session_state.messages[2:]:
       # ignorer les blocs d'utilisation d'outils
       if isinstance(message["content"], str):
           with st.chat_message(message["role"]):
               st.markdown(message["content"])

   if user_msg := st.chat_input("Tapez votre message ici..."):
       st.chat_message("user").markdown(user_msg)

       with st.chat_message("assistant"):
           with st.spinner("Eva réfléchit..."):
               response_placeholder = st.empty()
               full_response = chatbot.process_user_input(user_msg)
               response_placeholder.markdown(full_response)

if __name__ == "__main__":
   main()
Exécutez le programme avec :
streamlit run app.py

Évaluer vos prompts

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 la performance du chatbot en utilisant un processus systématique combinant des méthodes quantitatives et qualitatives. Créer une évaluation empirique solide basée sur vos critères de succès définis vous permettra d’optimiser vos prompts.
La Console Claude dispose maintenant d’un outil d’Évaluation qui vous permet de tester vos prompts sous divers scénarios.

Améliorer les performances

Dans des scénarios complexes, il peut être utile de considérer des stratégies supplémentaires pour améliorer les performances au-delà des techniques d’ingénierie de prompt standard et des stratégies d’implémentation de garde-fous. Voici quelques scénarios communs :

Réduire la latence de contexte long avec RAG

Lorsqu’on traite de grandes quantités de contexte statique et dynamique, inclure toutes les informations dans le prompt peut conduire à des coûts élevés, des temps de réponse plus lents, et atteindre les limites de fenêtre de contexte. Dans ce scénario, implémenter des techniques de Génération Augmentée par Récupération (RAG) peut significativement améliorer les performances et l’efficacité. En utilisant des modèles d’embedding comme Voyage pour convertir les informations en représentations vectorielles, vous pouvez créer un système plus évolutif et réactif. Cette approche permet la récupération dynamique d’informations pertinentes basées sur la requête actuelle, plutôt que d’inclure tout le contexte possible dans chaque prompt. Implémenter RAG pour les cas d’usage de support recette RAG a montré qu’il augmente la précision, réduit les temps de réponse, et réduit les coûts API dans les systèmes avec des exigences de contexte étendues.

Intégrer des données en temps réel avec l’utilisation d’outils

Lorsqu’on traite des requêtes qui nécessitent des informations en temps réel, comme les soldes de compte ou les détails de police, les approches RAG basées sur l’embedding ne sont pas suffisantes. Au lieu de cela, vous pouvez exploiter l’utilisation d’outils pour améliorer significativement la capacité de votre chatbot à fournir des réponses précises et en temps réel. Par exemple, vous pouvez utiliser l’utilisation d’outils pour rechercher des informations client, récupérer des détails de commande, et annuler des commandes au nom du client. Cette approche, décrite dans notre recette utilisation d’outils : agent de service client, vous permet d’intégrer de manière transparente des données en direct dans les réponses de Claude et de fournir une expérience client plus personnalisée et efficace.

Renforcer les garde-fous d’entrée et de sortie

Lors du déploiement d’un chatbot, surtout dans des scénarios de service client, il est crucial de prévenir les risques associés à la mauvaise utilisation, aux requêtes hors périmètre, et aux réponses inappropriées. Bien que Claude soit intrinsèquement résistant à de tels scénarios, voici des étapes supplémentaires pour renforcer les garde-fous de votre chatbot :
  • Réduire les hallucinations : Implémenter des mécanismes de vérification des faits et des citations pour ancrer les réponses dans les informations fournies.
  • Vérifier croisée les informations : Vérifier que les réponses de l’agent s’alignent avec les politiques de votre entreprise et les faits connus.
  • Éviter les engagements contractuels : S’assurer que l’agent ne fait pas de promesses ou n’entre pas dans des accords qu’il n’est pas autorisé à faire.
  • Atténuer les jailbreaks : Utiliser des méthodes comme les écrans d’innocuité et la validation d’entrée pour empêcher les utilisateurs d’exploiter les vulnérabilités du modèle, visant à générer du contenu inapproprié.
  • Éviter de mentionner les concurrents : Implémenter un filtre de mention de concurrent pour maintenir le focus de marque et ne pas mentionner les produits ou services de concurrent.
  • Garder Claude dans le personnage : Empêcher Claude de changer son style de contexte, même pendant des interactions longues et complexes.
  • Supprimer les Informations Personnellement Identifiables (PII) : À moins d’être explicitement requis et autorisé, supprimer toute PII des réponses.

Réduire le temps de réponse perçu avec le streaming

Lorsqu’on traite des réponses potentiellement longues, implémenter le streaming peut significativement améliorer l’engagement et la satisfaction des utilisateurs. Dans ce scénario, les utilisateurs reçoivent la réponse progressivement au lieu d’attendre que la réponse entière soit générée. Voici comment implémenter le streaming :
  1. Utiliser l’API de Streaming Anthropic pour supporter les réponses en streaming.
  2. Configurer votre frontend pour gérer les chunks de texte entrants.
  3. Afficher chaque chunk dès qu’il arrive, simulant la frappe en temps réel.
  4. Implémenter un mécanisme pour sauvegarder la réponse complète, permettant aux utilisateurs de la voir s’ils naviguent ailleurs et reviennent.
Dans certains cas, le streaming permet l’utilisation de modèles plus avancés avec des latences de base plus élevées, car l’affichage progressif atténue l’impact des temps de traitement plus longs.

Faire évoluer votre Chatbot

À mesure que la complexité de votre Chatbot grandit, votre architecture d’application peut évoluer pour correspondre. Avant d’ajouter d’autres couches à votre architecture, considérez les options suivantes moins exhaustives :
  • Assurez-vous que vous tirez le maximum de vos prompts et optimisez par l’ingénierie de prompt. Utilisez nos guides d’ingénierie de prompt pour écrire les prompts les plus efficaces.
  • Ajoutez des outils supplémentaires au prompt (qui peuvent inclure des chaînes de prompts) et voyez si vous pouvez atteindre la fonctionnalité requise.
Si votre Chatbot gère des tâches incroyablement variées, vous pourriez vouloir considérer l’ajout d’un classificateur d’intention séparé pour router la requête client initiale. Pour l’application existante, cela impliquerait de créer un arbre de décision qui routerait les requêtes client à travers le classificateur puis vers des conversations spécialisées (avec leur propre ensemble d’outils et prompts système). Notez, cette méthode nécessite un appel supplémentaire à Claude qui peut augmenter la latence.

Intégrer Claude dans votre flux de travail de support

Bien que nos exemples se soient concentrés sur des fonctions Python appelables dans un environnement Streamlit, déployer Claude pour un chatbot de support en temps réel nécessite un service API. Voici comment vous pouvez aborder cela :
  1. Créer un wrapper API : Développer un wrapper API simple autour de votre fonction de classification. Par exemple, vous pouvez utiliser Flask API ou Fast API pour envelopper votre code dans un Service HTTP. Votre service HTTP pourrait accepter l’entrée utilisateur et retourner la réponse de l’Assistant dans son intégralité. Ainsi, votre service pourrait avoir les caractéristiques suivantes :
    • Événements Envoyés par le Serveur (SSE) : SSE permet le streaming en temps réel des réponses du serveur vers le client. Ceci est crucial pour fournir une expérience fluide et interactive lors du travail avec les LLM.
    • Mise en cache : Implémenter la mise en cache peut significativement améliorer les temps de réponse et réduire les appels API inutiles.
    • Rétention de contexte : Maintenir le contexte quand un utilisateur navigue ailleurs et revient est important pour la continuité dans les conversations.
  2. Construire une interface web : Implémenter une interface web conviviale pour interagir avec l’agent alimenté par Claude.