Anthropic | Extended Thinking

La réflexion étendue donne à Claude la capacité de réfléchir étape par étape à des problèmes complexes avant de fournir une réponse. Lorsqu'elle est activée, Claude crée un raisonnement interne (blocs de réflexion) qui améliore la qualité des réponses pour les mathématiques, la programmation, l'analyse et d'autres tâches complexes.

Exemple simple

Envoyez un message avec la réflexion étendue activée à l'aide de la méthode pratique. La température est automatiquement définie sur 1.0 (requis par l'API lorsque la réflexion est activée).


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

Exemple avancé

Utilisez les classes de requête/réponse typées pour un contrôle total. Définissez ThinkingType sur 'enabled' et ThinkingBudgetTokens sur le budget de tokens souhaité (minimum 1024). La réponse contiendra des blocs de contenu de réflexion et de texte.


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-tour avec réflexion

Lors de l'utilisation de la pensée étendue dans des conversations multi-tours, les blocs de pensée et de pensée_rédigée des réponses précédentes doivent être transmis dans la conversation. Utilisez le tableau ContentBlocks pour inclure ces blocs.


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

Propriétés

Remarques