기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사고 암호화
전체 사고 콘텐츠는 암호화되어 서명 필드에 반환됩니다. 이 필드는 API로 다시 전달될 Claude 때에서 사고 블록이 생성되었는지 확인하는 데 사용됩니다. 응답을 스트리밍할 때 서명은 content_block_delta
이벤트 직전에 content_block_stop
이벤트 signature_delta
내부의를 통해 추가됩니다.
참고
확장된 사고와 함께 도구를 사용할 때는 반드시 사고 블록을 다시 보내야 합니다. 그렇지 않으면 이전 턴의 사고 블록을 생략하거나 API가 다시 전달하는 경우 이를 제거하도록 할 수 있습니다.
사고 블록을 다시 보내는 경우 일관성을 유지하고 잠재적 문제를 방지하기 위해 모든 것을 받은 대로 다시 전달하는 것이 좋습니다.
Claude 3.7 Sonnet에서 수정 생각
참고
다음 정보는 특히에 적용됩니다Claude 3.7 Sonnet. Claude 4 모델은 사고를 다르게 처리하고 수정된 사고 블록을 생성하지 않습니다.
에서는 Claude 3.7 Sonnet다음이 적용됩니다.
-
경우에 따라 안전 시스템에서 Claude의 내부 추론에 플래그가 지정됩니다. 이 경우 사고 블록의 일부 또는 전부를 암호화하여 수정_사고 블록으로 반환합니다. 수정_사고 블록은 API로 다시 전달될 때 해독되므로 컨텍스트 손실 없이 응답을 계속할 Claude 수 있습니다.
-
thinking
및redacted_thinking
블록은 응답의 텍스트 블록 앞에 반환됩니다.
에서 확장 사고를 사용하는 고객 대면 애플리케이션을 구축할 때는 다음 사항을 Claude 3.7 Sonnet고려하세요.
-
수정된 사고 블록에는 사람이 읽을 수 없는 암호화된 콘텐츠가 포함되어 있습니다.
-
다음과 같은 간단한 설명을 제공하는 것이 좋습니다. “Claude의 내부 추론 중 일부는 안전상의 이유로 자동으로 암호화되었습니다. 이는 응답 품질에 영향을 주지 않습니다.”
-
사용자에게 사고 블록을 표시하는 경우 정상적인 사고 블록을 유지하면서 수정된 블록을 필터링할 수 있습니다.
-
확장된 사고 기능을 사용하면 때때로 일부 추론이 암호화될 수 있으므로 투명해야 합니다.
-
적절한 오류 처리를 구현하여 UI를 손상시키지 않고 수정된 사고를 정상적으로 관리합니다.
다음은 정상 및 수정된 사고 블록을 모두 보여주는 예입니다.
{ "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..." } ] }
작은 정보
출력에서 수정된 사고 블록을 보는 것은 예상되는 동작입니다. 모델은이 수정된 추론을 사용하여 안전 가드레일을 유지하면서 응답을 알릴 수 있습니다.
애플리케이션에서 수정된 사고 처리를 테스트해야 하는 경우이 특수 테스트 문자열을 프롬프트로 사용할 수 있습니다. ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB
멀티턴 대화에서 API에 thinking
및 redacted_thinking
블록을 다시 전달할 때는 수정되지 않은 전체 블록을 마지막 어시스턴트 턴을 위해 API에 다시 포함해야 합니다. 이는 모델의 추론 흐름을 유지하는 데 매우 중요합니다. 항상 모든 사고 블록을 API로 전달하는 것이 좋습니다. 자세한 내용은 도구 사용을 통한 확장된 사고 단원을 참조하십시오.
다음 예제에서는 InvokeModelWithResponseStream API를 사용하여 수정과 함께 사고 토큰을 사용할 때 요청 및 응답 구조를 보여줍니다.
스트리밍이 활성화되면 thinking_delta 이벤트로부터 사고 콘텐츠를 받게 됩니다. 다음은 생각으로 스트리밍을 처리하는 방법입니다.
요청
{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 24000, "thinking": { "type": "enabled", "budget_tokens": 16000 }, "messages": [ { "role": "user", "content": "What is 27 * 453?" } ] }
응답
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"}