Crittografia Thinking - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crittografia Thinking

Il contenuto completo di Thinking viene crittografato e restituito nel campo della firma. Questo campo viene utilizzato per verificare che i blocchi di Thinking siano stati generati da Claude quando sono stati restituiti all’API. Durante lo streaming delle risposte, la firma viene aggiunta tramite signature_delta all’interno di un evento content_block_delta appena prima dell’evento content_block_stop.

Nota

È strettamente necessario restituire blocchi di Thinking solo durante l’utilizzo di strumenti che prevedono un pensiero esteso. Altrimenti, puoi omettere i blocchi di Thinking presenti nei turni precedenti oppure lasciare che l’API li rimuova automaticamente, quando li restituisci.

Se restituisci i blocchi di Thinking, ti consigliamo di restituirli tutti così come li hai ricevuti, per motivi di coerenza e per evitare potenziali problemi.

Redazione di Thinking in Claude 3.7 Sonnet

Nota

Le seguenti informazioni si applicano specificamente a Claude 3.7 Sonnet. 4 modelli di Claude gestiscono il Thinking in modo diverso e non generano blocchi di Thinking redatti.

In Claude 3.7 Sonnet, vale quanto segue:

  • Occasionalmente, il ragionamento interno di Claude verrà segnalato dai nostri sistemi di sicurezza. Quando si verifica questa situazione, una parte o l’intero blocco Thinking viene crittografato e restituito come blocco redacted_thinking. I blocchi redacted_thinking vengono decrittografati quando vengono restituiti all’API, consentendo a Claude di continuare la risposta senza perdere il contesto.

  • I blocchi thinking e redacted_thinking vengono restituiti prima dei blocchi di testo nella risposta.

Quando crei applicazioni rivolte ai clienti che utilizzano il Thinking esteso con Claude 3.7 Sonnet, considera quanto segue:

  • Tieni presente che i blocchi di Thinking redatti contengono contenuto crittografato che non è leggibile da persone.

  • Potresti fornire una spiegazione semplice come: “Alcuni ragionamenti interni di Claude sono stati crittografati automaticamente per motivi di sicurezza. Ciò non influisce sulla qualità delle risposte”.

  • Se mostri blocchi di Thinking agli utenti, puoi filtrare i blocchi redatti preservando i normali blocchi di Thinking.

  • Sii trasparente sul fatto che l’utilizzo di funzionalità di Thinking esteso può occasionalmente comportare la crittografia di alcuni ragionamenti.

  • Implementa una gestione degli errori appropriata per gestire correttamente il Thinking redatto senza compromettere l’interfaccia utente.

Ecco un esempio che mostra blocchi di Thinking normali e redatti:

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

La visualizzazione di blocchi di Thinking redatti nei risultati è un comportamento previsto. Il modello può ancora utilizzare questo ragionamento redatto per orientare le proprie risposte, mantenendo al contempo i guardrail di sicurezza.

Se hai bisogno di testare la gestione del Thinking redatto nella tua applicazione, puoi usare questa speciale stringa di test come prompt: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB

Quando passi i blocchi thinking e redacted_thinking all’API in una conversazione a più turni, devi includere il blocco completo e non modificato nell’ultima richiesta dell’assistente. Ciò è fondamentale per mantenere il flusso di ragionamento del modello. Consigliamo di restituire sempre tutti i blocchi di Thinking all’API. Per ulteriori dettagli, consulta Pensiero esteso con uso di strumenti.

L’esempio seguente utilizza l’API InvokeModelWithResponseStream per dimostrare la struttura di richiesta e risposta durante l’utilizzo di token di Thinking con redazioni.

Quando lo streaming è abilitato, riceverai contenuti di Thinking dagli eventi thinking_delta. Ecco come gestire lo streaming con il Thinking:

Richiesta

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

Risposta

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