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.
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));
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;
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;