Extended thinking은 Claude에게 응답을 제공하기 전에 복잡한 문제를 단계별로 사고할 수 있는 능력을 제공합니다. 활성화되면 Claude는 수학, 코딩, 분석 및 기타 복잡한 작업에 대한 응답 품질을 향상시키는 내부 추론(thinking block)을 생성합니다.
편의 메서드를 사용하여 확장된 사고를 활성화한 상태로 메시지를 보냅니다. temperature는 자동으로 1.0으로 설정됩니다(사고가 활성화된 경우 API에서 요구됨).
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));
완전한 제어를 위해 typed request/response 클래스를 사용하십시오. ThinkingType을 'enabled'로 설정하고 ThinkingBudgetTokens를 원하는 토큰 예산(최소 1024)으로 설정하십시오. 응답에는 thinking 및 text 콘텐츠 블록이 포함됩니다.
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;
다중 턴 대화에서 확장된 사고(extended thinking)를 사용할 때, 이전 응답의 thinking 및 redacted_thinking 블록은 대화에서 다시 전달되어야 합니다. ContentBlocks 배열을 사용하여 이러한 블록을 포함하십시오.
// 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;