Mise en cache du contexte

Dans un workflow d'IA classique, vous pouvez transmettre les mêmes jetons d'entrée à plusieurs reprises à un modèle. La fonctionnalité de mise en cache contextuelle de l'API Gemini vous permet de transmettre une fois du contenu au modèle, de mettre en cache les jetons d'entrée, puis de les consulter pour les requêtes ultérieures. Pour certains volumes, l'utilisation de jetons mis en cache coûte moins cher (et peut présenter une latence plus faible) que la transmission répétée du même corpus de jetons.

Lorsque vous mettez en cache un ensemble de jetons, vous pouvez choisir la durée d'existence du cache avant qu'ils soient automatiquement supprimés. Cette durée de mise en cache est appelée valeur TTL (Time To Live) (TTL). Le coût de la mise en cache dépend de la taille du jeton d'entrée et de sa durée de conservation.

La mise en cache contextuelle est compatible avec Gemini 1.5 Pro et Gemini 1.5 Flash.

Quand utiliser la mise en cache du contexte

La mise en cache contextuelle est particulièrement bien adaptée aux scénarios dans lesquels un contexte initial important est référencé à plusieurs reprises par des requêtes plus courtes. Pensez à utiliser la mise en cache contextuelle pour les cas d'utilisation suivants:

  • Chatbots avec des instructions système détaillées
  • Analyse répétitive de fichiers vidéo de longue durée
  • Requêtes récurrentes sur de grands ensembles de documents
  • Analyse fréquente du dépôt de code ou correction de bugs

Comment la mise en cache réduit les coûts

La mise en cache contextuelle est une fonctionnalité payante conçue pour réduire les coûts opérationnels globaux. La facturation est basée sur les facteurs suivants:

  1. Nombre de jetons de cache:nombre de jetons d'entrée mis en cache, facturés à un tarif réduit lorsqu'ils sont inclus dans les invites suivantes.
  2. Durée de stockage:durée pendant laquelle les jetons mis en cache sont stockés (TTL), facturés en fonction de la durée TTL du nombre de jetons mis en cache. Il n'y a pas de limite minimale ni maximale de la valeur TTL.
  3. Autres facteurs:d'autres frais s'appliquent, comme les jetons d'entrée et de sortie non mis en cache.

Pour en savoir plus sur les tarifs à jour, consultez la page des tarifs de l'API Gemini. Pour savoir comment compter les jetons, consultez le guide relatif aux jetons.

Utiliser la mise en cache du contexte

Dans cette section, nous partons du principe que vous avez installé un SDK Gemini et configuré une clé API, comme indiqué dans le quickstart.

Autres considérations

Tenez compte des considérations suivantes lorsque vous utilisez la mise en cache du contexte:

  • Le nombre minimal de jetons d'entrée pour la mise en cache du contexte est de 32 768. La valeur maximale est identique au nombre maximal pour le modèle donné. (Pour en savoir plus sur le comptage des jetons, consultez le guide relatif aux jetons.)
  • Vous pouvez définir la valeur TTL (Time To Live) de votre cache, comme indiqué dans l'exemple de code. Si cette règle n'est pas configurée, la valeur TTL est définie par défaut sur 1 heure.
  • Le modèle ne fait aucune distinction entre les jetons mis en cache et les jetons d'entrée standards. Le contenu mis en cache est simplement un préfixe de l'invite.
  • Le service de mise en cache fournit une opération de suppression permettant de supprimer manuellement le contenu du cache. Pour en savoir plus, consultez la documentation du SDK de votre choix.
  • Pour le niveau payant, il n'existe pas de taux spécial ou de limite d'utilisation pour la mise en cache du contexte. Les limites de débit standards pour GenerateContent s'appliquent, et les limites de jetons incluent les jetons mis en cache. Pour la version sans frais, la limite de stockage est d'un million de jetons pour Gemini 1.5 Flash, et la mise en cache n'est pas disponible pour Gemini 1.5 Pro.
  • Il n'est pas possible de récupérer ni d'afficher le contenu mis en cache, mais vous pouvez récupérer les métadonnées (name, display_name, model, ainsi que les heures de création, de mise à jour et d'expiration).
  • Il est possible de définir une nouvelle valeur pour ttl ou expire_time. Il n'est pas possible de modifier d'autres éléments concernant le contenu mis en cache.
  • Le nombre de jetons mis en cache est renvoyé dans usage_metadata à partir des opérations de création, d'obtention et de liste du service de cache, ainsi que dans GenerateContent lors de l'utilisation du cache.