Anthropic | Buforowanie podpowiedzi

Buforowanie promptów umożliwia zapisywanie często używanego kontekstu między wywołaniami API, redukując koszty nawet o 90% przy odczycie z pamięci podręcznej i poprawiając opóźnienia. Buforowana zawartość jest oznaczana parametrem cache_control i jest ponownie wykorzystywana w kolejnych żądaniach w oknie TTL pamięci podręcznej.

Buforowanie systemowego monitu

Buforuj długi systemowy monit, aby uniknąć jego ponownego przetwarzania przy każdym żądaniu. Ustawić SystemCacheControl na True, aby automatycznie owijać systemowy monit kontrolą pamięci podręcznej.


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 := 4096;
  oRequest.System := 'You are an expert legal assistant... (long system prompt)';
  oRequest.SystemCacheControl := True;  // Enable caching for system prompt

  oMessage := TsgcAnthropicClass_Request_Message.Create;
  oMessage.Role := 'user';
  oMessage.Content := 'Analyze this contract clause.';
  oMessages := oRequest.Messages;
  SetLength(oMessages, 1);
  oMessages[0] := oMessage;
  oRequest.Messages := oMessages;

  oResponse := Anthropic.CreateMessage(oRequest);
  Try
    // Check cache usage in response
    WriteLn('Cache created: ' +
      IntToStr(oResponse.Usage.CacheCreationInputTokens));
    WriteLn('Cache read: ' +
      IntToStr(oResponse.Usage.CacheReadInputTokens));
    WriteLn(oResponse.Content[0].Text);
  Finally
    oResponse.Free;
  End;
Finally
  oMessage.Free;
  oRequest.Free;
End;

Buforowanie bloków zawartości

Buforuje określone bloki treści (np. duże dokumenty lub kontekst) przez ustawienie CacheControl na 'ephemeral' dla poszczególnych bloków treści.


oBlock := TsgcAnthropicClass_Request_Content_Block.Create;
oBlock.ContentType := 'text';
oBlock.Text := '(large reference text to cache)';
oBlock.CacheControl := 'ephemeral';  // Mark for caching

Buforowanie definicji narzędzi

Definicje narzędzi należy buforować, aby uniknąć ich ponownego przetwarzania przy każdym żądaniu. Jest to przydatne, gdy istnieje wiele definicji narzędzi, które pozostają stałe w kolejnych żądaniach.


oTool := TsgcAnthropicClass_Request_Tool.Create;
oTool.Name := 'search_database';
oTool.Description := 'Search the database for records.';
oTool.InputSchema := '{"type":"object","properties":{"query":{"type":"string"}}}';
oTool.CacheControl := 'ephemeral';  // Cache this tool definition

Właściwości

Cennik