Uitgebreid denken geeft Claude de mogelijkheid om complexe problemen stap voor stap door te denken voordat een antwoord wordt gegeven. Wanneer ingeschakeld, maakt Claude interne redenering (denkblokken) die de kwaliteit van antwoorden verbetert voor wiskunde, codering, analyse en andere complexe taken.
Verzend een bericht met extended thinking ingeschakeld via de convenience-methode. De temperature wordt automatisch ingesteld op 1.0 (vereist door de API wanneer thinking is ingeschakeld).
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));
Gebruik de getypeerde verzoek-/antwoordklassen voor volledige controle. Stel ThinkingType in op 'enabled' en ThinkingBudgetTokens op het gewenste tokenbudget (minimum 1024). Het antwoord bevat thinking en text-inhoudsblokken.
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;
Bij het gebruik van uitgebreid denken in gesprekken met meerdere beurten, moeten denk- en redacted_thinking-blokken uit eerdere antwoorden worden teruggegeven in het gesprek. Gebruik de ContentBlocks-array om deze blokken op te nemen.
// 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;