Anthropic | Extended Thinking

El pensamiento extendido otorga a Claude la capacidad de razonar paso a paso sobre problemas complejos antes de proporcionar una respuesta. Cuando está habilitado, Claude crea un razonamiento interno (bloques de pensamiento) que mejora la calidad de las respuestas en matemáticas, programación, análisis y otras tareas complejas.

Ejemplo sencillo

Envíe un mensaje con el pensamiento extendido habilitado usando el método de conveniencia. La temperatura se establece automáticamente en 1.0 (requerido por la API cuando el pensamiento está habilitado).


Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
Anthropic.AnthropicOptions.ApiKey := 'API_KEY';
WriteLn(Anthropic._CreateMessageWithThinking('claude-sonnet-4-20250514',
  'How many r''s are in the word strawberry?', 10000));

Ejemplo avanzado

Utilice las clases de solicitud/respuesta tipadas para un control total. Establezca ThinkingType en 'enabled' y ThinkingBudgetTokens con el presupuesto de tokens deseado (mínimo 1024). La respuesta contendrá bloques de contenido de pensamiento y texto.


Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
Anthropic.AnthropicOptions.ApiKey := 'API_KEY';

oRequest := TsgcAnthropicClass_Request_Messages.Create;
Try
  oRequest.Model := 'claude-sonnet-4-20250514';
  oRequest.MaxTokens := 16384;
  oRequest.ThinkingType := 'enabled';
  oRequest.ThinkingBudgetTokens := 10000;

  oMessage := TsgcAnthropicClass_Request_Message.Create;
  oMessage.Role := 'user';
  oMessage.Content := 'Explain the proof that there are infinitely many primes.';
  oMessages := oRequest.Messages;
  SetLength(oMessages, 1);
  oMessages[0] := oMessage;
  oRequest.Messages := oMessages;

  oResponse := Anthropic.CreateMessage(oRequest);
  Try
    for i := 0 to Length(oResponse.Content) - 1 do
    begin
      if oResponse.Content[i].ContentType = 'thinking' then
        WriteLn('Thinking: ' + oResponse.Content[i].Thinking)
      else if oResponse.Content[i].ContentType = 'text' then
        WriteLn('Response: ' + oResponse.Content[i].Text);
    end;
  Finally
    oResponse.Free;
  End;
Finally
  oMessage.Free;
  oRequest.Free;
End;

Múltiples turnos con Thinking

Al usar el pensamiento extendido en conversaciones de varios turnos, los bloques thinking y redacted_thinking de respuestas anteriores deben enviarse de vuelta en la conversación. Use el array ContentBlocks para incluir estos bloques.


// Pass back thinking blocks from a previous response
oBlock := TsgcAnthropicClass_Request_Content_Block.Create;
oBlock.ContentType := 'thinking';
oBlock.Text := oPrevThinkingBlock.Thinking;   // thinking text
oBlock.Signature := oPrevThinkingBlock.Signature; // signature string

// Pass back redacted thinking blocks
oBlock := TsgcAnthropicClass_Request_Content_Block.Create;
oBlock.ContentType := 'redacted_thinking';
oBlock.Data := oPrevRedactedBlock.Data;

Propiedades

Notas