Anthropic | Mise en cache des invites

La mise en cache des invites vous permet de mettre en cache le contexte fréquemment utilisé entre les appels API, réduisant les coûts jusqu'à 90 % sur les lectures de cache et améliorant la latence. Le contenu mis en cache est marqué avec un paramètre cache_control et est réutilisé entre les requêtes dans la fenêtre TTL du cache.

Mise en cache des invites système

Mettez en cache un long prompt système pour éviter de le retraiter à chaque requête. Définissez SystemCacheControl sur True pour envelopper automatiquement le prompt système avec 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;

Mise en cache de blocs de contenu

Mettez en cache des blocs de contenu spécifiques (ex. grands documents ou contexte) en définissant CacheControl à 'ephemeral' sur des blocs de contenu individuels.


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

Mise en cache de la définition des outils

Mettre en cache les définitions d'outils pour éviter de les retraiter à chaque requête. C'est utile lorsque vous avez de nombreuses définitions d'outils qui restent constantes entre les requêtes.


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

Propriétés

Tarification