Chiffrement des raisonnements - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Chiffrement des raisonnements

Le contenu complet des raisonnements est crypté et renvoyé dans le champ de signature. Ce champ est utilisé pour vérifier que les blocs de raisonnement ont été générés par Claude lorsqu’ils sont renvoyés à l’API. Lors du streaming des réponses, la signature est ajoutée via un signature_delta à l’intérieur d’un événement content_block_delta juste avant l’événement content_block_stop.

Note

Il n’est strictement nécessaire de renvoyer des blocs de raisonnement que lors de l’utilisation d’outils de raisonnement étendu. Sinon, vous pouvez omettre les blocs de raisonnement des tours précédents, ou laisser l’API les supprimer pour vous si vous les renvoyez.

Si vous renvoyez des blocs de raisonnement, nous vous recommandons de tous les transmettre tel que vous les avez reçu pour des raisons de cohérence et afin d’éviter d’éventuels problèmes.

Expurgation des raisonnements dans Claude 3.7 Sonnet

Note

Les informations suivantes s’appliquent spécifiquement à Claude 3.7 Sonnet. Les modèles Claude 4 gèrent les raisonnements différemment et ne produisent pas de blocs de raisonnement expurgés.

Dans Claude 3.7 Sonnet, les conditions suivantes s’appliquent :

  • Occasionnellement, le raisonnement interne de Claude sera signalé par nos systèmes de sécurité. Lorsque cela se produit, nous chiffrons une partie ou la totalité du bloc de raisonnement et nous vous le renvoyons sous forme de bloc redacted_thinking (raisonnement expurgé). Les blocs redacted_thinking sont déchiffrés lorsqu’ils sont renvoyés à l’API, ce qui permet à Claude de poursuivre sa réponse sans perdre de contexte.

  • Les blocs thinking et redacted_thinking sont renvoyés avant les blocs de texte dans la réponse.

Lorsque vous créez des applications destinées aux clients qui font appel au raisonnement étendu avec Claude 3.7 Sonnet, tenez compte des points suivants :

  • Sachez que les blocs de raisonnement expurgés contiennent du contenu chiffré qui n’est pas lisible par l’homme.

  • Envisagez de fournir une explication simple telle que : « Certains raisonnements internes de Claude ont été automatiquement chiffrés pour des raisons de sécurité. Cela n’affecte pas la qualité des réponses. »

  • Si vous présentez des blocs de raisonnement aux utilisateurs, vous pouvez filtrer les blocs expurgés tout en préservant les blocs de raisonnement normaux.

  • Sachez que l’utilisation de fonctionnalités de raisonnement étendu peut parfois entraîner le chiffrement de certains raisonnements.

  • Mettez en œuvre une gestion des erreurs appropriée pour gérer de façon fluide les raisonnements expurgés sans endommager votre interface utilisateur.

Voici un exemple illustrant à la fois des blocs de raisonnement normaux et des blocs de raisonnement expurgés :

{ "content": [ { "type": "thinking", "thinking": "Let me analyze this step by step...", "signature":"WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...." }, { "type": "redacted_thinking", "data":"EmwKAhgBEgy3va3pzix/LafPsn4aDFIT2Xlxh0L5L8rLVyIwxtE3rAFBa8cr3qpP..." }, { "type": "text", "text": "Based on my analysis..." } ] }
Astuce

La présence de blocs de raisonnement expurgés dans une sortie est un comportement attendu. Le modèle peut toujours utiliser ce raisonnement expurgé pour éclairer ses réponses tout en maintenant les barrières de protection de sécurité.

Si vous avez besoin de tester la gestion du raisonnement expurgé dans votre application, vous pouvez utiliser cette chaîne de test spéciale comme invite : ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB

Lorsque vous renvoyez les blocs thinking et redacted_thinking vers l’API dans le cadre d’une conversation à plusieurs tours, vous devez inclure le bloc complet non modifié dans l’API pour le dernier tour de l’assistant. Ceci est essentiel pour maintenir le flux de raisonnement du modèle. Nous vous suggérons de toujours renvoyer tous les blocs de raisonnement à l’API. Pour plus de détails, consultez Réflexion approfondie avec utilisation d’outils.

L’exemple suivant utilise l’API InvokeModelWithResponseStream pour illustrer la structure de demande et de réponse lors de l’utilisation de jetons de raisonnement avec des expurgations.

Lorsque le streaming est activé, vous recevrez du contenu de raisonnement issu des événements thinking_delta. Voici comment gérer le streaming avec raisonnement :

Demande

{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 24000, "thinking": { "type": "enabled", "budget_tokens": 16000 }, "messages": [ { "role": "user", "content": "What is 27 * 453?" } ] }

Réponse

event: message_start data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-3-7-sonnet-20250219", "stop_reason": null, "stop_sequence": null}} event: content_block_start data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": ""}} event: content_block_delta data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "Let me solve this step by step:\n\n1. First break down 27 * 453"}} event: content_block_delta data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n2. 453 = 400 + 50 + 3"}} // Additional thinking deltas... event: content_block_delta data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}} event: content_block_stop data: {"type": "content_block_stop", "index": 0} event: content_block_start data: {"type": "content_block_start", "index": 1, "content_block": {"type": "text", "text": ""}} event: content_block_delta data: {"type": "content_block_delta", "index": 1, "delta": {"type": "text_delta", "text": "27 * 453 = 12,231"}} // Additional text deltas... event: content_block_stop data: {"type": "content_block_stop", "index": 1} event: message_delta data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null}} event: message_stop data: {"type": "message_stop"}