Anthropic | Prompt Caching

Met promptcaching kunt u veelvuldig gebruikte context cachen tussen API-aanroepen, waardoor kosten tot 90% worden verlaagd bij cache-lezingen en de latentie wordt verbeterd. Gecachte inhoud wordt gemarkeerd met een cache_control-parameter en hergebruikt bij aanvragen binnen het cache-TTL-venster.

Systeemprompt-caching

Sla een lange systeemprompt op in de cache om te voorkomen dat deze bij elk verzoek opnieuw wordt verwerkt. Stel SystemCacheControl in op True om de systeemprompt automatisch te omhullen met cache_control.


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;

Inhoudsblokcaching

Cache specifieke inhoudsblokken (bijv. grote documenten of context) door CacheControl in te stellen op 'ephemeral' op individuele inhoudsblokken.


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

Tooldefinitie-caching

Cache gereedschapsdefinities om te voorkomen dat ze bij elk verzoek opnieuw worden verwerkt. Dit is handig wanneer u veel gereedschapsdefinities heeft die constant blijven over verzoeken heen.


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

Eigenschappen

Prijsstelling