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