

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cifrado de pensamiento
<a name="claude-messages-thinking-encryption"></a>

El contenido de pensamiento completo se cifra y se devuelve en el campo de firma. Este campo se usa para verificar que Claude generó los bloques de pensamiento cuando se pasaron de vuelta a la API. Al transmitir las respuestas, la firma se añade a través de `signature_delta` dentro de un evento `content_block_delta` justo antes del evento `content_block_stop`.

**nota**  
Solo es estrictamente necesario devolver los bloques de pensamiento cuando se utilizan herramientas con la característica de pensamiento extendido. De lo contrario, puede omitir los bloques de pensamiento de los turnos anteriores o dejar que la API los elimine por usted si se los volvió a pasar.  
Si envía de vuelta los bloques de pensamiento, le recomendamos que lo devuelva todo tal como lo recibió para mantener la coherencia y evitar posibles problemas.

## Redacción de pensamiento en Sonnet Claude 3.7
<a name="claude-messages-thinking-encryption-redaction"></a>

**nota**  
La siguiente información se aplica específicamente a Claude 3.7 Sonnet. Los modelos Claude 4 tratan el pensamiento de manera diferente y no producen bloques de pensamiento redactados.

En Claude 3.7 Sonnet, se aplica lo siguiente.
+ Ocasionalmente, nuestros sistemas de seguridad señalarán el razonamiento interno de Claude. Cuando esto ocurre, ciframos una parte o la totalidad del bloque de pensamiento y se lo devolvemos como un bloque redacted\$1thinking. Los bloques redacted\$1thinking se descifran cuando se devuelven a la API, lo que permite que Claude continúe su respuesta sin perder el contexto.
+ Los bloques `thinking` y `redacted_thinking` se devuelven antes que los bloques de texto de la respuesta.

Al crear aplicaciones orientadas al cliente en las que se utilice el pensamiento ampliado con Claude 3.7 Sonnet, tenga en cuenta lo siguiente:
+ Tenga en cuenta que los bloques de pensamiento redactados contienen contenido cifrado que no es legible para las personas.
+ Considere la posibilidad de proporcionar una explicación sencilla, como la siguiente: “Parte del razonamiento interno de Claude se ha cifrado automáticamente por motivos de seguridad. Esto no afecta a la calidad de las respuestas”.
+ Si muestra bloques de pensamiento a los usuarios, puede filtrar los bloques redactados y, al mismo tiempo, conservar los bloques de pensamiento normales.
+ Sea transparente, ya que el uso de características de pensamiento extendido puede provocar en ocasiones que se cifre parte del razonamiento.
+ Implemente un tratamiento de los errores adecuado para gestionar la característica de pensamiento redactado sin que el funcionamiento de la interfaz de usuario resulte afectado.

Este es un ejemplo que muestra bloques de pensamiento normales y redactados:

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

**sugerencia**  
Ver los bloques de pensamiento redactado en la salida es un comportamiento esperado. El modelo aún puede utilizar este razonamiento redactado para fundamentar sus respuestas y, al mismo tiempo, mantener las barreras de protección.  
Si necesita probar el tratamiento del pensamiento redactado en su aplicación, puede usar esta cadena de prueba especial como petición: `ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB`

Al enviar los bloques `thinking` y `redacted_thinking` de vuelta a la API en una conversación de varios turnos, debe incluir el bloque completo sin modificar correspondiente al último turno de asistente. Esto es fundamental para mantener el flujo de razonamiento del modelo. Le sugerimos que siempre envíe de vuelta todos los bloques de pensamiento a la API. Para obtener más información, consulte [Pensamiento extendido con el uso de herramientasConservación de los bloques de pensamiento](claude-messages-extended-thinking.md#claude-messages-extended-thinking-tool-use-thinking-blocks).

El siguiente ejemplo usa la **InvokeModelWithResponseStream**API para demostrar la estructura de solicitudes y respuestas cuando se usan tokens de pensamiento con redacciones.

Cuando la transmisión esté habilitada, recibirá el contenido de pensamiento desde los eventos thinking\$1delta. A continuación, le explicamos cómo gestionar la transmisión con la característica de pensamiento:

**Solicitud**

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

**Respuesta**

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