Pensando en el cifrado - Amazon Bedrock

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.

Pensando en el cifrado

El contenido de Full Thinking se cifra y se devuelve en el campo de firma. Este campo se usa para verificar que los bloques de pensamiento se generaron Claude cuando se devolvieron a la API. Al transmitir las respuestas, la firma se añade signature_delta dentro de un content_block_delta evento justo antes del content_block_stop evento.

nota

Solo es estrictamente necesario devolver los bloques de reflexión cuando se utilizan herramientas de pensamiento extendido. De lo contrario, puedes omitir los bloques de pensamiento de los turnos anteriores o dejar que la API los elimine por ti si los devuelves.

Si devuelves bloques de reflexión, te recomendamos que devuelvas todo tal y como lo recibiste para mantener la coherencia y evitar posibles problemas.

Pensando en la redacción de Sonnet Claude 3.7

nota

La siguiente información se aplica específicamente a. Claude 3.7 Sonnet Claude4 modelos manejan el pensamiento de manera diferente y no producen bloques de pensamiento redactados.

EnClaude 3.7 Sonnet, se aplica lo siguiente:

  • OcasionalmenteClaude, nuestros sistemas de seguridad señalarán el razonamiento interno. Cuando esto ocurre, ciframos una parte o la totalidad del bloque pensante y te lo devolvemos como bloque redacted_thinking. Los bloques redacted_thinking se descifran cuando se devuelven a la API, lo que permite continuar su respuesta sin perder contexto. Claude

  • thinkingy los redacted_thinking bloques se devuelven antes que los bloques de texto de la respuesta.

Al crear aplicaciones orientadas al cliente en las que se utilice un enfoque ampliadoClaude 3.7 Sonnet, tenga en cuenta lo siguiente:

  • Ten en cuenta que los bloques de pensamiento redactados contienen contenido cifrado que no es legible para las personas.

  • Considera la posibilidad de dar una explicación sencilla, como la siguiente: «Algunos Claude de nuestros razonamientos internos se han cifrado automáticamente por motivos de seguridad. Esto no afecta a la calidad de las respuestas».

  • Si muestras bloques de pensamiento a los usuarios, puedes filtrar los bloques redactados y, al mismo tiempo, conservar los bloques de pensamiento normales.

  • Sé transparente, ya que el uso de funciones de pensamiento extendidas puede provocar en ocasiones que se cifre algún razonamiento.

  • Implementa una gestión de errores adecuada para gestionar con elegancia el pensamiento redactado sin interrumpir tu interfaz de usuario.

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 bloques de pensamiento redactados en tu producción 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 seguridad.

Si necesitas probar el manejo del pensamiento redactado en tu aplicación, puedes usar esta cadena de prueba especial como mensaje: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB

Cuando pases thinking y redacted_thinking bloquees a la API en una conversación de varios turnos, debes incluir el bloque completo y no modificado que se devuelva a la API para el último turno de asistente. Esto es fundamental para mantener el flujo de razonamiento del modelo. Sugerimos transferir siempre todos los bloques de reflexión a la API. Para obtener más información, consulte Pensamiento ampliado con el uso de herramientas.

En el siguiente ejemplo, se utiliza la InvokeModelWithResponseStreamAPI para demostrar la estructura de solicitudes y respuestas cuando se utilizan fichas de pensamiento con redacciones.

Cuando la transmisión esté habilitada, recibirás contenido interesante de los eventos de thinking_delta. A continuación, te explicamos cómo gestionar la transmisión con 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"}