Claude Platform Docs
  • Messages
  • Agents gérés
  • Administration

Search...
⌘K
Premiers pas
Introduction à ClaudeDémarrage rapide
Développer avec Claude
Aperçu des fonctionnalitésUtilisation de l'API MessagesRaisons d'arrêt et repliRefus et repliCrédit de repli
Capacités du modèle
Réflexion étendueRéflexion adaptativeEffortBudgets de tâches (bêta)Mode rapide (aperçu de recherche)Sorties structuréesCitationsStreaming des messagesTraitement par lotsRésultats de rechercheStreaming des refusPrise en charge multilingueEmbeddings
Outils
AperçuFonctionnement de l'utilisation d'outilsTutoriel : Créer un agent utilisant des outilsDéfinir des outilsGérer les appels d'outilsUtilisation d'outils en parallèleTool Runner (SDK)Utilisation d'outils stricteUtilisation d'outils avec mise en cache des promptsOutils serveurDépannageOutil de recherche webOutil de récupération webOutil d'exécution de codeOutil conseillerOutil de mémoireOutil BashOutil d'utilisation de l'ordinateurOutil d'éditeur de texte
Infrastructure des outils
Référence des outilsGérer le contexte des outilsCombinaisons d'outilsRecherche d'outilsAppel d'outils programmatiqueStreaming d'outils granulaire
Gestion du contexte
Fenêtres de contexteCompactageÉdition du contexteMise en cache des promptsMessages système en cours de conversationCréer un mode d'orchestrationDiagnostics de cache (bêta)Comptage de tokens
Travailler avec des fichiers
API FilesPrise en charge des PDFImages et vision
Compétences
AperçuDémarrage rapideBonnes pratiquesCompétences pour l'entrepriseCompétences dans l'API
MCP
Serveurs MCP distantsConnecteur MCP
Claude sur les plateformes cloud
Amazon BedrockAmazon Bedrock (ancien)Claude Platform sur AWSMicrosoft FoundryVertex AI

Log in
Streaming des refus
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Messages/Capacités du modèle

Refus en streaming

Détectez et gérez les raisons d'arrêt de type refus dans les réponses en streaming, et relancez les requêtes refusées sur un modèle de secours.

À partir des modèles Claude 4, les réponses en streaming de l'API de Claude renvoient stop_reason: "refusal" lorsque les classificateurs de streaming interviennent pour gérer des violations potentielles des politiques. Cette fonctionnalité de sécurité contribue à maintenir la conformité du contenu pendant le streaming en temps réel.



Cette page explique comment les refus apparaissent dans les réponses en streaming. Pour connaître toutes les valeurs de stop_reason et savoir comment les gérer, consultez Raisons d'arrêt et modèle de secours. Pour relancer les requêtes refusées sur un autre modèle Claude, consultez Refus et modèle de secours.

Format de réponse de l'API

Lorsque les classificateurs de streaming détectent du contenu qui enfreint les politiques d'Anthropic, l'API renvoie cette réponse :

{
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hello.."
    }
  ],
  "stop_reason": "refusal"
}


Aucun message de refus supplémentaire n'est inclus. Vous devez gérer la réponse et fournir un message approprié destiné à l'utilisateur.

Réinitialiser le contexte après un refus

Lorsque vous recevez stop_reason: refusal, vous devez réinitialiser le contexte de la conversation avant de continuer. Vous pouvez supprimer ou reformuler le tour qui a déclenché le refus, ou effacer entièrement l'historique de la conversation. Toute tentative de poursuivre sans réinitialisation entraînera des refus répétés.



Les métriques d'utilisation sont toujours fournies dans la réponse, même lorsque celle-ci est refusée.

Lorsqu'un refus survient avant que Claude ne génère une quelconque sortie, la requête ne vous est pas facturée sur l'API Claude, et les décomptes d'utilisation dans cette réponse sont fournis à titre informatif uniquement. Lorsque Claude génère une sortie avant le refus, cette requête vous est facturée.



La réinitialisation du contexte n'est pas le seul moyen de récupérer. Vous pouvez également relancer la requête refusée sur un autre modèle Claude, et la page Refus et modèle de secours explique comment configurer cela avec le mécanisme de secours côté serveur, le middleware du SDK ou une relance manuelle.

Guide d'implémentation

Voici comment détecter et gérer les refus en streaming dans votre application :

client = anthropic.Anthropic()
messages = []


def reset_conversation():
    """Reset conversation context after refusal"""
    global messages
    messages = []
    print("Conversation reset due to refusal")


try:
    with client.messages.stream(
        max_tokens=1024,
        messages=messages + [{"role": "user", "content": "Hello"}],
        model="claude-opus-4-8",
    ) as stream:
        for event in stream:
            # Vérifier la présence d'un refus dans le delta du message
            if event.type == "message_delta":
                if event.delta.stop_reason == "refusal":
                    reset_conversation()
                    break
except Exception as e:
    print(f"Error: {e}")

Types de refus actuels

L'API gère actuellement les refus de trois manières différentes :

Type de refusFormat de réponseQuand cela se produit
Refus des classificateurs de streamingstop_reason: refusalPendant le streaming, lorsque le contenu enfreint les politiques
Validation des entrées de l'API et des droits d'auteurCodes d'erreur 400Lorsque l'entrée échoue aux contrôles de validation
Refus générés par le modèleRéponses textuelles standardLorsque le modèle lui-même décide de refuser


Les futures versions de l'API étendront le modèle stop_reason: refusal afin d'unifier la gestion des refus pour tous les types.

Bonnes pratiques

  • Surveillez les refus : incluez des vérifications de stop_reason: refusal dans votre gestion des erreurs.
  • Réinitialisez automatiquement : implémentez une réinitialisation automatique du contexte lorsque des refus sont détectés.
  • Basculez vers un autre modèle : configurez le mécanisme de secours côté serveur ou le middleware du SDK afin que les requêtes refusées soient relancées sur un autre modèle Claude au lieu d'afficher un refus à l'utilisateur.
  • Utilisez le crédit de secours lors des relances manuelles : si vous implémentez vous-même la relance, transmettez le jeton de crédit de secours du refus afin que la relance ne paie pas deux fois le coût du cache de prompt.
  • Fournissez des messages personnalisés : créez des messages conviviaux pour une meilleure expérience utilisateur lorsque des refus surviennent.
  • Suivez les tendances de refus : surveillez la fréquence des refus pour identifier d'éventuels problèmes avec vos prompts.

Notes de migration

Si vous avez mis en place la gestion des refus lors du lancement initial de cette fonctionnalité, ou si vous l'ajoutez à une intégration existante, vérifiez les points suivants :

  • Les refus sont des réponses, pas des erreurs. Un refus arrive sous la forme d'une réponse HTTP 200 réussie avec stop_reason: "refusal", de sorte qu'une surveillance basée uniquement sur les taux d'erreur ne le détectera pas. Suivez les refus comme un signal distinct.
  • Les modèles plus récents renvoient plus de détails. Sur Claude Fable 5, un refus inclut également un objet stop_details qui identifie la catégorie de politique à l'origine du refus. Consultez Refus et modèle de secours pour la structure complète de la réponse.
  • Relancez sur un modèle différent. Renvoyer une requête refusée au même modèle entraîne généralement un nouveau refus. Au lieu de simplement réinitialiser le contexte, relancez sur un modèle de secours avec le mécanisme de secours côté serveur, le middleware du SDK ou une relance manuelle, et utilisez le crédit de secours lorsque vous implémentez vous-même la relance.
  • Vérifiez les résultats de lot pour détecter les refus. Une requête refusée dans un Message Batch est renvoyée comme un résultat réussi avec stop_reason: "refusal", et non comme un résultat en erreur.
  • Centralisez la gestion sur stop_reason. L'API continue de consolider la gestion des refus autour de stop_reason: "refusal", donc basez vos branchements sur la raison d'arrêt plutôt que sur un comportement spécifique au modèle.

Étapes suivantes

Refus et modèle de secours

Relancez les requêtes refusées sur un autre modèle Claude, côté serveur ou dans votre client.


Raisons d'arrêt et modèle de secours

Toutes les valeurs de stop_reason et comment les gérer.


Messages en streaming

Diffusez les réponses en streaming et lisez stop_reason depuis les événements message_delta au fur et à mesure de leur arrivée.


Prise en charge multilingue

Servez des utilisateurs dans plusieurs langues grâce aux capacités interlinguistiques de Claude.

Was this page helpful?

  • Format de réponse de l'API
  • Réinitialiser le contexte après un refus
  • Guide d'implémentation
  • Types de refus actuels
  • Bonnes pratiques
  • Notes de migration
  • Étapes suivantes