Avant de construire avec Claude

Décider si Claude convient au support par chat

Voici quelques indicateurs clés qui suggèrent que vous devriez employer un LLM comme Claude pour automatiser certaines parties de votre processus de support client :

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 discussions avec d’autres LLM.
  • Vous recevez souvent des requêtes complexes et ouvertes : Claude peut gérer un large éventail de sujets et de demandes sans générer de réponses préfabriquées ou nécessiter une programmation extensive des permutations d’énoncés utilisateurs.
  • Vous avez besoin d’un support multilingue évolutif : les capacités multilingues de Claude lui permettent de participer à des conversations dans plus de 200 langues sans avoir besoin de chatbots séparés ou de processus de traduction étendus pour chaque langue prise en charge.

Définir votre interaction de chat idéale

Esquissez une interaction client idéale pour définir comment et quand vous vous attendez à ce 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 entame 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 d’assurance pour 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 sans rapport avec l’assurance ou les voitures
    • Claude : Précise qu’il ne discute pas de sujets non liés et ramène l’utilisateur à 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é, en 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 recueillies 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 complémentaires
    • Claude : Répond aux questions complémentaires selon les besoins
    • Claude : Guide le client vers les prochaines étapes du processus d’assurance et clôture la conversation
Dans l’exemple réel que vous rédigez pour votre propre cas d’utilisation, vous pourriez trouver utile d’écrire les mots exacts de cette interaction afin d’avoir également une idée du ton idéal, de la longueur des réponses et du niveau de détail que vous souhaitez que Claude ait.

Décomposer l’interaction en tâches uniques

Le chat de support client est un ensemble de plusieurs tâches différentes, allant de la réponse aux questions à la récupération d’informations en passant par l’exécution de demandes, le tout dans une seule interaction client. Avant de commencer à construire, décomposez votre interaction client idéale en chaque tâche que vous souhaitez que Claude puisse effectuer. Cela garantit que vous pouvez inciter et évaluer Claude pour chaque tâche, et vous donne une bonne idée de la gamme d’interactions dont vous devez tenir compte lors de la rédaction de cas de test.

Les clients trouvent parfois utile de visualiser cela comme un organigramme d’interaction des points d’inflexion possibles de la conversation en fonction des demandes des utilisateurs.

Voici les tâches clés associées à l’exemple d’interaction d’assurance ci-dessus :

  1. Accueil 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. Informations sur le produit

    • Fournir des informations sur la couverture des véhicules électriques
      Cela nécessitera que Claude dispose des 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 spécifiques d’assurance pour véhicules électriques
    • Répondre aux questions complémentaires sur le devis ou les détails de l’assurance
    • Offrir des liens vers les sources lorsque c’est approprié
  3. Gestion de la conversation

    • Rester dans 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 en fonction des 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 rédigez des évaluations détaillées avec des repères et des objectifs mesurables.

Voici des critères et des repères qui peuvent être utilisés pour évaluer la réussite avec laquelle Claude exécute les tâches définies :

Voici des critères et des repères qui peuvent être utilisés pour évaluer l’impact commercial de l’emploi de Claude pour le support :

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

Construire un prompt solide

L’utilisation de 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 assez de flexibilité pour gérer un large éventail 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 la société 
Acme Insurance. Votre rôle est d'accueillir chaleureusement les clients et de fournir 
des informations sur les offres d'assurance d'Acme, qui comprennent l'assurance 
automobile et l'assurance pour voitures électriques. Vous pouvez également aider 
les clients à obtenir des devis pour leurs besoins en 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 du contenu de son prompt écrit dans le premier tour User (la seule exception étant le prompt de rôle). En savoir 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 obtenir plus de succès en suivant un processus étape par étape pour définir les parties du prompt dont Claude aurait besoin pour bien accomplir la tâche. Pour cet exemple de support client d’assurance automobile, nous écrirons progressivement toutes les parties d’un prompt en commençant par la tâche “Accueil et orientation générale”. Cela facilite également le débogage de votre prompt car vous pouvez ajuster plus rapidement 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 concevons des polices d'assurance automobile qui donnent aux conducteurs la confiance nécessaire pour explorer, se déplacer et voyager l'esprit tranquille.
Que vous naviguiez dans les rues de la ville ou que vous vous lanciez 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 le plaisir 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 faites l'expérience de l'assurance qui accompagne 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.

Remarque : 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 propose les produits suivants :
- Assurance automobile
- Assurance pour voitures électriques
- Assurance deux-roues

Heures d'ouverture : Lundi-Vendredi, 9h - 17h EST
Numéro du service client : 1-800-123-4567
</static_context>
"""

Nous ferons ensuite de même pour nos informations sur l’assurance automobile et l’assurance pour voitures électriques.

STATIC_CAR_INSURANCE="""
<static_context>
Couverture d'assurance automobile :
Les polices d'assurance automobile d'Acme couvrent généralement :
1. Couverture responsabilité civile : Paie pour les dommages corporels et matériels que vous causez à autrui.
2. Couverture collision : Paie pour les dommages à votre voiture lors d'un accident.
3. Couverture tous risques : Paie pour les dommages à votre voiture résultant d'incidents non liés à une collision.
4. Couverture des frais médicaux : Paie les frais médicaux après un accident.
5. Couverture conducteur non assuré/sous-assuré : Vous protège si vous êtes heurté par un conducteur ayant une assurance insuffisante.

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

STATIC_ELECTRIC_CAR_INSURANCE="""
<static_context>
Assurance pour voitures électriques :
Notre assurance spécialisée pour voitures électriques 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 des équipements de recharge à domicile
- Adaptation au monde en rapide évolution des véhicules électriques

Que vous conduisiez une Rivian, une Nissan Leaf, une Chevrolet Bolt, 
ou tout autre véhicule électrique, nos agents compétents sont prêts à élaborer une police 
qui vous donne la confiance nécessaire pour profiter de chaque kilomètre alimenté par électrons.
</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 la façon dont vous pouvez interagir avec les clients :

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

A: Ah ! Malheureusement, nous ne proposons pas d'assurance commerciale pour le moment. 
Cependant, nous offrons une gamme de produits d'assurance personnelle, notamment l'assurance automobile et l'assurance pour voitures électriques. 
Souhaitez-vous en savoir plus sur ces offres ?
</example 1>

<example 2>
H: Bonjour, 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 besoin d'assistance, n'hésitez pas à nous contacter pendant ces heures. 
Comment puis-je vous aider aujourd'hui ?
</example 2>

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

A: Excellent choix ! Les polices d'assurance automobile d'Acme comprennent généralement :
- Couverture responsabilité civile : Vous protège si vous êtes responsable d'un accident
- Couverture collision : Paie pour les dommages à votre voiture lors d'un accident
- Couverture tous risques : Couvre les incidents non liés à une collision comme le vol ou le vandalisme
- Couverture des frais médicaux : Paie les frais médicaux après un accident
- Couverture conducteur non assuré/sous-assuré : Vous protège contre les conducteurs ayant une assurance insuffisante

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

<example 4>
H: J'aimerais en savoir plus sur votre assurance pour voitures électriques.

A: Certainement ! Notre assurance pour voitures électriques 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 ordinaires, nos polices pour voitures électriques comprennent :

- Couverture de la 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 des systèmes électroniques avancés et de l'ordinateur de bord
- Couverture de la station de recharge : Protège les équipements de recharge à domicile et portables
- Protection contre la cybersécurité : Couverture contre le piratage ou les menaces numériques
- Assistance routière spécialisée : Comprend le remorquage à plateau pour protéger le soubassement du véhicule

Nous couvrons une large gamme de véhicules électriques, y compris les modèles populaires de Tesla, Rivian, Nissan, Chevrolet, et plus encore. 
Y a-t-il un véhicule électrique spécifique que vous souhaitez assurer, ou aimeriez-vous plus de détails sur l'une de ces couvertures ?
</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, j'aurai besoin de recueillir 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. Combien de kilomètres avez-vous parcourus approximativement ?
4. Quel est l'âge du conducteur principal ?

Une fois que vous aurez fourni 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 les instructions importantes décrivant les choses à faire et à ne pas faire pour la façon dont Claude devrait interagir avec le client. Cela peut s’inspirer des garde-fous de la marque ou des politiques de support.

ADDITIONAL_GUARDRAILS = """Veuillez respecter les garde-fous suivants :
1. Fournissez uniquement des informations sur les types d'assurance listés dans nos offres.
2. Si on vous interroge sur un type d'assurance que nous n'offrons pas, indiquez 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 ne concluez pas d'accords que vous n'êtes pas autorisé à faire.
Vous fournissez uniquement des informations et des conseils.
5. Ne mentionnez pas les produits ou services d'un 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 ou API externes 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 doit ê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 les entrées de l'utilisateur. La valeur retournée est la prime mensuelle.",
  "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 mensuelle en USD"""
    # Vous pouvez appeler un point de terminaison 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 bien sans le déployer dans un environnement de test de production et exécuter des évaluations, alors construisons une petite application en 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("Discutez avec Eva, l'assistante de la société Acme Insurance🤖")

   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 prompt nécessite souvent des tests et une optimisation pour être prêt pour la production. Pour déterminer si votre solution est prête, évaluez les performances 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 Anthropic propose désormais un outil d’évaluation qui vous permet de tester vos prompts dans divers scénarios.

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 prompt et des stratégies de mise en œuvre de garde-fous. Voici quelques scénarios courants :

Réduire la latence de contexte long avec RAG

Lorsque vous traitez de grandes quantités de contexte statique et dynamique, inclure toutes les informations dans le prompt peut entraîner des coûts élevés, des temps de réponse plus lents et atteindre les limites de la fenêtre de contexte. Dans ce scénario, la mise en œuvre de techniques de Génération Augmentée par Récupération (RAG) peut améliorer significativement 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 une récupération dynamique des informations pertinentes basée sur la requête actuelle, plutôt que d’inclure tout le contexte possible dans chaque prompt.

La mise en œuvre de RAG pour les cas d’utilisation de support recette RAG a montré qu’elle augmente la précision, réduit les temps de réponse et réduit les coûts d’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

Lorsque vous traitez 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 tirer parti de l’utilisation d’outils pour améliorer considérablement la capacité de votre chatbot à fournir des réponses précises 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 d’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 votre 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, en particulier dans des scénarios de service client, il est crucial de prévenir les risques associés à une mauvaise utilisation, à des requêtes hors champ et à des 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 l’hallucination : Mettre en œuvre des mécanismes de vérification des faits et des citations pour ancrer les réponses dans les informations fournies.
  • Vérifier les informations : Vérifier que les réponses de l’agent sont conformes aux politiques de votre entreprise et aux faits connus.
  • Éviter les engagements contractuels : S’assurer que l’agent ne fait pas de promesses ou ne conclut pas d’accords qu’il n’est pas autorisé à faire.
  • Atténuer les jailbreaks : Utiliser des méthodes comme les écrans d’innocuité et la validation des entrées 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 : Mettre en œuvre un filtre de mention des concurrents pour maintenir l’accent sur la marque et ne pas mentionner les produits ou services d’un concurrent.
  • Garder Claude dans son personnage : Empêcher Claude de changer son style de contexte, même pendant des interactions longues et complexes.
  • Supprimer les informations personnellement identifiables (PII) : Sauf si explicitement requis et autorisé, éliminer toute PII des réponses.

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

Lorsque vous traitez des réponses potentiellement longues, la mise en œuvre du streaming peut améliorer considérablement 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 mettre en œuvre le streaming :

  1. Utilisez l’API de streaming Anthropic pour prendre en charge les réponses en streaming.
  2. Configurez votre frontend pour gérer les morceaux de texte entrants.
  3. Affichez chaque morceau à son arrivée, simulant une frappe en temps réel.
  4. Mettez en œuvre un mécanisme pour sauvegarder la réponse complète, permettant aux utilisateurs de la consulter 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.

Mettre à l’échelle votre Chatbot

À mesure que la complexité de votre Chatbot augmente, l’architecture de votre application peut évoluer en conséquence. Avant d’ajouter d’autres couches à votre architecture, considérez les options moins exhaustives suivantes :

  • Assurez-vous de tirer le meilleur parti de vos prompts et d’optimiser 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 prompt) et voyez si vous pouvez obtenir la fonctionnalité requise.

Si votre Chatbot gère des tâches incroyablement variées, vous pourriez envisager d’ajouter un classificateur d’intention séparé pour acheminer la requête initiale du client. Pour l’application existante, cela impliquerait de créer un arbre de décision qui acheminerait les requêtes des clients via le classificateur puis vers des conversations spécialisées (avec leur propre ensemble d’outils et de prompts système). Notez que 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, le déploiement de 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éveloppez un simple wrapper API 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 :

    • Server-Sent Events (SSE) : SSE permet la diffusion en temps réel des réponses du serveur au client. C’est crucial pour fournir une expérience fluide et interactive lors du travail avec les LLM.
    • Mise en cache : La mise en œuvre de la mise en cache peut améliorer considérablement les temps de réponse et réduire les appels API inutiles.
    • Rétention de contexte : Maintenir le contexte lorsqu’un utilisateur navigue ailleurs et revient est important pour la continuité des conversations.
  2. Construire une interface web : Mettez en œuvre une interface utilisateur web conviviale pour interagir avec l’agent alimenté par Claude.