Il caching dei prompt consente di memorizzare nella cache il contesto utilizzato frequentemente tra le chiamate API, riducendo i costi fino al 90% sulle letture dalla cache e migliorando la latenza. Il contenuto memorizzato nella cache è contrassegnato con un parametro cache_control e viene riutilizzato tra le richieste all'interno della finestra TTL della cache.
Memorizzare nella cache un lungo prompt di sistema per evitare di rielaborarlo ad ogni richiesta. Impostare SystemCacheControl su True per includere automaticamente il prompt di sistema in 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;
Memorizzare nella cache blocchi di contenuto specifici (ad es. documenti di grandi dimensioni o contesto) impostando CacheControl su 'ephemeral' su singoli blocchi di contenuto.
oBlock := TsgcAnthropicClass_Request_Content_Block.Create;
oBlock.ContentType := 'text';
oBlock.Text := '(large reference text to cache)';
oBlock.CacheControl := 'ephemeral'; // Mark for caching
Memorizza nella cache le definizioni degli strumenti per evitare di rielaborarle a ogni richiesta. Questo è utile quando ha molte definizioni di strumenti che rimangono costanti tra le richieste.
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