Verschlüsselung beim Denken - Amazon Bedrock

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verschlüsselung beim Denken

Die vollständigen Denkinhalte werden verschlüsselt und im Signaturfeld zurückgegeben. Dieses Feld wird verwendet, um zu überprüfen, ob bei der Rückgabe an die API Denkblöcke in Claude generiert wurden. Beim Streamen von Antworten wird die Signatur über ein signature_delta-Ereignis innerhalb eines content_block_delta-Ereignisses direkt vor einem content_block_stop-Ereignis hinzugefügt.

Anmerkung

Denkblöcke müssen nur dann zurückgeschickt werden, wenn Tools mit erweitertem Denken verwendet werden. Andernfalls können Denkblöcke aus früheren Runden weggelassen oder bei der Rückgabe von der API entfernt werden.

Wenn Sie Denkblöcke zurücksenden, empfehlen wir zur Wahrung der Konsistenz und zur Vermeidung potenzieller Probleme, sie in dem Zustand zu belassen, in dem sie empfangen wurden.

Überarbeiten von Denkprozessen in Claude 3.7 Sonnet

Anmerkung

Die folgenden Informationen gelten speziell für Claude 3.7 Sonnet. In Claude-4-Modellen werden Denkprozesse anders gehandhabt und es werden keine überarbeiteten Denkblöcke erzeugt.

In Claude 3.7 Sonnet gilt Folgendes:

  • Gelegentlich werden die internen Argumentationen von Claude durch unsere Sicherheitssysteme aufgedeckt. In diesem Fall verschlüsseln wir einen Teil oder den gesamten Denkblock und geben ihn als redacted_thinking-Block an zurück. redacted_thinking-Blöcke werden entschlüsselt, wenn sie an die API zurückgegeben werden, sodass die Antwort von Claude fortgesetzt werden kann, ohne dass dabei Kontext verloren geht.

  • thinking- und redacted_thinking-Blöcke werden vor den Textblöcken in der Antwort zurückgegeben.

Berücksichtigen Sie bei der Entwicklung kundenorientierter Anwendungen, die erweitertes Denken mit Claude 3.7 Sonnet nutzen, folgende Aspekte:

  • Beachten Sie, dass überarbeitete Denkblöcke verschlüsselte Inhalte enthalten, die für Menschen nicht lesbar sind.

  • Fügen Sie ggf. eine einfache Erklärung hinzu, z. B. „Ein Teil der internen Argumentation von Claude wurde aus Sicherheitsgründen automatisch verschlüsselt. Die Qualität der Antworten wird dadurch nicht beeinträchtigt.“

  • Wenn Sie Benutzern Denkblöcke anzeigen, können Sie überarbeitete Blöcke herausfiltern und dabei normale Denkblöcke beibehalten.

  • Machen Sie deutlich, dass die Verwendung von Features für erweitertes Denken gelegentlich dazu führen kann, dass einige Argumentationen verschlüsselt werden.

  • Implementieren Sie eine angemessene Fehlerbehandlung, um redigiertes Denken ordnungsgemäß und ohne Beeinträchtigung der Benutzeroberfläche zu verwalten.

Hier ist ein Beispiel, das sowohl normale als auch überarbeitete Denkblöcke zeigt:

{ "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..." } ] }
Tipp

Es ist normal, dass die Ausgabe redigierte Denkblöcke enthält. Das Modell kann diese überarbeitete Argumentation dennoch als Grundlage für seine Antworten verwenden und gleichzeitig den Integritätsschutz wahren.

Wenn Sie den Umgang mit überarbeitetem Denken in Ihrer Anwendung testen möchten, können Sie als Prompt die folgende Testzeichenfolge verwenden: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB

Wenn Sie in einer Konversation mit mehreren Runden thinking- und redacted_thinking-Blöcke an die API zurückleiten, müssen Sie den kompletten, unveränderten Block für die letzte Runde des Assistenten wieder in die API aufnehmen. Dies ist entscheidend für die Aufrechterhaltung des Argumentationsflusses des Modells. Wir empfehlen, immer alle Denkblöcke an die API zurückzugeben. Weitere Informationen hierzu finden Sie unter Erweitertes Denken mit der Verwendung des Tools.

Im folgenden Beispiel wird anhand der InvokeModelWithResponseStream-API die Anfrage- und Antwortstruktur bei Verwendung von Denktoken mit Überarbeitungen demonstriert.

Wenn Streaming aktiviert ist, erhalten Sie Denkinhalte von thinking_delta-Ereignissen. Vorgehensweise beim Streaming-Denken:

Anforderung

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

Antwort

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"}