Anthropic | Rozszerzone myślenie

Rozszerzone myślenie umożliwia modelowi Claude analizowanie złożonych problemów krok po kroku przed udzieleniem odpowiedzi. Po włączeniu Claude tworzy wewnętrzne rozumowanie (bloki myślenia), które poprawia jakość odpowiedzi dotyczących matematyki, programowania, analizy i innych złożonych zadań.

Prosty przykład

Wyślij wiadomość z włączonym rozszerzonym myśleniem przy użyciu metody wygodnej. Temperatura jest automatycznie ustawiana na 1,0 (wymagane przez API, gdy włączone jest myślenie).


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

Zaawansowany przykład

Użyj typowanych klas żądań i odpowiedzi, aby uzyskać pełną kontrolę. Ustaw ThinkingType na „enabled", a ThinkingBudgetTokens na żądany budżet tokenów (minimum 1024). Odpowiedź będzie zawierać bloki treści myślenia i tekstu.


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;

Wieloetapowy dialog z myśleniem

Podczas używania rozszerzonego myślenia w konwersacjach wieloturowych bloki thinking i redacted_thinking z poprzednich odpowiedzi muszą być przekazywane z powrotem w konwersacji. Należy użyć tablicy ContentBlocks, aby uwzględnić te bloki.


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

Właściwości

Uwagi