

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criptografia de raciocínio
<a name="claude-messages-thinking-encryption"></a>

O conteúdo de raciocínio completo é criptografado e exibido no campo de assinatura. Esse campo é usado para verificar se os blocos de raciocínio foram gerados pelo Claude quando transmitidos de volta à API. Ao transmitir respostas, a assinatura é adicionada por meio de `content_block_delta` dentro de um evento `signature_delta` um pouco antes do evento `content_block_stop`.

**nota**  
É estritamente necessário devolver blocos de raciocínio ao usar ferramentas com raciocínio estendido. Caso contrário, você pode omitir os blocos de raciocínio dos turnos anteriores ou deixar que a API os remova para você se você os devolver.  
Ao devolver blocos de raciocínio, recomendamos devolver tudo conforme você os recebeu, para fins de consistência e para evitar possíveis problemas.

## Edição de raciocínio no Claude 3.7 Sonnet
<a name="claude-messages-thinking-encryption-redaction"></a>

**nota**  
As informações a seguir se aplicam especificamente aos modelos Claude 3.7 Sonnet e Claude 4 que lidam com o raciocínio de forma diferente e não produzem blocos de raciocínio editados.

No Claude 3.7 Sonnet, o seguinte se aplica:
+ Ocasionalmente, o raciocínio interno do Claude será sinalizado por nossos sistemas de segurança. Quando isso ocorre, criptografamos parte ou todo o bloco de raciocínio e o devolvemos a você como um bloco redacted\$1thinking. Os blocos redacted\$1thinking são descriptografados quando devolvidos à API, permitindo que o Claude dê continuidade à resposta sem perder o contexto.
+ Os blocos `thinking` e `redacted_thinking` são exibidos antes dos blocos de texto na resposta.

Ao criar aplicações voltadas para o cliente que usam o raciocínio estendido com o Claude 3.7 Sonnet, você deve:
+ Lembrar-se de que os blocos de raciocínio editados contêm conteúdo criptografado que não é legível por humanos.
+ Considerar a possibilidade de fornecer uma explicação simples, como: “Alguns raciocínios internos do Claude foram criptografados automaticamente por motivos de segurança. Isso não afeta a qualidade das respostas”.
+ Filtrar os blocos editados e, ao mesmo tempo, preservar os blocos de raciocínio normais, se você exibir blocos de raciocínio para os usuários.
+ Ser transparente, pois, ao usar recursos de raciocínio estendido, ocasionalmente algum raciocínio pode acabar sendo criptografado.
+ Implementar o tratamento adequado de erros para gerenciar com tranquilidade o raciocínio editado sem provocar falhas em sua interface de usuário.

Veja abaixo um exemplo que mostra blocos de raciocínio normais e editados:

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

**dica**  
Ver blocos de raciocínio editados em sua saída é um comportamento esperado. O modelo ainda assim pode usar esse raciocínio editado para respaldar as respectivas respostas, mantendo as barreiras de proteção de segurança.  
Se precisar testar o tratamento do raciocínio editado em sua aplicação, é possível usar esta string de teste especial como prompt: `ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB`.

Ao transmitir os blocos `thinking` e `redacted_thinking` de volta à API em uma conversa de vários turnos, é necessário incluir o bloco completo não modificado de volta na API para o último turno do assistente. Isso é fundamental para manter o fluxo de raciocínio. Sugerimos sempre devolver todos os blocos de raciocínio à API. Para obter mais detalhes, consulte [Raciocínio estendido com o uso de ferramentasPreservar blocos de raciocínio](claude-messages-extended-thinking.md#claude-messages-extended-thinking-tool-use-thinking-blocks).

O exemplo a seguir usa a **InvokeModelWithResponseStream**API para demonstrar a estrutura de solicitação e resposta ao usar tokens de pensamento com redações.

Quando o streaming estiver habilitado, você receberá conteúdo inteligente dos eventos thinking\$1delta. Veja como lidar com o streaming com raciocínio:

**Solicitação**

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

**Resposta**

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