Anthropic | Extended Thinking

Extended Thinking gibt Claude die Fähigkeit, komplexe Probleme Schritt für Schritt zu durchdenken, bevor eine Antwort gegeben wird. Wenn aktiviert, erstellt Claude internes Reasoning (Thinking-Blöcke), das die Qualität der Antworten für Mathematik, Codierung, Analyse und andere komplexe Aufgaben verbessert.

Einfaches Beispiel

Sendet eine Nachricht mit aktiviertem erweitertem Thinking unter Verwendung der Komfortmethode. Die Temperatur wird automatisch auf 1.0 gesetzt (von der API erforderlich, wenn Thinking aktiviert ist).


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

Erweitertes Beispiel

Verwenden Sie die typisierten Request-/Response-Klassen für volle Kontrolle. Setzen Sie ThinkingType auf 'enabled' und ThinkingBudgetTokens auf das gewünschte Token-Budget (Minimum 1024). Die Antwort enthält thinking- und text-Inhaltsblöcke.


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 mit Thinking

Bei der Verwendung von Extended Thinking in Multi-Turn-Konversationen müssen thinking- und redacted_thinking-Blöcke aus vorherigen Antworten in der Konversation zurückgegeben werden. Verwenden Sie das ContentBlocks-Array, um diese Blöcke einzuschließen.


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

Properties

Hinweise