Anthropic | Extended Thinking

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.

Simple Example

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

Advanced Example

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;

Multi-turn met denken

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;

Eigenschappen

Opmerkingen